2017-02-16 16 views
0

Ситуация: попытка вывода и обработки индексированного изображения.Как отображать/манипулировать индексированным изображением Octave

Проблема: при использовании ind2rgb(image, colormap(x)) мы получили сообщение о том, что indexed image contains colors outside of colormap, где x является опцией colormap.

Вопрос: Как обойти это?

Дополнительная информация: Я использовал imshow(image, colormap(x)), где я использовал каждую цветную карту, имеющуюся на Octave, взамен x.

ответ

1

Я считаю, что это происходит потому, что у вас больше индексов, чем в цветовой палитре. Просто сделайте больший набор цветов. Вы можете сделать это с sysntax colormap(x(size_of_cmap))

ind2rgb(image, colormap(viridis(max(image(:)))) 

В качестве альтернативы, создать палитру и интерполировать его. Внимание: это может создавать артефакты в цвете из-за кругового поведения HSV.

m=max(image(:)); 
cm=colormap(x); 

hsv=rgb2hsv(cm); 
cm=interp1(linspace(0,1,size(cm,1)),hsv,linspace(0,1,m)); 
cm=hsv2rgb(cm); 

ind2rgb(image,cm); 

Предлагаю использовать, по возможности, первое решение.