Страница 1 из 1

Ортокоррекция космических снимков с использованием RPC

Добавлено: 27 фев 2012, 12:00
updates-bot
Обсуждение статьи "Ортокоррекция космических снимков с использованием RPC"

http://gis-lab.info/qa/ortho-rpc.html

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 12 июл 2012, 11:23
lexamam
Вопрос к автору статьи. Уважаемый, Bishop! Внимательно прочитал все Ваши материалы по поводу ортокоррекции на данном сайте. Сейчас сам занимаюсь этой проблемой. Столкнулся со следующими трудностями. В статье достаточно подробно описан процесс перехода от геодезических координат (широта, долгота, высота) к нормализованным X, Y. Но как выполнять обратное преобразование? Как привязать изображение? В проекте wxGis (да и в других системах) реализована ортокоррекция,во время которой выполняется интерполяция (билинейная или кубическая). Как она используется при ортокоррекции и для чего нужна? В статье об этом не сказано. Очень надеюсь на Ваш ответ. Заранее благодарен.

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 12 июл 2012, 15:16
Дмитрий Барышников
lexamam писал(а):В статье достаточно подробно описан процесс перехода от геодезических координат (широта, долгота, высота) к нормализованным X, Y. Но как выполнять обратное преобразование?
Если почитать источник №8
The RPC model allows a row/column location to be computed for a given lat, long and height value. It is not inherently invertable, though it is usually possible to compute at lat,long location from a row, column and height value using iterative methods.
Что в вольном переводе гласит: преобразование не инверсное и получить из координат пиксела географические можно итерационными методами. В принципе можно посмотреть в коде GDAL (файл: gdal_rpc.cpp) как они это делают. Т.к. перед ортокоррекцией осуществляется вычисление нового охвата изображения. Но по мне так проще использовать готовый функционал библиотеки GDAL. В том же файле есть метод RPCInverseTransformPoint. Да и через warp-инг можно гонять в обоих направлениях row/column <--> lat, long.
lexamam писал(а): Как привязать изображение?
Не понял, к чему вопрос?
lexamam писал(а): В проекте wxGis (да и в других системах) реализована ортокоррекция,во время которой выполняется интерполяция (билинейная или кубическая). Как она используется при ортокоррекции и для чего нужна?
Что касается wxGIS то на скриншотах в статье написано "Интерполяция значений высот". Т.к. рельеф обычно имеет более низкое разрешение - 90 м против спутниковой съемки 1 м, то нужно каким то образом определять высоты между центрами этих 90-метровых ячеек. Для этого рельеф сглаживается предложенными методами. Сейчас в wxGIS диалог ортокоррекции дополнился еще одним видом интерполяции - выходного растра. Это уже сглаживаются сами пикселы изображения, т.к. исходный пиксел, обычно попадает в пересечение целевых, а не точно в целевой пиксел.
ortho.png
ortho.png (36.61 КБ) 13409 просмотров
Кстати, на сриншоте есть заблокированная кнопочка "Показать справку". Если бы была помощь в документировании wxGIS многих вопросов удалось избежать. Не хотите поучаствовать? Справку можно писать в Офисе, прямо в Вики ГИС-Лаба или иными удобными способами. Может чего и получше предложите.
А там глядишь и кнопочку разблокируем.

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 18 июл 2012, 11:34
lexamam
Подскажите, а как в wxGIS реализована ортокоррекция? Судя по Вашей статье "Ортокоррекция данных OrbView-3 с помощью GDAL" для wxGIS получаются более качественные результаты, чем для GDAL. Где в исходниках wxGIS можно посмотреть реализацию?
P.S. По поводу справки. Конечно, можно поучаствовать. Тем более, что это полезное дело для всех. Меньше вопросов будет.

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 18 июл 2012, 12:56
Дмитрий Барышников
Уже все исправлено - и статья тоже. Для GDAL стояла очень агрессивная оптимизация по-умолчанию. Теперь результат абсолютно одинаковый. Просто через wxGIS все делается через GUI.
В wxGIS используется ортокоррекция при помощи GDAL - я сам исправлял GDAL для поддержки рельефа (по-умолчанию было только по базовой высоте). Реализация соответственно в файлах wxGIS\src\geoprocessing\gporthocorrecttool.cpp и GDAL\alg\gdal_rpc.cpp

P.S. По поводу документации - даже если вы исправите статьи согласно возникших вопросов (что бы у других не возникало), это уже будет большое подспорье. Для редактирования в ВиКи необходимо "представится" системе с вашим логином и паролем с форума.
Таким же образом можно и новую статью (раздел помощи) сделать. Конкретнее по созданию новых материалов написано на заглавной странице.

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 18 июл 2012, 16:01
alexcpp
Здравствуйте. Стоит задача программно реализовать метод ортокоррекции с использованием RPC. Попытался разобраться в статье, но есть ряд вопросов. В статье приведены формулы для подсчета нормализованных колонки и строки (r и n) в изображении, как коэффициентов многочлена нормализованной геодезической широты (P), долготы (L) и высоты (H). У меня есть изображение в формате GeoTiff с коэффициентами RPC. Где для него взять параметры P, L, H (Latitude, Longitude, Height в формулах) для расчета r и n?
Как правильно двигаться по строкам/столбцам? Например, я беру первую строку изображения и первый столбец. Пересчитываю по формулам значения пикселей. Затем беру вторую строку и второй столбец и т.д. Будет ли верным такой алгоритм? Т.к. протестировал в ENVI ортокоррекцию. Так там размеры входного и ортокорректированного изображений отличаются. Например, для исходного файла размер 16384x15504, а после ортокоррекции 16381x15509. Т.е. размеры не совпадают. Откуда лишняя информация берется?
P.S. Я новичок в геоинформационных системах. Так что если вопросы тривиальные, прошу не ругать.

Re: Ортокоррекция космических снимков с использованием RPC

Добавлено: 18 июл 2012, 19:44
Дмитрий Барышников
А велосипед-то зачем изобретать? GDAL можно использовать и в коммерческих целях - вон ArcGIS использует.
А касательно вопросов - все делается наоборот. Берется пиксель выходного изображения и по координатам определяется какой ему соответствует "цвет" из входного. А границы выходного определяются итерационно - как я писал выше.