数字图像处理matlab上机实验 (八)

前言:作为一名图像算法攻城狮,那是在2014年大三下学期,一本深绿色的《数字图像处理》(冈萨雷斯的英文版)出现在自己课桌前。偶然间打开的一扇意外之门,就这样结下了一段不解之缘,那些日子不断上网搜代码的自己,那个刚上机不到二十分钟就把作业提交的自己,早已随往日的岁月飘扬而去。三年的烟酒僧,两年的酱油工,而今只觉脑子越来越不够用,这次决心回炉重造,希望能够通过固本培基,打开思路,话不多说,开始上课!
----2020-7-7


实验 8 彩色图像滤波

一、实验目的
通过本实验使学生掌握使用 MATLAB 进行彩色图像处理的方法,加深对彩色空间和彩色图像的理解。

二、实验原理
本实验是基于数字图像处理课程中的彩色图像处理理论来设计的。
本实验的准备知识:第六章彩色图像处理中的彩色空间,彩色图像处理方法。

重点如下:
1 、RGB 图像与 HSI 图像之间的相互转换
2 、彩色图像消噪
添加噪声命令:imnoise
中值滤波技术,均值滤波技术

三、实验内容
(一) HSI 空间分量
读取lena_color.tif图像,进行下列操作:
1、 编写函数,将其从RGB空间转换到HIS空间,分别显示其H分量、S分量和I分量。

a=imread('F:\Images\lena_color.tif'); 
A=im2double(a); 
[m,n,q]=size(A);
R=A(:,:,1); 
G=A(:,:,2); 
B=A(:,:,3);
H=zeros(m,n);
for i1=1:m   
    for i2=1:n    
        num=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2));     
        den=sqrt((R(i1,i2)-G(i1,i2))^2+(R(i1,i2)-B(i1,i2))*(G(i1,i2)-B(i1,i2)));    
        theta=acos(num/den)*180/pi;      
        if(B(i1,i2)<=G(i1,i2))          
            H(i1,i2)=theta;        
        else
            H(i1,i2)=360-theta;    
        end
        min1=min(R(i1,i2),G(i1,i2));     
        min1=min(B(i1,i2),min1);       
        S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2))*min1;   
    end
end
I=(R+G+B)/3; 
subplot(221),imshow(a),title('原图像');
subplot(222),imshow(H),title('色度图H '); 
subplot(223),imshow(S),title('饱和度图S'); 
subplot(224),imshow(I),title('强度图I');

在这里插入图片描述

2、 编写函数,将图像从HIS空间转换到RGB空间,分别显示R分量,G分量和B分量。

a=imread('F:\Images\lena_color.tif'); 
A=rgb2hsv(a); 
[m,n,q]=size(A);
R=A(:,:,1); 
G=A(:,:,2); 
B=A(:,:,3);
H=zeros(m,n);
for i1=1:m   
    for i2=1:n    
        num=0.5*(R(i1,i2)-G(i1,i2)+R(i1,i2)-B(i1,i2));     
        den=sqrt((R(i1,i2)-G(i1,i2))^2+(R(i1,i2)-B(i1,i2))*(G(i1,i2)-B(i1,i2)));    
        theta=acos(num/den)*180/pi;      
        if(B(i1,i2)<=G(i1,i2))          
            H(i1,i2)=theta;        
        else
            H(i1,i2)=360-theta;    
        end
        min1=min(R(i1,i2),G(i1,i2));     
        min1=min(B(i1,i2),min1);       
        S(i1,i2)=1-3/(R(i1,i2)+G(i1,i2)+B(i1,i2))*min1;   
    end
end
I=(R+G+B)/3; 
 
for i1=1:m  
    for i2=1:n    
        value1=I(i1,i2)*(1+S(i1,i2)*cos(H(i1,i2))/cos(pi/3-H(i1,i2)/180*pi)); 
        value2=I(i1,i2)*(1-S(i1,i2));       
        switch (floor(H(i1,i2)/120))      
            case 0                
                im2(i1,i2,1)=value1;              
                im2(i1,i2,2)=3*I(i1,i2)-R(i1,i2)-B(i1,i2);        
                im2(i1,i2,3)=value2;           
            case 1               
                H(i1,i2)=H(i1,i2)-120;          
                im2(i1,i2,1)=value2;              
                im2(i1,i2,2)=value1;              
                im2(i1,i2,3)=3*I(i1,i2)-R(i1,i2)-G(i1,i2);      
            case 2                
                H(i1,i2)=H(i1,i2)-240;              
                im2(i1,i2,1)=3*I(i1,i2)-G(i1,i2)-B(i1,i2);   
                im2(i1,i2,2)=value2;              
                im2(i1,i2,3)=value1;        
        end
    end
end
subplot(221),imshow(A),title('hsi图');
subplot(222),imshow(R),title('R'); 
subplot(223),imshow(G),title('G');
subplot(224),imshow(B),title('B');

在这里插入图片描述

(二 ) RGB 空间的彩色平滑
读取lena_color.tif图像,进行下列操作:
(1) 采用7×7均值滤波器对彩色图像的所有分量进行相同平滑,同屏显示原图像和平滑后图像,对结果进行说明;

lena_color=imread('F:\Images\lena_color.tif'); 
lena_red=lena_color(:,:,1); 
lena_green=lena_color(:,:,2);
lena_blue=lena_color(:,:,3);
H=1/49*ones(7,7); 
lena_red1=imfilter(lena_red,H); 
lena_green1=imfilter(lena_green,H); 
lena_blue1=imfilter(lena_blue,H); %===组合图像========================
lena(:,:,1)=lena_red1;
lena(:,:,2)=lena_green1; 
lena(:,:,3)=lena_blue1;
figure(1); 
subplot(1,2,1);imshow(lena_color);title('原图');
subplot(1,2,2);imshow(lena);title('7*7均值滤波');

在这里插入图片描述

(2) 采用7×7均值滤波器对彩色图像的红分量进行平滑,其它分量不变,同屏显示原图像和平滑后图像,对结果进行说明;

lena_color=imread('F:\Images\lena_color.tif'); 
lena_red=lena_color(:,:,1); 
H=1/49*ones(7,7);
lena_red1=imfilter(lena_red,H); 
lena(:,:,1)=lena_red1;
lena(:,:,2)=lena_color(:,:,2);
lena(:,:,3)=lena_color(:,:,3);
figure(1);  
subplot(1,2,1);imshow(lena_color);title('origin'); 
subplot(1,2,2);imshow(lena);title('7*7red');

在这里插入图片描述

(3) 采用直方图均衡方法,对彩色图像的三个分量进行增强,同屏显示原图像和增强后图像,对结果进行说明;

lena_color=imread('F:\Images\lena_color.tif'); 
lena_red=lena_color(:,:,1); 
lena_green=lena_color(:,:,2);
lena_blue=lena_color(:,:,3); 
lena_red1=histeq(lena_red); 
lena_green1=histeq(lena_green); 
lena_blue1=histeq(lena_blue); 
lena(:,:,1)=lena_red1;
lena(:,:,2)=lena_green1; 
lena(:,:,3)=lena_blue1;
figure(1); 
subplot(1,2,1);imshow(lena_color);title('原图'); 
subplot(1,2,2);imshow(lena);title('增强后图像'); 

在这里插入图片描述

(4) 将图像添加上椒盐噪声, A_noised=imnoise(A, ‘salt & pepper’, 0.02),选择合适的滤波器进行滤波,观察滤波效果;

lena_color=imread('F:\Images\lena_color.tif'); 
lena_color_noi=imnoise(lena_color,'salt & pepper',0.02);
lena_red=lena_color_noi(:,:,1); 
lena_green=lena_color_noi(:,:,2);
lena_blue=lena_color_noi(:,:,3);  
lena_red1=medfilt2(lena_red);
lena_green1=medfilt2(lena_green); 
lena_blue1=medfilt2(lena_blue); 
lena(:,:,1)=lena_red1;
lena(:,:,2)=lena_green1;
lena(:,:,3)=lena_blue1; 
figure(1);  
subplot(1,3,1);imshow(lena_color);title('原图');
subplot(1,3,2);imshow(lena_color_noi);title('加椒盐噪声图'); 
subplot(1,3,3);imshow(lena);title('中值滤波图');

在这里插入图片描述

(5) 将图像添加上高斯噪声, A_noised=imnoise(A, ‘gauss’, 0.02),选择合适的滤波器进行滤波,观察滤波效果;

lena_color=imread('F:\Images\lena_color.tif'); 
lena_color_noi=imnoise(lena_color,'gauss',0.02);
lena_red=lena_color_noi(:,:,1);
lena_green=lena_color_noi(:,:,2);
lena_blue=lena_color_noi(:,:,3); 
H=1/49*ones(7,7); 
lena_red1=imfilter(lena_red,H); 
lena_green1=imfilter(lena_green,H);
lena_blue1=imfilter(lena_blue,H);
lena(:,:,1)=lena_red1;
lena(:,:,2)=lena_green1;
lena(:,:,3)=lena_blue1;
figure(1);  
subplot(1,3,1);imshow(lena_color);title('原图');
subplot(1,3,2);imshow(lena_color_noi);title('加高斯噪声图'); 
subplot(1,3,3);imshow(lena);title('均值滤波图'); 

在这里插入图片描述

思考:彩色图像的滤波应该注意什么?

四、实验方法与步骤
1、顺序完成上述实验内容
2、按照实验内容要求,分析编程,将程序和实验结果整理成word文档,分析结果,编写实验报告。

五、实验报告要求
1、本实验由学生单人独立完成。
2、每个实验均按统一格式编写实验报告。
实验报告内容包括:实验要求,实验项目,典型程序流程图,程序清单,数据结果和分析讨论。

本系列文章列表如下:
数字图像处理matlab上机实验 (一)
数字图像处理matlab上机实验 (二)
数字图像处理matlab上机实验 (三)
数字图像处理matlab上机实验 (四)
数字图像处理matlab上机实验 (五)
数字图像处理matlab上机实验 (六)
数字图像处理matlab上机实验 (七)
数字图像处理matlab上机实验 (八)
数字图像处理matlab上机实验 (九)

猜你喜欢

转载自blog.csdn.net/sinat_34897952/article/details/107116456