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