У меня была такая же проблема несколько лет назад, а затем я создал свою собственную программу Imhof, используя python и numeric. Хитрость заключается в том, чтобы выбрать диапазон высот и применить линейную цветовую палитру. В конце вы должны объединить разные результаты. Это фрагмент моего кода (очень упрощенный)
......
abajos = nrange(dtm, 0,500)
amedias = nrange(dtm, 499, 4000)
amaximas = where (dtm > 4000, dtm, 0)
.......
abajos_i = convert.num2img(abajosbin)
abajos_ic = ImageOps.colorize(abajos_i, (147, 160, 150),(215, 210, 188))
amedias_i = convert.num2img(amediasbin)
amedias_ic = ImageOps.colorize(amedias_i, (215, 210, 188), (206, 187, 173))
amaximas_i = convert.num2img(amaximasbin)
amaximas_ic = ImageOps.colorize(amaximas_i, (206, 187, 173), (255,255,255))
ImageOps является частью пакета изображений Python.
Преобразование из числа tiff (16b) в числовое значение было сумасшедшим с использованием числового выражения (думаю, не очень хорошо помню).
Кортежи типа (147, 160, 150), (215, 210, 188) означают, от какого цвета до какого цвета я хочу мою цветовую шкалу, и эти RGB отражают палитру Imhof.
В результате получается DTM с очень подробной палитрой Imhof, более 256 цветов.
Если кто-то хочет создать плагин Imhof, я очень рад передать код.