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