Jump to content
Compvision.ru
Sign in to follow this  
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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Поздравляю ! 

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

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

  • Like 1

Share this post


Link to post
Share on other sites

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

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

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

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

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

Share this post


Link to post
Share on other sites

d=w-(xc2-xc1) 

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

w - ширина

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

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

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

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×