这篇博文主要围绕如下问题展开
问题:
考虑右侧一幅500×500的RGB图像,图像中的方块是完全饱和的红色、绿色和蓝色,并且每种颜色都处在最大亮度。由该图像生成了一幅HSI图像。(10分)
回答下列问题:
- 描述每幅HSI分量图像的外观。
- 用一个大小为125×125的均值滤波器来平滑HIS图像的饱和度分量。请对实验结果进行描述和分析。(忽略滤波运算对图像边界的影响)。
- 选用色调分量,重新利用相同的均值滤波器重做(b)问,请对实验结果进行描述和分析。
图二
matlab代码如下:
Image=imread('D:\课程\数字图像处理\课程设计\image\block.bmp');
HSI_img=rgb2hsv(Image);
%提取h分量,s分量,i分量
h_weight=HSI_img(:,:,1);
s_weight=HSI_img(:,:,2);
i_weight=HSI_img(:,:,3);
%定义均值滤波模板
avg_template=1.0/(125*125)*ones(125,125);
%用125*125的均值滤波模板来平滑HSI图像的饱和度分量
avg_s_weight=myMeanFilter(s_weight,avg_template);
%用125*125的均值滤波模板来平滑HSI图像的色调分量
% avg_h_weight=myMeanFilter(h_weight,avg_template);
avg_h_weight=imfilter(h_weight,fspecial('average',125),'replicate');
%显示
figure;
axis tight;
subplot(3,3,1);imshow(HSI_img);title("hsv图像");
subplot(3,3,2);imshow(h_weight);title("h分量");
subplot(3,3,3);imshow(s_weight);title("s分量");
subplot(3,3,4);imshow(i_weight);title("v分量");
subplot(3,3,5);imshow(avg_s_weight);title("s分量均值滤波图像");
subplot(3,3,6);imshow(avg_h_weight);title("h分量均值滤波图像");
%s分量均值滤波
hsv2=HSI_img;
hsv2(:,:,2)=avg_s_weight(:,:);
% hsv2= cat(3,h_weight,avg_s_weight,i_weight);
subplot(3,3,7);imshow(hsv2rgb(hsv2));title("s分量均值滤波rgb图像");
%h分量均值滤波
hsv3=HSI_img;
hsv3(:,:,1)=avg_h_weight(:,:);
% hsv3= cat(3,avg_h_weight,s_weight,i_weight);
subplot(3,3,8);imshow(hsv2rgb(hsv3));title("h分量均值滤波rgb图像");
%自定义均值滤波
function result=myMeanFilter(inputImage,template)
[row,col]=size(inputImage);
[t_row,t_col]=size(template);
result=zeros(row,col);
padding=floor(t_row/2);
new_inputImage=ones(row+padding*2,col+padding*2);
new_inputImage(1+padding:row+padding*2-padding,1+padding:col+padding*2-padding)=inputImage(:,:);
for i=1+padding:row+padding*2-padding
for j=1+padding:col+padding*2-padding
window=new_inputImage(i-padding:i+padding,j-padding:j+padding);
result(i-padding,j-padding)=sum(sum(window.*template));
end
end
end
(a)HIS三个分量的图片如下图所示:
H(Hue) - 色调:
色调表示颜色的种类或类别,对应于我们常说的颜色名称,如红色、绿色、蓝色等。H的取值范围通常是0到360度,其中0和360度对应于红色,120度对应于绿色,240度对应于蓝色,以此类推。H的变化沿着色轮的角度进行。
S(Saturation) - 饱和度:
饱和度表示颜色的纯度或浓淡程度。当饱和度较低时,颜色会显得灰暗或淡色,而高饱和度表示颜色较为鲜艳。饱和度的取值范围通常是0到1,其中0表示灰度图像,而1表示全彩饱和图像。
I(Intensity) - 强度或亮度:
强度表示颜色的明暗程度,也可以称为亮度。在某些文献中,这个分量也称为亮度(Luminance)。I的取值范围通常是0到1,其中0表示黑色,1表示白色。中间的值表示不同灰度级别的颜色。
色调灰度图像的四个部分灰度值是不一样的,红色的能量最低,绿色分量的能量其次,蓝色分量的能量最高。
饱和度分量是完全饱和的,因此s分量的图片为白色。
强度或亮度分量每种颜色都处在最大亮度,所以亮度分量的图片也是全为白色。
(b)用一个大小为125×125的均值滤波器对s分量做平滑处理
由于s分量的值全为1,因此做平滑处理之后的图片也是白色。
替换hsv图像中的s分量,并转换成rgb图像,结果如下图所示:
由于s分量并没有变化,因此rgb图像并没有变化。
(c)对色调分量做均值滤波
由于色调分量亮度值不一样,因此均值滤波后图片的灰度值分布不均匀。
替换hsv图像中的s分量,并转换成rgb图像,结果如下图所示:
由于做了均值化,边界由原来的清晰边界变成模糊边界。