Увеличьте насыщенность желтого цвета только в изображении RGB или HSV (Matlab)

У меня есть образ. Я хочу выборочно увеличить насыщенность желтого цвета на изображении до максимума. Как это делается в пространстве изображений RGB или HSV? Спасибо.


person Chris Parry    schedule 26.09.2015    source источник
comment
К сожалению, исходный код, который вы указали, был пронизан ошибками. Я теперь решил это, хотя. Спасибо за вашу помощь.   -  person Chris Parry    schedule 30.09.2015


Ответы (1)


Это необходимо сделать в цветовом пространстве HSV (Hue Saturation Value).

Если у вас есть изображение в формате HSV, это очень просто (иначе конвертируйте его в HSV). H — единственная переменная, которая дает информацию о цвете, и если вы посмотрите страницу википедии Shades of Yellow, вы заметите, что все они находятся в диапазоне от 45 до 60 градусов. Итак, возьмите изображение HSV, выберите H в этом диапазоне и увеличьте S (насыщенность) этих значений.

В Матлабе:

%Read image
imghsv=imread('http://7-themes.com/data_images/out/34/6884934-yellow-flowers.jpg');
imghsv=rgb2hsv(im2double(imghsv));

%pick yellow
yellowIndex=repmat((imghsv(:,:,1)>45/360)&(imghsv(:,:,1)<60/360),[1 1 3]);   
yellow=imghsv.*yellowIndex;

%Saturate it
moreSaturation=2;
yellowsaturated=yellow(:,:,2)*moreSaturation;
yellow(:,:,2)=yellowsaturated;

%put it back
newHsv=imghsv; 
newHsv(yellowIndex)=yellow(yellowIndex);

результат:

Оригинал

введите здесь описание изображения

Желтые пиксели

введите здесь описание изображения

Насыщенный

введите здесь описание изображения

person Ander Biguri    schedule 26.09.2015