MATLAB实现频域平滑滤波以及图像去噪代码

合集下载

Matlab中的信号降噪与滤波技术详解

Matlab中的信号降噪与滤波技术详解

Matlab中的信号降噪与滤波技术详解正文部分:在信号处理的领域中,信号的降噪和滤波是非常重要的步骤。

Matlab作为一种常用的工具,提供了丰富的信号处理函数和工具箱,可以帮助我们实现高效的信号降噪和滤波。

本文将详细介绍Matlab中的信号降噪和滤波技术。

一、信号降噪技术1.1 经典的降噪方法在信号降噪的过程中,最常用的方法之一是使用滑动平均法。

该方法通过计算信号在一定窗口内的平均值来消除噪声的影响。

在Matlab中,可以使用smooth函数来实现该方法。

使用该函数时,需要指定窗口的大小。

较大的窗口可以平滑信号,但会导致信号的平均值偏移。

而较小的窗口则可以更有效地去除高频噪声,但可能会保留一些低频噪声。

此外,还可以使用中值滤波法来降噪,该方法能够消除信号中的离群值。

在Matlab中,可以使用medfilt1函数实现中值滤波。

该函数需要指定一个窗口大小,并对信号进行中值滤波处理。

较大的窗口可以更好地降噪,但可能会导致信号的细节信息丢失。

1.2 基于小波变换的降噪方法除了经典的降噪方法外,基于小波变换的降噪方法也是一种常用的技术。

小波变换是一种多分辨率分析方法,可以将信号分解为不同尺度的子信号。

在降噪过程中,可以通过滤除高频子信号中的噪声来实现降噪效果。

在Matlab中,可以使用wdenoise函数来实现基于小波变换的降噪。

该函数需要指定小波族,降噪方法和阈值等参数。

1.3 基于自适应滤波的降噪方法自适应滤波是一种根据信号的统计特性进行滤波的方法,它可以根据信号的自相关矩阵来调整滤波器的参数。

在Matlab中,可以使用wiener2函数来实现自适应滤波。

该函数需要指定一个噪声估计器,通过估计信号和噪声的自相关函数来调整滤波器的参数。

二、信号滤波技术2.1 无限脉冲响应滤波器无限脉冲响应滤波器(IIR滤波器)是一种常用的滤波器,它可以对信号进行低通、高通、带通或带阻滤波。

在Matlab中,可以使用butter函数来设计和应用IIR滤波器。

如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原

如何在Matlab中进行图像去噪与复原图像去噪与复原在计算机视觉和图像处理领域有着重要的应用价值。

当图像受到噪声污染或损坏时,我们需要采取适当的方法来还原图像的清晰度和准确性。

在这方面,Matlab作为一种强大的数值计算软件,提供了丰富的图像处理工具和函数,能够帮助我们有效地进行图像去噪和复原。

一、图像去噪方法介绍在进行图像去噪之前,我们需要了解一些常见的图像噪声类型和去噪方法。

常见的图像噪声类型包括高斯噪声、椒盐噪声和泊松噪声等。

对于这些噪声,我们可以采用滤波方法进行去噪处理。

Matlab提供了多种滤波函数,包括均值滤波、中值滤波、高斯滤波等。

这些函数能够基于不同的滤波算法,去除图像中的噪声,提高图像质量。

1.1 均值滤波均值滤波是一种简单的滤波方法,通过计算像素周围邻域的平均灰度值来减小噪声的影响。

在Matlab中,可以使用imfilter函数实现均值滤波。

该函数可以指定滤波器的大小和形状,对图像进行滤波处理。

均值滤波适用于高斯噪声的去除,但对于椒盐噪声等其他类型的噪声效果不佳。

1.2 中值滤波中值滤波是一种非线性滤波方法,通过在像素周围邻域中选择中间灰度值来减小噪声的影响。

在Matlab中,可以使用medfilt2函数实现中值滤波。

该函数可以指定滤波器的大小和形状,对图像进行滤波处理。

中值滤波适用于椒盐噪声的去除,对于高斯噪声等其他类型的噪声有效果不佳。

1.3 高斯滤波高斯滤波是一种线性滤波方法,通过根据像素周围邻域的权重来减小噪声的影响。

在Matlab中,可以使用imgaussfilt函数实现高斯滤波。

该函数可以指定滤波器的大小和标准差,对图像进行滤波处理。

高斯滤波适用于高斯噪声的去除,对于椒盐噪声等其他类型的噪声效果较好。

二、图像复原方法介绍除了去噪,图像复原也是图像处理中常见的任务之一。

图像复原主要是指恢复图像中的缺失或破损的信息,使得图像在视觉上更加清晰和准确。

在Matlab中,可以使用多种方法进行图像复原,包括图像插值、图像修复和图像增强等。

数字图像处理matlab代码

数字图像处理matlab代码

一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。

1、不同滤波器的频域降噪1.1 理想低通滤波器(ILPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4)); %将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if d<=d0 %点(i,j)在通带内的情况h=1; %通带变换函数else %点(i,j)在阻带内的情况h=0; %阻带变换函数ends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('ILPF滤波后的图像(d=40)');运行结果:1.2 二阶巴特沃斯低通滤波器(BLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n=2; %对n赋初值n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40; %初始化d0for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1/(1+(d/d0)^(2*n)); %BLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('BLPF滤波后的图像(d=40)');实验结果:1.3 指数型低通滤波器(ELPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=exp(log(1/sqrt(2))*(d/d0)^2);s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('ELPF滤波后的图像(d=40)');运行结果:1.4 梯形低通滤波器(TLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=10;d1=160;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 if (d<=d0)h=1;else if (d0<=d1)h=(d-d1)/(d0-d1);else h=0;endends(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('TLPF滤波后的图像'); %为图像添加标题运行结果:1.5 高斯低通滤波器(GLPF)I1=imread('eight.tif'); %读取图像I2=im2double(I1);I3=imnoise(I2,'gaussian',0.01);I4=imnoise(I3,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I2) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I4) %加入混合躁声后显示图像title('加噪后的图像');s=fftshift(fft2(I4));%将灰度图像的二维不连续Fourier 变换的零频率成分移到频谱的中心[M,N]=size(s); %分别返回s的行数到M中,列数到N中n1=floor(M/2); %对M/2进行取整n2=floor(N/2); %对N/2进行取整d0=40;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); %点(i,j)到傅立叶变换中心的距离 h=1*exp(-1/2*(d^2/d0^2)); %GLPF滤波函数s(i,j)=h*s(i,j); %ILPF滤波后的频域表示endends=ifftshift(s); %对s进行反FFT移动s=im2uint8(real(ifft2(s))); %对s进行二维反离散的Fourier变换后,取复数的实部转化为无符号8位整数subplot(1,3,3); %创建图形图像对象imshow(s); %显示ILPF滤波后的图像title('GLPF滤波后的图像(d=40)');运行结果:1.6 维纳滤波器[B,Cmap]=imread('eight.tif'); %读取MATLAB中的名为eight的图像I1=im2double(B);I2=imnoise(I1,'gaussian',0.01);I3=imnoise(I2,'salt & pepper',0.01);figure,subplot(1,3,1);imshow(I1) %显示灰度图像title('原始图像'); %为图像添加标题subplot(1,3,2);imshow(I3) %加入混合躁声后显示图像title('加噪后的图像');I4=wiener2(I3);subplot(1,3,3);imshow(I4); %显示wiener滤波后的图像title('wiener滤波后的图像');运行结果:结论:理想低通滤波器,虽然有陡峭的截止频率,却不能产生良好的效果,图像由于高频分量的滤除而变得模糊,同时还产生振铃效应。

如何使用MATLAB进行频域滤波与去噪

如何使用MATLAB进行频域滤波与去噪

如何使用MATLAB进行频域滤波与去噪使用MATLAB进行频域滤波与去噪引言:在数字信号处理领域,频域滤波与去噪是一项重要而常见的任务,在实际应用中有很多场景需要对信号进行去除噪声或者滤波处理。

MATLAB作为一种功能强大的科学计算软件,提供了丰富的工具和函数,可以帮助我们完成频域滤波与去噪的任务。

本文将介绍如何使用MATLAB进行频域滤波与去噪,并给出一些实用的例子。

一、频域滤波频域滤波是一种常用的信号处理方法,它通过将信号从时域转换到频域,对频域上的信号进行滤波处理,再将滤波后的信号转换回时域得到最终结果。

MATLAB提供了丰富的函数和工具箱,可以方便地进行频域滤波。

1. FFT(快速傅里叶变换)傅里叶变换是将信号从时域转换到频域的一种数学方法,而快速傅里叶变换(FFT)是对离散信号进行傅里叶变换的一种快速算法。

在MATLAB中,可以使用fft函数完成FFT变换,如下所示:```matlabY = fft(X);```其中,X为输入信号,Y为傅里叶变换后的结果。

通过FFT变换,我们可以将信号转换到频域进行进一步的处理。

2. 频域滤波器设计MATLAB提供了fir1、fir2、butter等函数用于设计常见的滤波器,根据滤波器的需求选择合适的函数进行滤波器设计。

以fir1函数为例,它可以设计出一种FIR (有限脉冲响应)滤波器,实现对频域信号的滤波。

下面是一个示例代码:```matlaborder = 32; % 滤波器阶数cutoff = 0.2; % 截止频率b = fir1(order, cutoff); % FIR滤波器设计```在上述代码中,我们指定了滤波器的阶数和截止频率,通过调用fir1函数进行滤波器设计,并得到滤波器的系数b。

将滤波器系数应用到信号上,可以实现对信号的频域滤波。

3. 频域滤波器应用设计好滤波器后,我们可以将滤波器应用到信号上,实现频域滤波。

MATLAB 提供了fftfilt函数用于对信号进行频域滤波,如下所示:```matlabY = fftfilt(b, X);```其中,b为滤波器系数,X为输入信号,Y为滤波后的结果。

matlab 频域高斯低通滤波

matlab 频域高斯低通滤波

matlab 频域高斯低通滤波一、前言在数字图像处理中,滤波是一种常用的技术。

频域滤波是其中一种基于傅里叶变换的滤波方法,可以有效地去除图像中的噪声。

高斯低通滤波是其中一种常用的频域滤波方法,可以平滑图像并去除高频噪声。

本文将详细介绍 MATLAB 中如何实现频域高斯低通滤波。

二、MATLAB 中的频域滤波MATLAB 中提供了许多函数来实现频域滤波,例如 fft2, ifft2, fftshift, ifftshift 等。

其中 fft2 和 ifft2 分别表示二维快速傅里叶变换和逆变换,fftshift 和 ifftshift 分别表示将零频分量移到中心位置和将中心位置移到零频分量处。

三、高斯低通滤波原理在进行高斯低通滤波之前,需要先了解高斯函数和低通滤波器的概念。

1. 高斯函数高斯函数是一个连续函数,其形式为:$$g(x,y)=\frac{1}{2\pi\sigma^2}e^{-\frac{x^2+y^2}{2\sigma^2}} $$其中 $\sigma$ 是标准差。

在图像处理中,高斯函数可以用来平滑图像并去除噪声。

2. 低通滤波器低通滤波器是一种可以通过去除高频信号来平滑图像的滤波器。

在频域中,低通滤波器可以通过将高频信号设置为零来实现。

3. 高斯低通滤波原理高斯低通滤波是一种将高斯函数与低通滤波器相结合的方法。

具体来说,可以通过以下步骤来实现:1)对输入图像进行二维傅里叶变换,得到频域图像。

2)在频域图像中心位置创建一个和输入图像大小相同的矩形掩膜,掩膜内部数值为 1,外部数值为 0。

3)将掩膜与一个高斯函数卷积,得到一个新的掩膜。

4)将新的掩膜应用于频域图像,得到经过高斯低通滤波后的频域图像。

5)对经过滤波后的频域图像进行逆傅里叶变换,得到经过高斯低通滤波后的空域图像。

四、MATLAB 中实现高斯低通滤波在 MATLAB 中实现高斯低通滤波可以通过以下步骤来完成:1)读入图像并显示。

matlab-空域和频域进行滤波处理

matlab-空域和频域进行滤波处理

图像平滑处理的空域算法和频域分析1 技术要求对已知图像添加高斯白噪声,并分别用低通滤波器(频域法)和邻域平均法(空域法)对图像进行平滑处理(去噪处理),并分析比较两种方法处理的效果。

2 基本原理2.1 图像噪声噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。

实际获得的图像一般都因受到某种干扰而含有噪声。

引起噪声的原因有敏感元器件的内部噪声、相片底片上感光材料的颗粒、传输通道的干扰及量化噪声等。

噪声产生的原因决定了噪声的分布特性及它和图像信号的关系。

根据噪声和信号的关系可以将其分为两种形式:(1)加性噪声。

有的噪声与图像信号g(x,y)无关,在这种情况下,含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)(2)乘性噪声。

有的噪声与图像信号有关。

这又可以分为两种情况:一种是某像素处的噪声只与该像素的图像信号有关,另一种是某像点处的噪声与该像点及其邻域的图像信号有关,如果噪声与信号成正比,则含噪图像f(x,y)可表示为f(x,y)=g(x,y)+n(x,y)g(x,y)另外,还可以根据噪声服从的分布对其进行分类,这时可以分为高斯噪声、泊松噪声和颗粒噪声等。

如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声,一般为加性噪声。

2.2 图像平滑处理技术平滑技术主要用于平滑图像中的噪声。

平滑噪声在空间域中进行,其基本方法是求像素灰度的平均值或中值。

为了既平滑噪声又保护图像信号,也有一些改进的技术,比如在频域中运用低通滤波技术。

(1)空域法在空域中对图像进行平滑处理主要是邻域平均法。

这种方法的基本思想是用几个像素灰度的平均值来代替每个像素的灰度。

假定有一幅N*N 个像素的图像f(x,y),平滑处理后得到一幅图像g(x,y)。

g(x,y)由下式决定式中,x,y=0,1,2,…,N-1;S 是(x,y)点邻域中点的坐标的集合,但其中不包括(x,y)点;M 是集合内坐标点的总数。

Matlab中的图像去噪方法探究

Matlab中的图像去噪方法探究

Matlab中的图像去噪方法探究引言:图像去噪是数字图像处理中一个重要的领域,通常被用于清除图像中的噪声,提高图像的质量。

Matlab作为最常用的科学计算软件之一,提供了众多图像去噪方法的实现。

本文将探究在Matlab环境下常用的图像去噪方法,包括均值滤波、中值滤波、小波去噪和Total Variation(TV)去噪等。

1. 均值滤波均值滤波是一种简单且常用的图像去噪方法。

其基本思想是通过计算像素周围邻域像素的平均值来减少噪声的影响。

在Matlab中,可以使用`imfilter`函数来实现均值滤波。

该函数通过对图像进行卷积操作,可以选择不同大小的滤波器来达到不同程度的去噪效果。

然而,均值滤波的缺点是会导致图像的细节模糊化,并且无法处理噪声的非高斯分布情况。

2. 中值滤波中值滤波是一种基于排序统计的图像去噪方法。

它的原理是通过对像素周围邻域像素进行排序,然后选择中间值作为输出像素的值。

与均值滤波相比,中值滤波能够更好地保留图像的细节信息。

Matlab中的`medfilt2`函数可以用于实现中值滤波。

需要注意的是,中值滤波对于椒盐噪声和脉冲噪声等非高斯分布噪声具有较好的去除效果,但对于高斯噪声等其他类型噪声的去噪效果相对较差。

3. 小波去噪小波去噪是一种基于小波变换的图像去噪方法,它通过将图像信号分解为不同频率的小波系数,然后根据小波系数的能量分布情况进行去噪处理。

在Matlab中,可以使用Wavelet Toolbox提供的函数来实现小波去噪。

其中,`wdenoise`函数可以根据设定的阈值对小波系数进行修正,从而实现图像去噪的效果。

由于小波去噪考虑了图像的频域特性,因此在去除噪声的同时能够尽可能地保留图像的细节信息。

4. Total Variation(TV)去噪Total Variation(TV)去噪是一种基于偏微分方程的图像去噪方法,它通过最小化图像的总变差来减少图像中的噪声。

在Matlab中,可以使用Image Processing Toolbox中的`imdenoise`函数来实现TV去噪。

MATLAB实现频域平滑滤波以及图像去噪代码

MATLAB实现频域平滑滤波以及图像去噪代码

MATLAB实现频域平滑滤波以及图像去噪代码用MATLA实现频域平滑滤波以及图像去噪代码悬赏分:50 - 解决时间 :2008-11-8 14:21 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在 MATLAE t运行成功,必然给分。

具体的实验指导书上的要求如下 : 频域平滑滤波实验步骤1. 打开 Matlab 编程环境 ;2. 利用’imread '函数读入图像数据;3. 利用' imshow' 显示所读入的图像数据 ;4. 将图像数据由' uint8 ' 格式转换为' double ' 格式,并将各点数据乘以 (-1)x+y 以便 FFT 变换后的结果中低频数据处于图像中央;5. 用' fft2 ' 函数对图像数据进行二维 FFT 变换,得到频率域图像数据;6. 计算频率域图像的幅值并进行对数变换,利用' imshow' 显示频率域图像;7. 在频率图像上去除滤波半径以外的数据 (置 0);8. 计算频率域图像的幅值并进行对数变换,利用' imshow' 显示处理过的频域图像数据;9. 用' ifft2 ' 函数对图像数据进行二维 FFT 逆变换,并用' real '函数取其实部,得到处理过的空间域图像数据;10. 将图像数据各点数据乘以 (-1)x+y;11. 利用' imshow' 显示处理结果图像数据;12. 利用' imwrite '函数保存图像处理结果数据。

图像去噪实验步骤 :1. 打开 Matlab 编程环境;2. 利用' imread' 函数读入包含噪声的原始图像数据 ;3. 利用' imshow' 显示所读入的图像数据 ;4. 以 3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声图像进行滤波处理 ;5. 利用' imshow' 显示处理结果图像数据 ;6. 利用' imwrite ' 函数保存图像处理结果数据。

Matlab中的图像降噪算法与技术

Matlab中的图像降噪算法与技术

Matlab中的图像降噪算法与技术摘要随着数字图像处理的快速发展,图像降噪成为实际应用中一个重要的问题。

在本文中,我们将探讨Matlab中的图像降噪算法与技术。

首先,我们将介绍图像降噪的基本原理和方法。

然后,我们将深入研究Matlab中常用的图像降噪算法,包括均值滤波、中值滤波、高斯滤波等。

最后,我们将讨论图像降噪的一些进一步扩展和应用。

一、图像降噪的基本原理和方法图像降噪是指通过一系列算法和技术,减少或去除数字图像中的噪声信号,以使图像更清晰、更易于识别和分析。

图像噪声主要来自于图片采集过程中的环境噪声、传感器噪声以及信号传输中的干扰等。

图像降噪的基本原理是通过对图像进行滤波处理,使噪声信号受到抑制,同时尽量保留图像的有用信息。

常用的图像降噪方法包括空域滤波和频域滤波。

空域滤波是指对图像的像素直接进行操作的滤波方法,例如均值滤波、中值滤波等。

频域滤波是指将图像转换到频域进行处理的滤波方法,例如傅里叶变换和小波变换。

二、Matlab中常用的图像降噪算法1. 均值滤波均值滤波是一种最简单、最常用的图像降噪方法。

它通过计算像素周围邻域内像素的平均值,将当前像素的值替换为该平均值。

在Matlab中,我们可以使用imfilter函数来实现均值滤波。

具体步骤如下:(1)读取图像,并将其转换为灰度图像。

(2)选择适当的滤波器大小和模板类型。

(3)使用imfilter函数进行滤波处理。

(4)显示并保存结果图像。

2. 中值滤波中值滤波是一种非线性图像滤波方法,它通过将像素周围邻域内像素的灰度值进行排序,然后选择中间值作为当前像素的灰度值。

这种方法对于椒盐噪声等脉冲性噪声有很好的抑制效果。

在Matlab中,我们可以使用medfilt2函数来实现中值滤波。

3. 高斯滤波高斯滤波是一种线性平滑滤波方法,它通过将像素周围邻域内的像素值与高斯函数进行加权平均来实现图像降噪。

在Matlab中,我们可以使用fspecial和imfilter函数来实现高斯滤波。

【谷速软件】matlab源码-图像去噪算法

【谷速软件】matlab源码-图像去噪算法

1、对于Circuit.jpg图像,这里采用中值滤波算法对其进行去噪。

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。

中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图象的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图象不宜采用中值滤波的方法。

实现方法:1:通过从图像中的某个采样窗口取出奇数个数据进行排序2:用排序后的中值取代要处理的数据即可函数B=medfilt2(A,[M,N])实现对二维矩阵A的中值滤波,每一个输出像素包含输入图像中相应像素周围的M*N个相邻像素点的平均值,medfilt2 将图像的边缘用值为0的像素填补,同时用到了ordfilt2函数,该函数可进行二维统计顺序过滤。

当模板值为3时,虽然图像非常清楚,但明显有几个特别亮的点存在,若加大模板值,亮点的亮度减弱,图像的清晰度减弱,当中值滤波的模板选为7x7的时候椒盐噪声的处理效果最好,但是同时它也模糊了边缘的清晰度,因此使用了自适应中值滤波器,目的是为了区分椒盐噪声和边缘颜色的突变。

程序源代码:clearI=imread('E:\新建文件夹 \图像处理作业\Circuit.jpg');subplot(2,3,1),title('原图像'),xlabel('a'),imshow(I)subplot(2,3,1),imshow(I);title('原图像'),xlabel('a')J=medfilt2(I,'symmetric');subplot(2,3,2),imshow(J);title('3X3 中值滤波'),xlabel('b')K=medfilt2(I,[5,5],'symmetric');subplot(2,3,3),imshow(K);title('重复使用中值滤波'),xlabel('c')O=medfilt2(J,[5,5],'symmetric');subplot(2,3,4),imshow(O);title('5X5 中值滤波'),xlabel('d')O=medfilt2(J,[7,7],'symmetric');subplot(2,3,5),imshow(O);title('7X7 中值滤波'),xlabel('e')其处理后的图像为:2、对于图像boy_noisy.gif,这里采用巴特沃斯低通滤波器算法去噪即可得到很好的效果。

数字图像去噪典型算法及matlab实现

数字图像去噪典型算法及matlab实现

图像去噪是数字图像处理中的重要环节与步骤。

去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。

图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。

有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。

中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。

其算法简单,时间复杂度低,但其对点、线与尖顶多的图像不宜采用中值滤波。

很容易自适应化。

Wiener维纳滤波:使原始图像与其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。

对于去除高斯噪声效果明显。

实验一:均值滤波对高斯噪声的效果代码I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2); imshow(J);title('加入高斯噪声之后的图像');%采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9 subplot(2,3,3);imshow(K1);title('改进后的图像1');subplot(2,3,4); imshow(K2);title('改进后的图像2');subplot(2,3,5);imshow(K3);title('改进后的图像3');subplot(2,3,6);imshow(K4);title('改进后的图像4');PS:filter2用法fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。

MATLAB仿真实现图像去噪

MATLAB仿真实现图像去噪

MATLAB仿真实现图像去噪本文概述了小波阈值去噪的基本原理。

对常用的几种阈值去噪方法进行了分析比较和仿真实现。

最后结合理论分析和实验结果,讨论了一个完整去噪算法中影响去噪性能的各种因素。

为实际的图像处理中,小波阈值去噪法的选择和改进提供了数据参考和依据。

、图像是一种重要的信息源,通过图像处理可以帮助人们了解信息的内涵。

数字图像噪声去除涉及光学系统、微电子技术、计算机科学、数学分析等领域,是一门综合性很强的边缘科学,如今其理论体系已十分完善,且其实践应用很广泛,在医学、军事、艺术、农业等都有广泛且成熟的应用。

MATLAB是一种高效的工程计算语言,在数值计算、数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。

MATLAB是一种向量语言,它非常适合于进行图像处理。

关键字:小波变换图像去噪阈值MATLABThe Research of Image De-noising Based on Matlab[Abstract] Image is one kind of important information source, may help People through the imagery processing to understand the information the connotation. The digital image de-noise involves domains and so on optical system, microelectronic technology, computer science,mathematical analysis, it’s a very comprehensive interdisciplinary science, now its practice application is very widespread: In the medicine, the military, art, the agriculture and all have very extensive and ripe using so on. MATLAB is one kind of highly effective engineering calculation language,in aspects and so on value computation, data processing, imagery processing, neural network, wavelet analysis all has the widespread application.This article has stated the theory of wavelet threshold denoising ,then done comparing experiments using several good threshold denoising methods.Finally according to the theory analysis and simulation results,the paper discusses several kinds of factors which affect the denoising capability in a complete denoising algorithm.That provides the date reference of threshold denoising methods in actual image process.Keywords: Wavelet transformation; Image denoising; Wavelet threshold; MATLAB目录前言第一章图像与噪声 (1)1.1 噪声图像模型及噪声特性 (1)1.1.1 含噪模型 (1)1.1.2 噪声特性 (1)1.2 图像质量的评价 (2)1.2.1 主观评价 (2)1.2.2 客观评价 (2)第二章图像去噪方法 (4)2.1 传统去噪方法 (4)2.1.1 空域滤波 (4)2.1.2 频域低通滤波法 (5)2.2 小波去噪 (8)2.2.1 小波去噪的发展历程 (8)2.2.2 小波去噪的研究现状 (9)2.2.3 小波去噪方法 (11)第三章小波变换理论基础 (12)3.1 从傅里叶变换到小波变换 (12)3.2 小波理论的基本概念 (13)3.2.1 连续小波变换 (13)3.2.2 离散小波变换 (15)第四章小波阈值去噪及MATLAB仿真 (18)4.1 小波阈值去噪概述 (18)4.1.1 阈值去噪法简述 (18)4.2 基于MATLAB的小波去噪函数简介 (19)4.3 小波去噪对比试验 (20)4.3.1 实验信号的产生 (20)4.3.2 各参数下的去噪效果对比 (22)4.4 利用小波去噪函数去除给定图像中的噪声 (25)总结与展望(本行顶头,下面的红色字去掉) (28)1 全文工作总结 (28)2 工作展望 (28)致谢语 (30)参考文献 (31)附录 (34)前言图像在生成和传输过程中常常因受到各种噪声的干扰和影响而使图像降质,这对后续图像的处理(如分割、压缩和图像理解等)将产生不利影响。

如何使用Matlab进行频域滤波

如何使用Matlab进行频域滤波

如何使用Matlab进行频域滤波频域滤波是一种常用的信号处理技术,它通过将信号从时域转换到频域,对频率响应进行调整,并将信号再转换回时域,以实现对信号的滤波处理。

在Matlab 中,我们可以利用其内置的函数和工具箱来实现频域滤波,本文将介绍如何使用Matlab进行频域滤波的基本步骤和常用方法。

一、频域滤波的基本原理频域滤波是基于傅里叶变换的信号处理技术,其基本原理是将信号从时域转换到频域,通过对频率响应进行调整,再将信号从频域转换回时域。

傅里叶变换是一种将信号从时域表示转换为频域表示的数学工具,它将一个信号表示为一系列正弦和余弦函数的线性叠加,可以将信号的频率特性和幅度特性直观地展示出来。

频域滤波通常包括两个步骤:频谱分析和滤波操作。

首先,我们需要对信号进行频谱分析,获取信号在频域的频率特性。

然后,根据需要对频谱进行调整,例如去除噪声、增强特定频率成分等。

最后,将调整后的频谱进行反变换,将信号从频域转换回时域,得到滤波后的信号。

二、利用Matlab进行频域滤波的基本步骤使用Matlab进行频域滤波的基本步骤包括信号读取、傅里叶变换、调整频谱、反变换和结果显示等过程。

下面将详细介绍每个步骤的操作方法。

1. 信号读取首先,我们需要将待处理的信号读取到Matlab中。

Matlab提供了多种函数用于读取不同格式的信号,例如`audioread()`用于读取音频文件、`imread()`用于读取图像文件等。

我们可以根据需要选择合适的函数进行信号读取。

2. 傅里叶变换在读取信号后,我们可以利用Matlab的内置函数`fft()`进行傅里叶变换。

该函数可以将信号从时域转换到频域,并返回频域表示的复数结果。

傅里叶变换后的结果通常包括实部和虚部两个部分,我们可以通过取模运算获取频谱的幅度特性。

3. 调整频谱在获取频谱后,我们可以根据需要对频谱进行调整。

常见的操作包括滤波、增强、降噪等。

例如,如果我们需要滤除一定频率范围内的噪声,可以将该频率范围内的频谱幅度设置为0;如果我们需要增强某个频率成分,可以将该频率对应的幅度进行放大。

Matlab中的信号滤波与信号降噪技术

Matlab中的信号滤波与信号降噪技术

Matlab中的信号滤波与信号降噪技术1. 引言信号滤波和信号降噪是数字信号处理中的重要内容。

在现实世界中,许多信号都受到噪声的干扰,而不经处理的信号难以提取有效信息。

因此,信号滤波和降噪技术的研究对于解决实际问题具有重要意义。

Matlab作为一种强大的数学和信号处理工具,提供了丰富的信号滤波和降噪函数,本文将介绍Matlab中常用的信号滤波和降噪技术,并通过实例演示其应用。

2. 信号滤波技术信号滤波是通过改变信号的频率特性或时间特性来实现对信号的处理。

在Matlab中,有各种滤波器设计和滤波函数可供选择,如FIR、IIR等。

2.1 FIR滤波器FIR滤波器是一种常见的信号滤波器,其特点是稳定、易于设计和实现。

在Matlab中,可以使用fir1、fir2等函数进行FIR滤波器的设计和实现。

例如,我们可以使用fir1函数设计一个低通滤波器,将其应用于信号数据,并绘制出滤波前后的信号波形。

2.2 IIR滤波器IIR滤波器是另一种常见的信号滤波器,其特点是具有较高的滤波效果和更复杂的设计过程。

在Matlab中,可以使用butter、cheby1和cheby2等函数进行IIR滤波器的设计和实现。

通过选择不同的滤波器类型和滤波器阶数,可以实现不同的滤波效果和频率响应。

3. 信号降噪技术信号降噪是通过消除或减小信号中的噪声来提取有效信号信息的过程。

在Matlab中,有许多信号降噪技术可供选择,如小波降噪、均值滤波、中值滤波等。

3.1 小波降噪小波降噪是一种基于小波变换的信号降噪方法。

其基本原理是将信号分解成不同的频率成分,并通过设置阈值将较小的细节系数置零,从而实现滤除噪声的目的。

在Matlab中,可以使用wdenoise函数进行小波降噪操作。

例如,我们可以使用db4小波基对信号进行多层小波分解,并通过设置阈值,将较小的细节系数置零,然后再进行小波重构,从而实现信号的降噪处理。

3.2 均值滤波均值滤波是一种非常简单但有效的信号降噪方法。

Matlab中的图像去噪技巧概述

Matlab中的图像去噪技巧概述

Matlab中的图像去噪技巧概述近年来,随着数字图像处理的广泛应用,图像去噪成为了一个重要而热门的研究方向。

在实际应用中,由于图像采集设备的品质、传输媒介的干扰以及图像自身的特性等因素,图像中常常存在着各种噪声,这些噪声会对图像的质量和信息提取造成很大影响。

因此,研究和应用图像去噪技巧成为了提高图像质量和信号处理的关键步骤之一。

Matlab作为图像处理领域广泛使用的工具之一,提供了许多强大的图像处理函数和工具箱,很多图像去噪技巧也可以通过Matlab进行实现。

下面将对Matlab中常用的图像去噪技巧进行概述和介绍。

一、空域图像去噪技巧1. 中值滤波中值滤波是一种简单而有效的空域图像去噪技巧,其原理是使用像素周围邻域内的中值来代替当前像素的值。

这种方法适用于去除椒盐噪声和脉冲噪声,对保留图像细节有一定的效果。

2. 均值滤波均值滤波是一种简单的空域图像去噪技巧,其原理是计算像素周围邻域内像素的平均值,然后将当前像素的值替换为该平均值。

这种方法适用于去除高斯噪声和均匀噪声,但对于椒盐噪声和脉冲噪声的效果较差。

3. 高斯滤波高斯滤波是一种基于高斯模板的线性滤波方法,通过对像素周围邻域内的像素值进行加权平均来达到去噪效果。

这种方法适用于去除高斯噪声,并且在保留图像细节方面比均值滤波效果更好。

二、频域图像去噪技巧1. 傅里叶变换去噪傅里叶变换是一种将信号从时域转换到频域的方法,在频域进行去噪操作后再进行逆傅里叶变换可得到去噪后的图像。

这种方法适用于去除频率特性明显的噪声。

2. 小波变换去噪小波变换是一种多尺度的信号分析方法,能够将信号分解为不同的频带,并对每个频带进行去噪处理。

这种方法适用于去除不同尺度的噪声,并且在保留图像细节方面有一定的优势。

三、专用图像去噪技巧1. 自适应中值滤波自适应中值滤波是一种根据像素邻域内像素的灰度变化情况来动态选择滤波器尺寸的方法,能够在一定程度上保留图像细节,并有效去除椒盐噪声和脉冲噪声。

Matlab编程实现图像增强与去噪

Matlab编程实现图像增强与去噪

Matlab中为我们提供了大量的函数,以方便我们对设计的算法进行验证,方便我们进行科学研究等等。

使用Matlab处理数字图像也是相当方便的,它给我们提供了很多函数,如读取(imread)、显示(imshow)、存储(imwrite)、直方图均衡化(histeq)......,相当丰富的函数。

图像增强使用直方图均衡化方法,利用Matlab的histeq函数实现。

使用Matlab 自带函数加入椒盐噪声,分别使用低通滤波、中值滤波、同态滤波进行去噪。

下面给出Matlab代码,涉及到的函数如有不清楚的,可以在Matlab命令窗口输入help 函数名,或者doc 函数名,查看帮助。

使用本程序,请新建一个.m文件,并命名为:imenhden.m,保存,将原始的图片与此m文件都放在Matlab当前工作目录下,然后在命令窗口输入:imenhden( 'lena.png');回车即可,其中lena.png为原始图片名。

function [ ] = imenhden( fineName )%% 读入图像I = imread(fineName);figure(1);subplot(2,2,1);imshow(I);title('原图像');%% 直方图均衡化m = 16;H = histeq(I,m);subplot(222);imshow(H,[]);title('均衡后的图像');subplot(223);hist(double(I),m);title('直方图');subplot(224);hist(double(H),m)title('均衡后的直方图');%% 噪声与滤波figure(2)subplot(3,2,1);imshow(I);title('原图像');% 加入椒盐噪声并显示II = imnoise(I,'salt& pepper'); subplot(3,2,2);imshow(II);title('加入椒盐噪声后的图像'); % 低通滤波平滑[B,A] = butter(6,0.2,'low');J = filter(B,A,double(II)); subplot(3,2,3);imshow(J,[]);title('低通滤波平滑');% 中值滤波平滑J = medfilt2(II);subplot(3,2,4);imshow(J,[]);title('中值滤波平滑');% 同态滤波[I0,M] = imread(fineName);%I0 = II;M=[];I1 = log(double(I0)+1);I2 = fft2(I1);N=2;D0=0.05*pi;rh=0.8;r=0.5; [row,col]=size(I2);for m=1:rowfor n=1:colD1(m,n)=sqrt(m^2+n^2);H(m,n)=r+(rh/(1+(D0/D1(m,n))^(2*N))); endendI3=I2.*single(H);I4=ifft2(I3);I5=exp(I4)-1;subplot(3,2,5);imshow(I0,M);title('原图像');subplot(3,2,6);imshow(I5,M);title('同态滤波后的图像');end图1 lena原图像使用如上程序对上图lena图像进行处理,分别得到下图所示的结果:图2 图像增强——直方图均衡化图3 图像去噪效果对比图本篇文章来源于Linux公社网站() 原文链接:/Linux/2014-06/103669.htm。

matlab图像去噪程序

matlab图像去噪程序

matlab图像去噪程序function varargout = jiemian(varargin) %返回从函数jiemian.m中得到的参数中变量的数目;传递一个参数中变量的数目给函数jiemian.m。

% JIEMIAN Application M-file for jiemian.fig% FIG = JIEMIAN launch jiemian GUI.% JIEMIAN('callback_name', ...) invoke the named callback.% Last Modified by shijiawei v2.5 24-May-2014 02:45:18if nargin == 0 % LAUNCH GUI %nargin 显示输入变量fig = openfig(mfilename,'reuse'); %打开包含在FIG文件filename.fig中的图形,确保它是可见的并且完全定位在屏幕上。

% Generate a structure of handles to pass to callbacks, and store it.handles = guihandles(fig); %返回一个结构,它包含图像中对象的句柄guidata(fig, handles); %将变量handles存储到fig文件中if nargout > 0 %如果输出变量大于0varargout{1} = fig; %返回figendelseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK %如果varargin{1}是一个字符数组则返回逻辑真(1),否则返回逻辑假(0)。

tryif (nargout) %显示用户提供的输出变量的个数[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard%varargout传递参数中的变量数目elsefeval(varargin{:}); % FEVAL switchyard %**feval函数的求值endcatch %如果出错开始执行catch块disp(lasterr); %%%% lasterr函数查询出错原因。

(完整word版)数字图像去噪典型算法及matlab实现

(完整word版)数字图像去噪典型算法及matlab实现

图像去噪是数字图像办理中的重要环节和步骤。

去噪收效的利害直接影响到后续的图像办理工作如图像切割、边缘检测等。

图像信号在产生、传输过程中都可能会碰到噪声的污染,一般数字图像系统中的常有噪声主要有:高斯噪声〔主要由阻性元器件内部产生〕、椒盐噪声〔主若是图像切割引起的黑图像上的白点噪声或光电变换过程中产生的泊松噪声〕等;目前比较经典的图像去噪算法主要有以下三种:均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。

有效控制加性噪声,但简单引起图像模糊,能够对其进行改良,主要避开对光景边缘的圆滑办理。

中值滤波:基于排序统计理论的一种能有效控制噪声的非线性圆滑滤波信号办理技术。

中值滤波的特点即是第一确定一个以某个像素为中心点的邻域,一般为方形邻域,也能够为圆形、十字形等等,尔后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口搬动时,利用中值滤波能够对图像进行圆滑办理。

其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。

很简单自适应化。

Wiener 维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,依照局部方差来调整滤波器收效。

对于去除高斯噪声收效明显。

实验一:均值滤波对高斯噪声的收效代码I=imread('C:\Documents and桌面\1.gif');%读取图像J=imnoise(I,'gaussian',0,0.005);%参加均值为 0 ,方差为的高斯噪声subplot(2,3,1);imshow(I);title(' 原始图像 ');subplot(2,3,2); imshow(J);title(' 参加高斯噪声此后的图像');%采用 MATLAB 中的函数 filter2 对受噪声搅乱的图像进行均值滤波K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3K2=filter2(fspecial('average',5),J)/255;%模板尺寸为 5K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9subplot(2,3,3);imshow(K1);title('改良后的图像1');subplot(2,3,4); imshow(K2);title('改良后的图像2');subplot(2,3,5);imshow(K3);title('改良后的图像3');subplot(2,3,6);imshow(K4);title(' 改良后的图像 4');PS:filter2 用法fspecial 函数用于创立预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数 type 拟定算子种类, parameters 指定相应的参数,详尽格式为:type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3] 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用MATLAB实现频域平滑滤波以及图像去噪代码
悬赏分:50 - 解决时间:2008-11-8 14:21
是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB上运行成功,必然给分。

具体的实验指导书上的要求如下:
频域平滑滤波实验步骤
1. 打开Matlab 编程环境;
2. 利用’imread’函数读入图像数据;
3. 利用’imshow’显示所读入的图像数据;
4. 将图像数据由’uint8’格式转换为’double’格式,并将各点数据乘以
(-1)x+y 以便FFT 变换后的结果中低频数据处于图像中央;
5. 用’fft2’函数对图像数据进行二维FFT 变换,得到频率域图像数据;
6. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图
像;
7. 在频率图像上去除滤波半径以外的数据(置0);
8. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示处理过的
频域图像数据;
9. 用’ifft2’函数对图像数据进行二维FFT 逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据;
10. 将图像数据各点数据乘以(-1)x+y;
11. 利用’imshow’显示处理结果图像数据;
12. 利用’imwrite’函数保存图像处理结果数据。

图像去噪实验步骤:
1. 打开Matlab 编程环境;
2. 利用’imread’函数读入包含噪声的原始图像数据;
3. 利用’imshow’显示所读入的图像数据;
4. 以3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声
图像进行滤波处理;
5. 利用’imshow’显示处理结果图像数据;
6. 利用’imwrite’函数保存图像处理结果数据。

即使不是按这些步骤来的也没关系,只要是那个功能,能实现就OK,谢谢大家
%%%%%%%%spatial frequency (SF) filtering by low pass filter%%%%%%%%
% the SF filter is unselective to orientation (doughnut-shaped in the SF % domain).
[FileName,PathName,FilterIndex] = uigetfile ;
filename = fullfile(PathName, FileName) ;
[X map] = imread(filename, fmt); % read image
L = double(X); % transform to double
%%%%%%%%%%%%% need to add (-1)x+y to L
% calculate the number of points for FFT (power of 2)
fftsize = 2 .^ ceil(log2(size(L)));
% 2d fft
Y = fft2(X, fftsize(1), fftsize (2));
Y = fftshift(Y);
% obtain frequency (cycles/pixel)
f0 = floor([m n] / 2) + 1;
fy = ((m: -1: 1) - f0(1) + 1) / m;
fx = ((1: n) - f0(2)) / n;
[mfx mfy] = meshgrid(fx, fy);
% calculate radius
SF = sqrt(mfx .^ 2 + mfy .^ 2);
% SF-bandpass and orientation-unselective filter
filt = SF > k0;
A_filtered = filt .* A; % SF filtering
L_filtered = real(ifft2(ifftshift(A_filtered))); % IFFT
L_filtered = L_filtered(1: size(L, 1), 1: size(L, 2)); %%%%%%%%%%need to add (-1)x + y to L_filtered
% show
figure(1);
clf reset;
colormap gray;
% plot image
subplot(2, 2, 1);
imagesc(L);
colorbar;
axis square;
set(gca, 'TickDir', 'out');
title('original image');
xlabel('x');
ylabel('y');
imwrite(L, fullfile(FilePath, 'original image.bmp'), 'bmp') ;
% plot amplitude
A = abs(A);
A = log10(A);
% spectral amplitude
subplot(2, 2, 2);
imagesc(fx, fy, A);
axis xy;
axis square;
set(gca, 'TickDir', 'out');
title('amplitude spectrum');
xlabel('fx (cyc/pix)');
ylabel('fy (cyc/pix)');
imwrite(A, fullfile(FilePath, 'amplitude spectrum.bmp'), 'bmp') ;
% filter in the SF domain
subplot(2, 2, 3);
imagesc(fx, fy, filt);
axis xy;
axis square;
set(gca, 'TickDir', 'out');
title('filter in the SF domain');
xlabel('fx (cyc/pix)');
ylabel('fy (cyc/pix)');
imwrite(filt, fullfile(FilePath, 'filter in SF.bmp'), 'bmp') ;
% filtered image
subplot(2, 2, 4);
imagesc(L_filtered);
colorbar;
axis square;
set(gca, 'TickDir', 'out');
title('filtered image');
xlabel('x');
ylabel('y');
imwrite(filtered, fullfile(FilePath, 'filtered image.bmp'), 'bmp');
%%%%%%%%%%%%%%%%%median filter%%%%%%%%%%%%%%%%
[FileName,PathName,FilterIndex] = uigetfile ;
filename = fullfile(PathName, FileName) ;
[LNoise map] = imread(filename, fmt); % read image
L = medfilt2(LNoise, [3 3]); % remove the noise with 3*3 block
figure ;
imshow(LNoise) ;
title('image before fitlering') ;
figure
imshow(L)
title('filtered image') ;
imwrite(FilePath, 'filtered image.bmp', bmp)
13回答者: 820802461。

相关文档
最新文档