MATLAB RGB转换为hsv后,h通道的值为0到1范围内的double型数据。但是hsv颜色空间中h是0到360度。他们的对应关系如下图所示。
示例代码展示如何通过由h指定颜色范围,通过饱和度值的更改,实现RGB特定颜色范围内彩色保留,范围外显示为灰色。
close all;clear all;clc;
I=imread('78.bmp');%读入图片
figure,imshow(I);
I_h=rgb2hsv(I);%RGB转hsv
figure,imshow(I_h);
[height,width,c]=size(I);
for i=1:height
for j=1:width
h=I_h(i,j,1);
s=I_h(i,j,2);
v=I_h(i,j,3);
%通过将h通道颜色值特定范围内饱和度设为0,保留范围外颜色值
if 0<h && h<0.833
I_h(i,j,2)=0;
end
end
end
I_r=hsv2rgb(I_h);
figure, imshow(I_r);
原图:
“0 < h < 0.833 ”
“ 0.833 < h || h < 0.667”
“0.667 < h || h < 0.5”
“0.5 < h || h < 0.33”
“0.33 < h || h < 0.167”
“0.167 < h”