图像滤波处理

更新时间:2023-10-04 18:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

图像平滑滤波

学号:A01314063 姓名:陈文鹏

1.实验目的:

分别使用空域法、频域法实现图像平滑滤波,分析空域滤波器和频域滤波器之间的转化过程

2.实验方法和步骤:

1.空域法图像平滑滤波: 方法:邻域平均法

步骤:1.imread()读取图像。

2.rgb2gray()函数将原图转换为灰度图。 3.imnoise()函数为原图加高斯白噪声。 4.double()将加了噪声的图转换为双精度型。5.创建3*3模板,用模板对噪声图邻域平均,理后的图像。

6.创建5*5模板,用模板对噪声图邻域平均,理后的图像。

7.创建7*7模板,用模板对噪声图邻域平均,理后的图像。 其源程序代码如下: clear; clc;

显示处显示处显示处

Image()Image()Image()close all;

I=imread('E:\\cwp.jpg'); %读取图像 f=rgb2gray(I);%将原图转换为灰度图

subplot(2,3,1);%分割2*3个窗口。取第一个窗口,下面在第一个窗口处显示图像

imshow (f);%显示灰度图 colormap(gray);

title('原始图')%给显示的图像命名为“原始图”

J=imnoise(f,'gaussian',0,0.09);%给原始图加入参数为0.09的高斯白噪声

subplot(2,3,2);%分割2*3个窗口。取第二个窗口 imshow(J);%显示加了高斯白噪声的图像 title('噪声图')%命名为“噪声图” [m n]=size(f); %获取灰度图的大小 f=double(f);%转换f为双精度型 c=1/9*[1 1 1;1 1 1;1 1 1]; %3*3模板 fori=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end

end

subplot(2,3,3);image(G);%取第三个窗口 title('3*3模板')%命名为“3*3模板” c=1/25*[1 1 1 1 1;1 1 1 1 1;1 1 1 1 1]; %5*5模板 fori=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end end

subplot(2,3,4);image(G);%在第四个窗口中显示图像 title('5*5模板')%命名为“5*5模板”

c=1/49*[1 1 1 1 1 1 1;1 1 1 1 1 1 1;1 1 1 1 1 1 1]; %7*7模板 fori=1:m for j=1:n

L=f(i:i,j:j).*c; %求点积 G(i,j)=sum(sum(L));%求和 end end

subplot(2,3,5);image(G);%在第五个窗口中显示图像 title('7*7模板')%命名为“7*7模板” end

2.频域法图像平滑滤波: 方法:二阶布特沃斯低通滤波法 步骤:1.imread()读取图像。

2.Size()函数获取图像矩阵大小。

3.将矩阵转换为双精度型,再将原图转换为灰度图。 4.wgn()函数产生高斯白噪声并加入原来图像中。 5.fft2()对图像进行傅立叶变换。

6.巴特沃斯低通滤波器传递函数与图像傅立叶变换相乘。 7.ifft2()函数进行逆傅立叶变换。 8.image()函数显示图像。 其源程序代码如下: clear; clc; close all;

I=imread('E:\\cwp.jpg'); %读取图像 [m n p]=size(I);%获取图像矩阵大小

I=double(I);%将原来的图像矩阵转换为双精度型的

I=I(1:m,1:n,1).*0.3+I(1:m,1:n,2).*0.51+I(1:m,1:n,1).*0.11;%将原图转换为灰度图

subplot(2,2,1);image(I);colormap(gray); %分割2*2个窗口。取第一个窗

口,显示灰度图

title('原始图');%命名为“原始图”

Noise=wgn(m,n,25);%产生25dBm的高斯白噪声 New = Noise + I;%将高斯白噪声与原始信号叠加

subplot(2,2,2);image(New);%在第二个窗口中显示加了噪声的图像 title('噪声图')%命名为“噪声图” g=fft2(New); % 傅立叶变换 g=fftshift(g); % 转换数据矩阵 [M,N]=size(g); %获取矩阵大小

nn=2; % 定义二阶巴特沃斯(Butterworth)低通滤波器 d0=20; %截止频率为20 m=fix(M/2); n=fix(N/2);%圆整函数 fori=1:M for j=1:N

d=sqrt((i-m)^2+(j-n)^2);

h=1/(1+0.414*(d/d0)^(2*nn)); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j);%传递函数与信号傅立叶变换函数相乘 end end

result=ifftshift(result); J2=ifft2(result); %逆傅立叶变换

J3=uint8(real(J2));%将输出图像转换为8位数据存储

本文来源:https://www.bwwdw.com/article/t3ad.html

Top