Разделяйте цвета изображения с помощью MATLAB - PullRequest
1 голос
/ 23 декабря 2011

Я только начинаю пробовать проект MATLAB. Я использовал для разделения красного, зеленого и синего цветов. Это моя функция:

function x = colorsep(b) %
n = 256; % color is from 0->255, so it has 256
a = imread('peppers.png');


b=im2uint8(a);
x=figure; % create picture to put the image


subplot(2,2,1); %(2 rows, 2column, cell ti 1)
imshow(b),title('Full Color');


colorlist = {'Red','Green','Blue'};


gr = 0:1/(n-1):1;


for k=1:3

    cMap = zeros(n,3);
    cMap(:,k) = gr;
    subplot(2,2,k+1);
    imshow(ind2rgb(b(:,:,k),cMap)); %ind2r = index to rgb
    title(colorlist{k});
end
end    

Теперь я хочу разделить три цвета (розовый, желтый, оранжевый), что я буду делать? Кто-нибудь знает об этом? Большое спасибо.

1 Ответ

4 голосов
/ 23 декабря 2011

Вопрос неверный. Изображение на компьютере состоит из 3 цветовых каналов

  • красный
  • зеленый
  • синий

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

function colorsep() %
    a = imread('peppers.png');
    colorlist = {'R','G','B'};    
    subplot(2,2,1);
    imshow(a);
    for k=1:3
        subplot(2,2,k+1);
        imshow( a(:,:,k));
        title(colorlist{k});
    end
end

enter image description here

Если вы хотите разделить его в другом цветовом пространстве, вам следует сначала преобразовать его в другое цветовое пространство, например LAB, а затем показать каналы отдельно.

Если вы хотите найти все «розовые», «желтые» объекты, вам следует выполнить сегментацию и проверить, что объекты означают цвет.

Пожалуйста, уточните, что именно вы хотите.

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