Перейти к содержимому
Compvision.ru
OmgZomg

Реальные размеры на изображении

Recommended Posts

Нужно измерить на сколько изображения перекрывают друг друга

Имеется 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

Теперь мне надо найти реальные размеры изображения. Не пиксельные, а в метрах.

Как это сделать?

Изображения представляют собой аэрофотоснимки с дрона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так угол зрения камеры знаете, высоту съемки тоже, треугольник вам в помощь )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можно же через 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м

Ну не красотенюшка ли?)

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поздравляю ! 

Да, я не знал как это называется )

Но все равно сводится к треугольнику  )) 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как теперь с этим всем хозяйством получить, насколько изображения перекрывают друг друга?

У меня есть список дистанций между изображениями

Часть списка для примера:

{'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}

И есть реальные размеры на каждом изображении.

Понимаю, что нужно порог задать и всё такое. Но как воплотить в код, не пойму:huh:

Вообще задача сводится к построению мозайки изображений

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

d=w-(xc2-xc1) 

d - перекрытие

w - ширина

xc1 , xc2 - координаты центров

\\\\\\\\\\\о////////// \\\\\\\\\\o///////////  -- без перекрытия

\\\\\\\\\\\о//////XXXX\\\\\\o///////////  - с перекрытием

  • Thanks 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×