Matlab - прикрепить скалярное значение к цветам RGB - PullRequest
1 голос
/ 20 июня 2011

Когда я читаю следующее изображение в Matlab, я получаю трехмерную матрицу, которая в основном содержит значения образцов цвета RGB, которые составляют каждый пиксель в изображении.

enter image description here
Есть ли какая-либо функция Matlab, которую я могу использовать для присвоения скалярного значения между, скажем, [-10, 10] каждому пикселю в изображении на основе значений RGB? Чистый красный должен быть как 10, желтый должен быть 5, зеленый должен быть 0, синий должен быть как -8, а голубой должен быть как -10.

Ответы [ 2 ]

6 голосов
/ 20 июня 2011

Посмотрите на RGB2IND: http://www.mathworks.com/help/techdoc/ref/rgb2ind.html

Затем можно заменить выход индекса Nx3 собственным вектором индекса N элемента.

0 голосов
/ 20 июня 2011

Как вы можете видеть из бега

colorlist=[1 0 0;1 1 0;0 1 0; 0 0 1; 0 1 1];
valuelist=[10 5 0 -8 -10];
figure;
hold all;
for i=1:10
  bar(i,i,'FaceColor',colorlist(i,:))
end;

, colorlist, определенный выше, соответствует интересующим вас цветам.

Чтобы решить ваш вопрос ,для каждого пикселя в вашем изображении вы должны будете определить, какие значения RGB равны нулю, а какие равны единице, чтобы определить, между какой парой вы хотите интерполировать.Например, если предположить size(image)==[100,100,3] и image=im2double(imread(myfilename)), т.е. max(image(:))==1:

if ((image(x,y,:)==0)==[0 0 1]) && ((image(x,y,:)==1)==[1 0 0])
    %# interpolate between red and yellow
    result(x,y)=10 - 5*image(x,y,2); %# pure red gives 10, pure yellow gives 5
elseif ((image(x,y,:)==0)==[0 0 1]) && ((image(x,y,:)==1)==[0 1 0])
    %# interpolate between yellow and green
    result(x,y)=5*image(x,y,1); %# pure yellow gives 5, pure green gives 0
elseif 
    %# ...
end

Это решение не векторизовано, но оно должно привести вас на правильный путь для выполнимой реализации.Конечно, если вы могли бы избежать сохранения данных с многоцветной таблицей поиска в виде RGB, но вместо этого сохранить необработанные значения, вы могли бы избавить себя от некоторых хлопот ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...