数字图像处理学习笔记(十五)在RGB和HSI色彩空间上分别对彩色图像进行平滑、锐化

实验截图:

  • 在RGB和HSI色彩空间上分别对彩色图像进行平滑、锐化:
    在这里插入图片描述

实验代码:

rgb=imread('erciyuan.jpg');
 
r=rgb(:,:,1);
 
g=rgb(:,:,2);
 
b=rgb(:,:,3);
 
subplot(231);
 
imshow(rgb);
 
title('RGB原图');
 
m=fspecial('average');
 
r_filtered=imfilter(r,m);
 
g_filtered=imfilter(g,m);
 
b_filtered=imfilter(b,m);
 
rgb_filtered=cat(3,r_filtered,g_filtered,b_filtered);
 
subplot(232);
 
imshow(rgb_filtered);
 
title('RGB空间平滑');
 
lapMatrix=[1 1 1;1 -8 1;1 1 1];
 
i_tmp=imfilter(rgb_filtered,lapMatrix,'replicate');
 
i_sharped=imsubtract(rgb,i_tmp);
 
subplot(233);
 
imshow(i_sharped);
 
title('RGB空间平滑+锐化');
 
rgb=im2double(rgb);
 
r=rgb(:,:,1);
 
g=rgb(:,:,2);
 
b=rgb(:,:,3);
 
i=(r+g+b)/3;
 
m1=min(min(r,g),b);
 
m2=r+g+b;
 
m2(m2==0)=eps;
 
s=1-3.*m1./m2;
 
m1=0.5.*((r-g)+(r-b));
 
m1=sqrt((r-g).^2+(r-b).*(g-b));
 
n=acos(m1./(m1+eps));
 
h=n;
 
h(b>g)=2*pi-h(b>g);
 
h=h/(2*pi);
 
h(s==0)=0;
 
hsi=cat(3,h,s,i);
 
subplot(234);
 
imshow(hsi);
 
title('HSI原图');
 
m=fspecial('average');
 
r_filtered=imfilter(h,m);
 
g_filtered=imfilter(s,m);
 
b_filtered=imfilter(i,m);
 
rgb_filtered=cat(3,r_filtered,g_filtered,b_filtered);
 
subplot(235);
 
imshow(rgb_filtered);
 
title('HSI空间平滑');
 
lapMatrix=[1 1 1;1 -8 1;1 1 1];
 
i_tmp=imfilter(rgb,lapMatrix,'replicate');
 
i_sharped=imsubtract(rgb_filtered,i_tmp);
 
subplot(236);
 
imshow(i_sharped);
 
title('HSI空间平滑+锐化');

结果分析:

  • 对一个RGB图像进行平滑操作时,我们需要将它的RGB三个通道都分离出来分别平滑,然后再将三个平滑后的通道合并起来就能得到RGB平滑后的图;对于HSI也是一样的方法,同样也是对三个通道分别操作再合并即可。我在这里用了lapMatrix和imfilter函数来生成一个i_tmp图像,然后再将它与rgb图相减来实现锐化的效果。

版权声明:本文为qq_43663263原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。