У меня есть изображение. Я хочу выборочно увеличить насыщенность желтого на изображении до макс. Как это делается в пространстве изображений RGB или HSV? Благодарю.Увеличение желтой насыщенности только в изображении RGB или HSV (Matlab)
0
A
ответ
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);
результат:
Оригинальные
Желтые пикселей
Насыщенный
Исходный код вы перечислили изрешетили с ошибками к сожалению. Однако я решил это. Спасибо за вашу помощь. –