RGB格式图像转HSI图像

本文讨论了将RGB图像转换为HSI图像后,特别是对饱和度和色调分量应用均值滤波的效果。使用MATLAB代码展示了如何操作,并分析了滤波后图像的变化,包括色调分量的平滑效果和饱和度保持不变导致的RGB图像不变的情况。
摘要由CSDN通过智能技术生成

这篇博文主要围绕如下问题展开

问题:

考虑右侧一幅500×500的RGB图像,图像中的方块是完全饱和的红色、绿色和蓝色,并且每种颜色都处在最大亮度。由该图像生成了一幅HSI图像。(10分)

回答下列问题:

  1. 描述每幅HSI分量图像的外观。
  2. 用一个大小为125×125的均值滤波器来平滑HIS图像的饱和度分量。请对实验结果进行描述和分析。(忽略滤波运算对图像边界的影响)。
  3. 选用色调分量,重新利用相同的均值滤波器重做(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图像,结果如下图所示:

    由于做了均值化,边界由原来的清晰边界变成模糊边界。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值