fotomer

Textured mesh перевести в geoTiff

11 сообщений в этой теме

Есть текстурированная сетка, как на картинке, координаты сетки отмасштабированны и привязаны в соответcтвии с GPS, т.е. openMVG извлекает GPS координаты из картинок, расчитывает масштаб, поворот, перенос для сетки и умножает все координаты на эти величины. Нужно из этой сетки сделать geoTiff, но как это сделать совершенно не понятно, поиск ничего особо не дает. OpenDroneMap делает перевод через какие-то свои хитрые форматы и использовать их затруднительно. Может у кого есть идеи как сделать geoTiff?

 

[img94068a88216c.jpg[/img]

1 пользователь нравится это

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


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

gdal, вроде, для этого есть.

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


Ссылка на сообщение
Поделиться на других сайтах
55 минут назад, Nuzhny сказал:

gdal, вроде, для этого есть.

gdal вроде только для работы с растрами, к примеру OpenDroneMap сам генерит картинку и только потом в gdal подсовывает для создания geoTiff.

 

P.S. Вот еще картинка, над одной базой полетали

01fe1bfe4f84.jpg

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


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

А к GPS как привязано? каждый узел сетки? или общий bbox?

Меня тоже интересует этот вопрос, по идее достаточно только gps bbox + высоты точки (altitude) чтобы получить pixel to gps.

 

gdal не работает с point cloud или mesh, для привязки растра к GPS координатам можно использовать Affine GeoTransform

http://www.gdal.org/gdal_datamodel.html

В итоге orthomap выглядит как то так:

https://habrastorage.org/web/629/0e3/521/6290e352148b43f384513357847c26db.tif

Фотки отсюда, можно на этом поэксперементировать.

https://github.com/OpenDroneMap/odm_data_bellus

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


Ссылка на сообщение
Поделиться на других сайтах
21 минуту назад, mrgloom сказал:

А к GPS как привязано? каждый узел сетки? или общий bbox?

Меня тоже интересует этот вопрос, по идее достаточно только gps bbox + высоты точки (altitude) чтобы получить pixel to gps.

В итоге orthomap выглядит как то так:

https://habrastorage.org/web/629/0e3/521/6290e352148b43f384513357847c26db.tif

В OpenMvg есть проект openMVG_main_geodesy_registration_to_gps_position, она может все точки пересчитывать или, сейчас посмотрел код, ищет bound. А что потом с этой границей делать, в Affine GeoTransform подставлять?

Я пересчитывал все точки, единственно потом OpenMvs не корректно работает с пересчитанными точками, т.е. изначально координаты около единицы и сетка получается хорошей, после gps пересчета координаты становятся по x,y,z около 5 млн, и сетка получается щербатой. Еще если будешь в OpenMvs считать сетку, ставь параметр min-point-distance вместо дефолтных 2 -> 10. Сетки практически не отличается, а время расчета в 5 раз меньше.

Скачал tif по ссылке, открыл програмкой PhotoMe, которая все теги смотрит, что-то инфы о GPS не видно, или вместе с geoTiff еще файлики с привязкой лежат?



 

 

 

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


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

Не помню точно, геореференсед ли этот tiff, но судя по проекции (которая кстати выглядит не как вид сверху ), не знаю как она называется Geographic ?

может Model Tie Point это то?

exiftool raw output:

ExifTool Version Number         : 10.59
File Name                       : ortho.tif
Directory                       : .
File Size                       : 32 MB
File Modification Date/Time     : 2016:07:31 20:27:32+03:00
File Access Date/Time           : 2016:07:31 20:27:30+03:00
File Creation Date/Time         : 2016:07:31 20:27:10+03:00
File Permissions                : rw-rw-rw-
File Type                       : TIFF
File Type Extension             : tif
MIME Type                       : image/tiff
Exif Byte Order                 : Little-endian (Intel, II)
Image Width                     : 3694
Image Height                    : 4096
Bits Per Sample                 : 8 8 8 8
Compression                     : LZW
Photometric Interpretation      : RGB
Strip Offsets                   : (Binary data 1085 bytes, use -b option to extract)
Orientation                     : Horizontal (normal)
Samples Per Pixel               : 4
Rows Per Strip                  : 32
Strip Byte Counts               : (Binary data 875 bytes, use -b option to extract)
Planar Configuration            : Chunky
Extra Samples                   : Unassociated Alpha
Sample Format                   : Unsigned; Unsigned; Unsigned; Unsigned
Pixel Scale                     : 1.86495400739727e-006 1.4079864172345e-006 0
Model Tie Point                 : 0 0 0 -81.7080861843233 41.2293646671544 0
Geo Tiff Version                : 1.1.0
GT Model Type                   : Geographic
GT Raster Type                  : Pixel Is Area
Geographic Type                 : WGS 84
Geog Citation                   : WGS 84
Image Size                      : 3694x4096
Megapixels                      : 15.1

 

Думаю более точно можно посмотреть через gdalinfo, там должна быть информация Corner Coordinates и Origin

http://www.gdal.org/gdalinfo.html

 

Да, что то не то, возможно я когда то ресайзил его и тэги дропнулись.

gdalinfo ortho.tif
Driver: GTiff/GeoTIFF
Files: ortho.tif
Size is 689, 576
Coordinate System is `'
Metadata:
  TIFFTAG_DOCUMENTNAME=/tmp/ortho.tif
  TIFFTAG_SOFTWARE=GraphicsMagick 1.3.18 2013-03-10 Q8 http://www.GraphicsMagick.org/
Image Structure Metadata:
  COMPRESSION=LZW
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,  576.0)
Upper Right (  689.0,    0.0)
Lower Right (  689.0,  576.0)
Center      (  344.5,  288.0)
Band 1 Block=689x2 Type=Byte, ColorInterp=Red
  Mask Flags: PER_DATASET ALPHA
Band 2 Block=689x2 Type=Byte, ColorInterp=Green
  Mask Flags: PER_DATASET ALPHA
Band 3 Block=689x2 Type=Byte, ColorInterp=Blue
  Mask Flags: PER_DATASET ALPHA
Band 4 Block=689x2 Type=Byte, ColorInterp=Alpha

 

Меня кстати больше интересует генерация geotiff из point cloud. И еще раз geotiff != orthomap?

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


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, mrgloom сказал:

 

Меня кстати больше интересует генерация geotiff из point cloud. И еще раз geotiff != orthomap?

 

Да вот сам бы хотел узнать, текстурированная сетка хорошая получается, а с geoTiff как в стену уперся. Вот есть кое что https://gis.stackexchange.com/questions/121903/how-to-create-a-raster-tiff-dem-heightmap-from-a-mesh-of-xyz-points

Сейчас в OpenMVS в проекте TextureMesh увидел флаг "orthographic-image", вроде оно. Но проблема, как писал выше, что OpenMVS не хочет принимать для расчета из OpenMvg гео-привязанные точки, вернее принимает, но сетку строит совсем плохую. Вот для примера сетка с пересчитанными координатами в gps, видимо OpenMVS  эти миллионые xyz не нравятся. Можно конечно пересчитывать в gps уже готовую текстурированную сетку, но там уже надо разбираться как текстуры к этому отнесутся.

ply
format ascii 1.0
element vertex 18468
property double x
property double y
property double z
property uchar red
property uchar green
property uchar blue
end_header
2868760.9609218323603272 2166603.1702711693942547 5250982.6711078854277730 102 92 57
2868748.8379191830754280 2166593.4763295799493790 5250993.8941893931478262 113 93 60
2868680.0388088696636260 2166557.1158213810995221 5251048.8029191521927714 76 74 35
2868724.3026116066612303 2166636.2629922572523355 5250991.0214411308988929 136 123 81
2868657.8424244783818722 2166570.4558626487851143 5251056.5254463842138648 82 89 47
2868691.3514573448337615 2166634.9753469135612249 5251011.7093280144035816 184 155 123

 

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


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

Можете описать весь pipeline что вы делаете? а то я OpenMVG/OpenMVS не пользовался.

 

Большие числа это похоже на ECEF, а не GPS.

 

По идее всё же можно сначала решить задачу генерации ортофотоплана (вид сверху), а потом через gdal варпнуть и загеореференсить (но надо еще как то получить матрицу афинного преобразование gps to pixel).

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


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, mrgloom сказал:

Можете описать весь pipeline что вы делаете? а то я OpenMVG/OpenMVS не пользовался.

OpenMVG генерит только разреженное облако точек и все. Также может импортировать это облако точек в разные форматы, в т.ч. и для OpenMVS .

OpenMVS  уже делает облако точек более плотным, делает по нему сетку и накладывает текстуру. При накладывании текстуры есть флажок сделать ортофото, но картинку странную выдает, вроде и вид сверху, но очень разреженный. Это вид производственно базы сверху, но только почему-то контуры зданий, попробовал поиграться настройками положения камеры, не помогло.

d9cf49a62de0.png

 

3 часа назад, mrgloom сказал:

Большие числа это похоже на ECEF, а не GPS.

Точно, ECEF. http://openmvg.readthedocs.io/en/latest/software/Geodesy/geodesy/

Но ECEF по идее можно в любую координату пересчитать.

 

3 часа назад, mrgloom сказал:

 

По идее всё же можно сначала решить задачу генерации ортофотоплана (вид сверху), а потом через gdal варпнуть и загеореференсить (но надо еще как то получить матрицу афинного преобразование gps to pixel).

 

GDAL может сразу сетку всасывать https://gis.stackexchange.com/questions/121903/how-to-create-a-raster-tiff-dem-heightmap-from-a-mesh-of-xyz-points

правда не ясно всосет ли GDAL текстуру.

Или второй путь пытаться привязать ортофото, но тоже много непонятного. Надо держать друг друга в курсе у кого что получится ибо инфы очень мало по этой теме.

Еще такая книжка есть Westra E. - Python Geospatial Development, Third Edition 2016.

 

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


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

Итак небольшой апдейт

OpenMVS может сделать orthophoto и у вас не получается потому что не правильно выставлена нормаль, но как её найти это вопрос, возможно можно попробовать нормаль к геоиду? или нормаль к 'поверхности земли'. В целом же проект OpenMVS вроде как не про это.

https://github.com/cdcseacave/openMVS/issues/232

OpenMVG - возможно скоро появится такая функциональность.

https://github.com/openMVG/openMVG/issues/914

https://github.com/openMVG/openMVG/issues/978

Есть еще такое - идея нашлепать изображения в мозаику используя матрицу гомографии, не знаю насколько это только получится orthophoto.

https://github.com/openMVG/openMVG/issues/447

OpenDroneMap - судя по описанию как раз всё что нужно умеет, но я не пробовал, хочу попробовать под VM или docker. Использует внутри другой SFM 'движок' не OpenMVG.

https://github.com/OpenDroneMap/OpenDroneMap

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


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, mrgloom сказал:

Итак небольшой апдейт

OpenMVS может сделать orthophoto и у вас не получается потому что не правильно выставлена нормаль, но как её найти это вопрос, возможно можно попробовать нормаль к геоиду? или нормаль к 'поверхности земли'. В целом же проект OpenMVS вроде как не про это. https://github.com/cdcseacave/openMVS/issues/232

 

OpenMVG по GPS координатам может рассчитать масштаб, вращение и перенос точек для перевода в коорд. ECEF. Но координату ECEF типа 2868760.9609218323603272 нельзя передать в OpenMVS т.к. там используется тип float(всего 8 digits), а переделать на double там не вдруг. Для эксперимента я попробовал пересчитать сетку только с масштабом и вращением, без переноса т.к. перенос дает эти значащие 2868760. Но нормаль получается чуть наклоненной к плоскости и orthophoto получается как бы чуть сбоку, а не ровно сверху. По идее можно уже конечную сетку с текстурой пересчитать, но сохранится ли при этом наложение текстуры не известно. nOrthoMapResolution это размер в пикселях ортофото картинки.

По идее нормаль можно посчитать самим, с учетом высоты снимков получить осредненную плоскость. Но если сделать нормальный ортофото, то я до конца так и не понимаю как из него geoTiff сделать. Не в курсе, в geoTiff пиксели по высоте привязаны?

 

2 часа назад, mrgloom сказал:

OpenMVG - возможно скоро появится такая функциональность.

https://github.com/openMVG/openMVG/issues/914

Хм, а как они будут делать оротофото если у них только разреженное облако?

 

2 часа назад, mrgloom сказал:

OpenDroneMap - судя по описанию как раз всё что нужно умеет, но я не пробовал, хочу попробовать под VM или docker. Использует внутри другой SFM 'движок' не OpenMVG.

https://github.com/OpenDroneMap/OpenDroneMap

OpenDroneMap говорят сетку плохую делает и движек OpenSFM вроде похуже, иногда не собирает модели, OpenMVG типа стабильнее. DroneMap каша из Питоновских скриптов и exe, не удобно в отладке.

Еще OpenMVS по идее надо переписать в один exe т.к. при сохранении к примеру 50млн точек и последующей загрузке в другом exe тратится масса времени.

 

З.Ы. Производственная база на ортофото, видно что чуть сбоку.

3d896035ca4b.jpg

 

 

 

 

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


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

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

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

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

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


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

Войти

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


Войти сейчас

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

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