Eu tive o mesmo problema há vários anos e depois criei meu próprio programa Imhof usando python e numérico. O truque é selecionar uma variedade de altitudes e aplicar uma paleta de cores linear. No final, você deve combinar os diferentes resultados. Este é um fragmento do meu código (muito simplificado)
......
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 faz parte do pacote de imagens python.
A conversão de tiff (16b) para numérico era louca usando o numérico (acho que não me lembro muito bem).
As tuplas como (147, 160, 150), (215, 210, 188) significam de que cor para qual cor quero a minha rampa de cores e essas RGB refletem o Imhof paleete.
O resultado é um DTM com uma paleta Imhof muito detalhada, com mais de 256 cores.
Se alguém quiser fazer um plugin Imhof, estou muito satisfeito em passar o código.