Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Получение данных из “такой” карты высот

#алгоритм #графика


от есть такой кусок карты высот (8бит на канал) 



Как я догадался, эти резкие скачки отвечают за разные уровни высоты. То есть, где
где большая разница между светлым и голубым, там осуществляется переход между уровнями.
При этом участки светлее отвечают за меньшую высоту на своем уровне.

Значит попробовал я следующим образом: на каждой строке проверять разницу между значениями
красного канала на соседних пикселях. Взять к примеру константу max_dist = 180, и если
разница больше max_dist , тогда засчитывать переход на следующий уровень, то же самое
с переходом на предыдущий уровень при разнице меньше -max_dist.

Но это не  работает, только появляются полосы. Какие еще есть способы извлечь такие
данные?

UPDATE: Оказалось все еще интереснее)

Склеив все эти кусочки получил


    


Ответы

Ответ 1



Зеленый канал определяет абсолютную высоту, хотя поделен на несколько уровней(их нужно разделять, в данном примере первый уровень в голубых областях, второй в последующей красной с зеленым области, и последний в правом нижнем углу. Красный канал это остаток зеленого.По возвышениям 255 единиц из красного немного меньше чем 1 единица из зеленого. Отсюда можно вывести формулу Синий канал содержит только пару уровней возвышения зеленого (но их оказывается больше, поэтому он бесполезен, все равно нужно вручную отделять уровни) elevation = level*255 + green + red/256

Комментариев нет:

Отправить комментарий