仅在RGB或HSV图像(Matlab)中增加黄色饱和度

时间:2015-09-26 09:31:43

标签: matlab image-processing colors computer-vision hsv

我有一张图片。我想有选择地将图像中的黄色饱和度增加到最大值。如何在RGB或HSV图像空间中完成?谢谢。

1 个答案:

答案 0 :(得分:3)

这需要在HSV(Hue 饱和度值)颜色空间中完成。

如果您在HSV中拥有图像,则非常容易(否则将其转换为HSV)。 H是唯一提供颜色信息的变量,如果您查看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