2015-09-26 2 views
0

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

+0

Исходный код вы перечислили изрешетили с ошибками к сожалению. Однако я решил это. Спасибо за вашу помощь. –

ответ

3

Это должно быть сделано в HSV (оттенок Насыщенность Значение) цветовое пространство.

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

В Matlab:

%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); 

результат:

Оригинальные

enter image description here

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

enter image description here

Насыщенный

enter image description here