MATLAB 图像滤波器

这篇具有很好参考价值的文章主要介绍了MATLAB 图像滤波器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 实验目的 

–  继续熟悉仿真工具MATLAB

–  巩固图像读取与显示的方法

–  掌握给图像添加噪声的方法

–  掌握图像空间域的滤波方法

–  掌握图像频率域的滤波方法

  • 实验原理
  1. 空间域平滑操作

(1)高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。

(2)椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。

(3)均值滤波算法是比较常用,也比较简单的滤波算法。在滤波时,将N个周期的采样值计算平均值,算法非常简单。当N取值较大时,滤波后的信号比较平滑,但是灵敏度差;相反N取值较小时,滤波平滑效果差,但灵敏度好。

(4)中值滤波是一种典型的非线性滤波,是基于排序统计理论的一种能够有效抑制噪声的非线性信号处理技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值,让周围的像素值接近真实的值从而消除孤立的噪声点。该方法在取出脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。这些优良特性是线性滤波所不具备的。

  1. 空间域锐化操作

(1)Sobel算子是像素图像边缘检测中最重要的算子之一。在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值。在图像的任何一点使用此算子,将会产生该点对应的梯度矢量或是其法矢量。

(2)Prewitt算子是一种一阶微分算子的边缘检测,利用像素点上下、左右邻点的灰度差,在边缘处达到极值检测边缘,去掉部分伪边缘,对噪声具有平滑作用 。其原理是在图像空间利用两个方向模板与图像进行邻域卷积来完成的,这两个方向模板一个检测水平边缘,一个检测垂直边缘。

(3)Laplacian算子是n维欧几里得空间中的一个二阶微分算子,定义为梯度grad()的散度div()。因此如果f是二阶 可微的实函数,则f的laplacian算子定义为:f的拉普拉斯算子也是笛卡尔坐标系xi中的所有非混合二阶偏导数求和:作为一个二阶 微分算子,拉普拉斯算子把C函数映射到C函数,对于k ≥ 2。

3.图像的频域处理

(1)低通滤波

低通滤波可以简单的认为:设定一个频率点,当信号频率高于这个频率时不能通过,在数字信号中,这个频率点也就是截止频率,当频域高于这个截止频率时,则全部赋值为0。因为在这一处理过程中,让低频信号全部通过,所以称为低通滤波。在数字图像处理领域,从频域看,低通滤波可以对图像进行平滑去噪处理。

(2)高通滤波

高通滤波是只对低于某一给定频率以下的频率成分有衰减作用,而允许这个截频以上的频率成分通过,并且没有相位移的滤波过程。主要用来消除低频噪声,也称低截止滤波器。

​高通滤波属于[频率域]滤波,它保留高频,抑制低频,是[图像锐化]的一种方式。

(3)傅里叶变换

频率中最典型的就是傅立叶变换,傅立叶变换能把图像从空间域变换到只包含不同频率信息的频率域,原图像上的灰度突变部位、图像结构复杂的区域、图像细节及干扰噪声等信息集中在高频区,而原图像上灰度变化平缓部位的信息集中在低频区。

三、实验环境

– Windows XP/ Windows 7

– Matlab 7.0.1/ Matlab R2008

四、实验内容与步骤

(1)空间域平滑操作

 读取并显示一幅灰度图像;

 对原图像分别添加高斯噪声和椒盐噪声,并显示添加噪声之后的图像;调整高斯噪声和椒盐噪声的参数,比较不同参数之间噪声的区别;

 针对两幅含有噪声的图像,分别采用3*3、5*5、7*7平均模板和高斯模板进行平滑操作,观察、记录并比较实验结果;

 针对两幅含有噪声的图像,采用中值滤波方法进行平滑处理,观察并记录实验结果。并将之与上一步骤的实验结果相比较,得出相关结论。

  1. 读取peppers图像,加入标准差为0.1的高斯噪声

MATLAB 图像滤波器

加入标准差为0.3的高斯噪声:

MATLAB 图像滤波器

标准差越高,图像的噪声越大,颗粒感更强。

  1. 加入密度不同的椒盐噪声:

加入密度分别为0.1、0.2、0.3的椒盐噪声:

MATLAB 图像滤波器

MATLAB 图像滤波器

加入的椒盐噪声密度越大,图像越像“电视花了”,也就是“椒”和“盐”分布的更密集了。

  1. 对比

MATLAB 图像滤波器

椒盐噪声是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。

  1. 采用3*3、5*5、7*7平均模板进行平滑操作

MATLAB 图像滤波器

  1. 采用高斯模板进行平滑操作

读入cameraman图像,对其采用高斯模板进行平滑操作:

MATLAB 图像滤波器

高斯噪声的幅值近似正态分布,但是分布在每个点上。因为所有的点都被污染所以不能中值滤波选不到正确的干净的点。因为高斯噪声服从正态分布所以均值噪声为零可以选用均值滤波处理噪声。

  1. 针对两幅含有噪声的图像采用中值滤波方法进行平滑处理

同样对于cameraman图像,采用中值滤波方法进行平滑:

MATLAB 图像滤波器

MATLAB 图像滤波器

对于含有椒盐噪声的图像,适合中值滤波。椒盐噪声是幅值近似相等但是随机的分布在不同位置,图中既有污染的点,也有干净的点。图中噪声的均值不为零,所以不适合均值滤波。正因为图中有干净的点也有污染的点,所以中值滤波可以用干净的点代替污染的点。

(2)空间域锐化操作

 读取并显示一幅灰度图像;

 分别采用Prewitt水平/垂直边缘检测算子,Sobel水平/垂直边缘检测算子对原图像进行锐化操作,比较实验结果;

 采用拉普拉斯模板进行锐化处理,与上一步骤实验结果相比较。

  1. 采用Prewitt算子进行锐化

I=imread(‘saturn.tif’);
I1=rgb2gray(I); %将彩色图变成灰色图
subplot(131);
imshow(I1),title(‘原图’);
model=[-1,0,1;
-1,0,1;
-1,0,1];
[m,n]=size(I1);
I2=I1;
for i=2:m-1
for j=2:n-1
tem=I1(i-1:i+1,j-1:j+1);
tem=double(tem).*model;

I2(i,j)=sum(sum(tem));
end
end
subplot(132),
imshow(uint8(I2)),title(‘边缘提取后的图像’);
I2=I2+I1;
subplot(133),
imshow(I2),title(‘图像锐化’);

MATLAB 图像滤波器

2.采用Sobel算子进行锐化

I=imread(‘saturn.png’); %读取图像
I1=rgb2gray(I); %将彩色图变成灰色图
imshow(I1),title(‘原图’);

model=[-1,0,1;
       -2,0,2;
       -1,0,1];
[m,n]=size(I1);
I2=double(I1);

for i=2:m-1
    for j=2:n-1
        I2(i,j)=I1(i+1,j+1)+2*I1(i+1,j)+I1(i+1,j-1)-I1(i-1,j+1)-2*I1(i-1,j)-I1(i-1,j-1);
    end
end
figure,
imshow(I2),title(‘边缘提取后的图像’);
I2 = I2 + double(I1);
figure,
imshow(uint8(I2)),title(‘锐化后的图像’);

MATLAB 图像滤波器

3. 采用拉普拉斯模板进行锐化处理

I=imread(‘saturn.png’); 
I1=mat2gray(I);%实现图像矩阵的归一化操作
[m,n]=size(I1);
newGrayPic=I1;%为保留图像的边缘一个像素
LaplacianNum=0;%经Laplacian算子计算得到的每个像素的值
LaplacianThreshold=0.2;%设定阈值
for j=2:m-1 %进行边界提取
    for k=2:n-1
        LaplacianNum=abs(4*I1(j,k)-I1(j-1,k)-I1(j+1,k)-I1(j,k+1)-I1(j,k-1));
        if(LaplacianNum > LaplacianThreshold)
            newGrayPic(j,k)=255;
        else
            newGrayPic(j,k)=0;
        end
    end
end
I2=rgb2gray(I); %将彩色图变成灰色图
subplot(131),imshow(I2),title(‘原图’);
subplot(132),
imshow(newGrayPic);
title(‘拉普拉斯边缘提取后’)
t=I1+newGrayPic;
subplot(133),imshow(t),title(‘锐化后的图像’);

MATLAB 图像滤波器

对比:Sobel算子能够锐化的边缘信息较强;

Prewitt算子有一定的抗干扰性,图像效果比较干净;

Laplacian算法是线性二次微分算子,与梯度算子一样具有旋转不变性,从而满足了不同方向的图像边缘锐化要求,其获得的边界比较细,包括较多的细节信息,但边界不清晰。

– (3)图像的频域处理

 利用循环语句,自己构建理想低通滤波器;

I = imread(‘cameraman.tif’);
I=rgb2gray(I);
figure(1);
subplot(221),imshow(I);
title(‘原图像’);
I=imnoise(I,’gaussian’);%%加入高斯白噪声
subplot(222),imshow(I);
title(‘加入噪声后’);
s=fftshift(fft2(I));
subplot(223), imshow(log(abs(s)),[]); 
title(‘傅里叶变换频谱图’);
[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d=50;
for i=1:a 
    for j=1:b 
        distance=sqrt((i-a0)^2+(j-b0)^2);
        if distance<=d
            h=1;
        else
            h=0;
        end
        s(i,j)=h*s(i,j);
    end
end

s=uint8(real(ifft2(ifftshift(s))));
subplot(224),imshow(s);
title(‘理想低通滤波所得图像’); 

MATLAB 图像滤波器

对一幅灰度图像进行傅里叶变换,显示其频谱图;

MATLAB 图像滤波器

 对一幅灰度图像作频率域理想低通滤波,调整滤波器半径,观察并记录不同结果,分析原因;

d0=50;  %阈值
I=imread(‘cameraman.tif’);
[M ,N]=size(I);

I_f = fft2(double(I));%傅里叶变换得到频谱
I_f=fftshift(I_f);  %移到中间

m_mid=floor(M/2);%中心点坐标
n_mid=floor(N/2);  

h = zeros(M,N);%低通滤波器构造
for i = 1:M
    for j = 1:N
        d = ((i-m_mid)^2+(j-n_mid)^2);
        h(i,j) = exp(-(d)/(2*(d0^2)));      
    end
end

I_lpf = h.*I_f;

I_lpf=ifftshift(I_lpf);    %中心平移回原来状态
I_lpf=uint8(real(ifft2(I_lpf)));  %反傅里叶变换,取实数部分

subplot(1,2,1);imshow(I);title(‘原图’);
subplot(1,2,2);imshow(I_lpf);title(‘低通滤波d=50’);

MATLAB 图像滤波器

MATLAB 图像滤波器

MATLAB 图像滤波器

低频部分主要是灰度平滑区域,高频部分可能是噪声或者图像边缘特征,主要是灰度变化较大区域。通过低通滤波器,滤除高频部分,保留低频部分,可有效去除噪声。被低通滤波的图像比原始图像少尖锐的细节部分而突出平滑过渡部分。

半径越小,图像越模糊,越平滑。

 利用循环语句,自己构建理想高通滤波器;

I = imread(‘cameraman.tif’);
I=rgb2gray(I);
figure(1);
subplot(221),imshow(I);
title(‘原图像’);
I=imnoise(I,’gaussian’);%%加入高斯白噪声
subplot(222),imshow(I);
title(‘加入噪声后’);
s=fftshift(fft2(I));
subplot(223), imshow(log(abs(s)),[]); 
title(‘傅里叶变换频谱图’);
[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d=50;
for i=1:a 
    for j=1:b 
        distance=sqrt((i-a0)^2+(j-b0)^2);
        if distance<=d
            h=0;
        else
            h=1;
        end
        s(i,j)=h*s(i,j);
    end
end

s=uint8(real(ifft2(ifftshift(s))));
subplot(224),imshow(s);
title(‘理想高通滤波所得图像’); 

MATLAB 图像滤波器

 对同一幅灰度图像作频率域理想高通滤波,调整滤波器半径,观察并记录不同结果,分析原因;

d0=30;  %阈值
I=imread(‘cameraman.tif’);
[M ,N]=size(I);

I_f = fft2(double(I));%傅里叶变换得到频谱
I_f=fftshift(I_f);  %移到中间

m_mid=floor(M/2);%中心点坐标
n_mid=floor(N/2);  

h = zeros(M,N);%高斯高通滤波器构造
for i = 1:M
    for j = 1:N
        d = ((i-m_mid)^2+(j-n_mid)^2);
        h(i,j) = 1-exp(-(d)/(2*(d0^2)));      
    end
end

I_lpf = h.*I_f;

I_lpf=ifftshift(I_lpf);    %中心平移回原来状态
I_lpf=uint8(real(ifft2(I_lpf)));  %反傅里叶变换,取实数部分

subplot(1,2,1);imshow(I);title(‘原图’);
subplot(1,2,2);imshow(I_lpf);title(‘高通滤波d=30’);

MATLAB 图像滤波器

MATLAB 图像滤波器

MATLAB 图像滤波器

高通滤波器使高频通过而使低频衰减,被高通滤波的图像比原始图像少灰度级的平滑过渡而突出边缘等细节部分。

半径约小,图像边缘更明显。

六、实验心得与体会

本次实验一共分为了三个不同的部分,图像的平滑、锐化和频域处理。虽说划分出了三个部分,但他们之间是紧密联系的。

1.在学习对图像平滑操作时,先学习了如何给图像加入噪声,认识到高斯噪声和椒盐噪声的区别,以及不同参数下两种噪声的变化和对比。接着学习了用均值滤波和中值滤波对含噪声的图像进行平滑处理,发现了这两种不同的平滑方式各自针对不同的噪声有更好的效果:对于含有椒盐噪声的图像,适合中值滤波;对于含有高斯噪声的图像,适合均值滤波。认识到了为了展现更好的效果,要选取合适的图像素材进行处理,不然体会不到明显的区别。

2.接着学习了三种不同的算子对图像的锐化处理,切身感受了不同的算子对图像锐化的侧重点不同,比如Sobel算子能够锐化的边缘信息较强,在今后应用中如果想提取图像的边缘信息最好选用Sobel算子。对于不同的需求,我们应该选用合适的方法,避免浪费时间。

3.对于图像频率域的操作,通过构建理想低通和高通滤波器,体会到了两种不同的滤波方法对图像处理注重的部分是不同的。在写循环语句的时候也体现了出来,当构造好理想低通滤波器之后只需要把圆的0和1值调换就可得到理想高通滤波器。体会到了经过傅里叶变换将图像从空间域转换到频率域之后再处理的巧妙,与课本上的知识再次结合,学到了很多。文章来源地址https://www.toymoban.com/news/detail-445828.html

到了这里,关于MATLAB 图像滤波器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab图像处理- 高斯低通滤波器

      高斯低通滤波器 高斯低通滤波器是一种 更平滑的一种滤波器 ,高斯低通滤波器完全没有振铃现象,且边缘平滑。 示例代码 利用输入图像,构建一个截止频率为30的高斯低通滤波器的透视图如下图所示。 效果图片

    2024年02月09日
    浏览(42)
  • 图像处理之理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器的matlab实现去噪

    一、前言 在一幅图像中, 低频部分对应图像变化缓慢的部分即图像大致外观和轮廓。高频部分对应图像变换剧烈的部分即图像细节(注意图像的噪声属于高频部分) 。 低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。即 低通滤波的效

    2023年04月09日
    浏览(47)
  • Matlab图像处理频域滤波实现——巴特沃斯低通、高通、带通带阻滤波器

    巴特沃斯滤波器是一种常用于图像处理的滤波器,它在频域中的传递函数具有更加平滑的过渡,相对于理想滤波器来说,巴特沃斯滤波器可以更好地控制截止频率和滤波器的阶数。下面是巴特沃斯滤波器的不同类型的原理简介: 1.原理 (1)巴特沃斯低通滤波(Butterworth Lowp

    2024年04月09日
    浏览(53)
  • 13.1 非线性变化的图像增强和补偿——滤波器对图像作增强提高视觉质量(matlab程序)

    1. 简述        图像的线性变换和非线性变换,逐像素运算就是对图像的没一个像素点的亮度值,通过一定的函数关系,转换到新的亮度值。这个转换可以由函数表示: s = f ( r ) s = f( r )s=f(r) 其中r为原来的像素值,s为新的像素值,通常采用的函数了单调函数进行变换。 线性

    2024年02月12日
    浏览(37)
  • 【图像处理:频率域平滑与锐化】理想滤波器,巴特沃思滤波器,高斯滤波器

    本文主要介绍频率域滤波器,此处的频率域是基于傅立叶变换得出。 在一幅图像中, 低频对应图像变化缓慢的部分 ,即图像大致外观和轮廓。 高频部分对应图像变化剧烈的部分即图像细节 。低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频

    2024年02月04日
    浏览(50)
  • 图像处理之高通滤波器与低通滤波器

    目录 高频与低频区分: 高通滤波器: 1.傅里叶变换: 低通滤波器: 总结:         在了解图像滤波器之前,先谈一下如何区分图像的高频信息和低频信息,所谓高频就是该像素点与周围像素差异较大,常见于一副图像的边缘细节和噪声等;而低频就是该像素点与周围像素

    2023年04月09日
    浏览(46)
  • 【状态估计】粒子滤波器、Σ点滤波器和扩展/线性卡尔曼滤波器研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 扩展卡尔曼滤波 2.2 线性卡尔曼滤波 

    2024年02月09日
    浏览(41)
  • 图像滤波器

    图像噪声         • 图像噪声是图像在获取或是传输过程中受到随机信号干扰,妨碍人们对图像理解及分析处理 的信号。         • 图像噪声的产生来自图像获取中的环境条件和传感元器件自身的质量,图像在传输过程中产 生图像噪声的主要因素是所用的传输信道

    2024年02月16日
    浏览(37)
  • Matlab设置滤波器

    一.matlab滤波器的设计 1.首先打开App,从里面找到滤波器设计工具,或者在命令行输入fadtool打开滤波器设计工具    ResponseType用于选择低通、高通、带通、带阻等类型, 这里选择低通滤波“Lowpass”。图中Design Method用于选择IIR滤波器还是FIR滤波器,这里我们选择IIR滤波器,类型

    2024年02月14日
    浏览(39)
  • 【状态估计】卡尔曼滤波器、扩展卡尔曼滤波器、双卡尔曼滤波器和平方根卡尔曼滤波器研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 本文包括

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包