我有一张图片。我想有选择地将图像中的黄色饱和度增加到最大值。如何在RGB或HSV图像空间中完成?谢谢。
答案 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);
结果:
原始
黄色像素
饱和