#algorithm #reverse #smoothing #terrain #heightmap
#алгоритм #обратный #сглаживание #местность #карта высот
Вопрос:
Я взял данные отсюда (Наса — Топография) и здесь (НАСА — Батиметрия) и использовал их для создания 3D-модели всей поверхности Земли (как над, так и под водой).).
Вот что я получил: как вы можете видеть, он очень неровный.
Проблема в том, что из-за того, что я использую изображения в оттенках серого, у меня есть только 512 различных уровней для работы (256 * 2). При переходе со дна океана на самую высокую вершину вы, очевидно, достигнете более 512 различных высот. Так что это в основном нежелательная пошаговая функция. Если бы они использовали все каналы RGB, это не было бы проблемой, но тогда изображение было бы не очень «удобочитаемым»
Сглаживание в целом возможно, но не является большой возможностью, потому что это резко снизит качество скал, пиков, каньонов и т. Д.
Вот в чем дело: мы знаем, что каждый пиксель находится в пределах (maxHeight-minHeight) / 512 (= maxoffset) от фактически правильного значения: как указано, он в значительной степени прошел через нежелательную ступенчатую функцию. Конечно, математически ступенчатая функция необратима — однако это не мешает нам пытаться!
Вот некоторые из моих мыслей о том, как это может работать:
- Найдите среднюю высоту окружающих пикселей для некоторого радиуса. Вычислите разницу между текущим значением этого пикселя и вычисленным средним значением. Пока ничего не делайте с этим значением.
- При вычислении этого сохраните, какой пиксель имеет наибольшее различие.
- Затем «нормализуйте» все значения таким образом, чтобы эта наибольшая разница составляла (maxHeight-minHeight) / 512: maxoffset: максимальное значение, которое может быть отключено для пикселя. Из-за выбросов эта «нормализация» не должна быть линейной, но такой, чтобы среднее значение составляло 85% (или что-то в этом роде) от этого maxoffset.
- Пики (пиксели, которые выше всех окружающих пикселей) и бассейны (та же идея, но ниже) исключаются из этого процесса, поскольку они будут выбросами и в любом случае не должны сильно меняться (или проходить собственный процесс).
Это может не сработать. Я все еще мог бы использовать базовое «среднее сглаживание», за исключением следующих правил:
- Нет сглаживания пиков (пикселей, которые выше, чем все окружающие пиксели), бассейнов (та же идея, кроме нижней), скал (это намного сложнее и может не произойти — но идея состоит в том, чтобы проверить, имеют ли пиксели падение с одной стороны и примерно одинаковые пиксели высоты с другой стороны длянекоторое расстояние).
- Если в пикселе значительно больше пикселей одинаковой высоты, чем нет, придайте больший вес этим пикселям почти одинаковой высоты.
Я также ищу лучшие «данные», но я не уверен, что сделаю это из-за того, что мне требуются батиметрические данные: большинство API-интерфейсов GPS являются эксклюзивными для топографии. В любом случае, это, тем не менее, интересная проблема, и мне любопытно, есть ли уже несколько хороших алгоритмов.
Комментарии:
1. хм, я бы попытался использовать разницу между скользящим средним и необработанными данными для определения уклонов (если вы находитесь на склоне, разница будет намного меньше)… затем сглаживайте только участки склонов … Также я бы разделил это на одну ось… и обрабатывать их все по отдельности. Края склонов можно сглаживать с меньшим и меньшим весом по мере приближения к самому краю, чтобы сетка соединялась плавно….
2. Существует несколько форматов изображений, которые не требуют дискретных уровней (например, tiff: en.wikipedia.org/wiki/TIFF ) Если у вас нет веских причин для дискретизации ваших данных, ответ таков: не делайте этого. По этой причине геопространственные данные обычно отправляются в формате geotiff: en.wikipedia.org/wiki/GeoTIFF . Вы должны быть в состоянии найти те же данные, с которыми работаете, в формате geotiff.
3. Я только что понял: данные, предоставленные здесь Наса, — это Tiff, но они использовали только 8 бит на пиксель! Как это расстраивает!
4. Если НАСА дискретизировало данные, у них, возможно, была веская причина для этого (большинство старых спутников имеют очень ограниченную возможность загрузки ссылок и требуют сжатых данных.) Я бы предложил поискать более свежие данные, эти типы ограничений справедливы только для более старых данных, где спутники были гораздо более ограничены в своем разрешении / возможностях. Может случиться так, что данные с более высоким разрешением требуют оплаты, однако (к сожалению!)
5. Если вы опытный пользователь геопространственных данных, вы можете сформировать свои собственные DEM, используя несколько необработанные (но, что самое главное, бесплатные!) Данные датчиков. Смотрите, например, как это сделать, используя данные SAR Sentinel 1 (InSAR): asf.alaska.edu/how-to/data-recipes/… Однако качество вашей демоверсии может быть в значительной степени неизвестно, если вы создаете ее самостоятельно.