OmgZomg 2 Жалоба Опубликовано December 8, 2020 Нужно измерить на сколько изображения перекрывают друг друга Имеется lat,lon для каждого изображения Вычисляю разницу в метрах для каждого изображения from math import sin, cos, sqrt, atan2, radians R = 6373.0 #для первых двух изображений lat1 = radians(123.114661) lon1 = radians(38.426805) lat2 = radians(123.114650) lon2 = radians(38.426831) dlon = lon2 - lon1 dlat = lat2 - lat1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2 * atan2(sqrt(a), sqrt(1 - a)) distance = R * c distance_in_meters=distance * 1000 >>> distance_in_meters 1.9983018138089903 Теперь мне надо найти реальные размеры изображения. Не пиксельные, а в метрах. Как это сделать? Изображения представляют собой аэрофотоснимки с дрона. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 8, 2020 Ну так угол зрения камеры знаете, высоту съемки тоже, треугольник вам в помощь ) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
OmgZomg 2 Жалоба Опубликовано December 9, 2020 Можно же через GSD,не? Image Width: 4000px Image Height: 3000px Sensor Width: 13.2mm Sensor Height: 4.55 mm Focal Length: 3.57 mm Высота полета 91.088004м Далее по формуле (https://www.propelleraero.com/blog/ground-sample-distance-gsd-calculate-drone-data/) расчитываем GSD и получаем cm/px. В моем случае для одного из изображений -3.94 cm/px Далее 4000*3.94 и 3000*3.94 В итоге ширина/высота = 157,6м/118,2м Ну не красотенюшка ли?) 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 9, 2020 Поздравляю ! Да, я не знал как это называется ) Но все равно сводится к треугольнику )) 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
OmgZomg 2 Жалоба Опубликовано December 9, 2020 Как теперь с этим всем хозяйством получить, насколько изображения перекрывают друг друга? У меня есть список дистанций между изображениями Часть списка для примера: {'filename1': 'dji_0666.jpg', 'filename2': 'dji_0667.jpg', 'distance': 1.4510858010828085} {'filename1': 'dji_0663.jpg', 'filename2': 'dji_0664.jpg', 'distance': 1.4625754772170405} {'filename1': 'dji_0652.jpg', 'filename2': 'dji_0653.jpg', 'distance': 1.7807144386327662} {'filename1': 'dji_0659.jpg', 'filename2': 'dji_0660.jpg', 'distance': 1.8890964513768231} {'filename1': 'dji_0644.jpg', 'filename2': 'dji_0645.jpg', 'distance': 1.9983018138089903} {'filename1': 'dji_0655.jpg', 'filename2': 'dji_0656.jpg', 'distance': 2.1954923719218247} {'filename1': 'dji_0647.jpg', 'filename2': 'dji_0648.jpg', 'distance': 2.3366167661177} И есть реальные размеры на каждом изображении. Понимаю, что нужно порог задать и всё такое. Но как воплотить в код, не пойму Вообще задача сводится к построению мозайки изображений Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано December 10, 2020 d=w-(xc2-xc1) d - перекрытие w - ширина xc1 , xc2 - координаты центров \\\\\\\\\\\о////////// \\\\\\\\\\o/////////// -- без перекрытия \\\\\\\\\\\о//////XXXX\\\\\\o/////////// - с перекрытием 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах