基于MATLAB的图像去噪与边缘检测技术

基于MATLAB的图像边缘检测系统

2.1课程设计题目

图像去噪与边缘检测技术

2.2课程设计目的

通过本次综合设计,运用已学的课程知识,根据题目要求进行软件的设计和调试,对《图像处理》课程中涉及的算法原理和编程等方面有一定的感性认识和实践操作能力,从而加深对本课程知识点的理解,使学生应用知识能力、设计能力、调试能力以及报告撰写能力等方面有显著提高。

2.3设计要求

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。[1]其目的是提高信息的相对质量,以便提取有用信息。图像边缘检测中的变换属于图像输入-图像输出模式,图像边缘检测是一种超越具体应用的过程,任何为解决某一特殊问题而开发的图像边缘检测新技术或新方法,几乎肯定都能找到其他完全不同的应用领域。图像边缘检测的主要研究内容包括:

(1) 图像获得和抽样,其中通过人眼观察的视野获取图像的问题有:最常用的图像获取装置——电视(TV)摄像机问题,对所获得信号进行独立的采样和数字化就可用数字形式表达景物中全部彩色内容;电荷-耦合装置,用作图像传感器,对景物每次扫描一行,或通过平行扫描获得图像;选择正确的分辨力或采样密度,一幅图像实质上是二维空间中的信号,所以适用于信号处理的法则同样适用于图像边缘检测,在放射学中常常需要高分辨力,要求图像至少达到2048像素×2048像素;灰度量化,图像强度也必须进行数字化,通常以256级(按1字节编码)覆盖整个灰度,一般一幅灰度分辨力为8位,空间分辨力为512像素×512像素的图像需0.25兆字节的存贮容量。

(2) 图像分割,目的是把一个图像分解成它的构成成分,以便对每一目标进行测量。图像分割是一个十分困难的过程。但其测量结果的质量却极大地依赖于图像分割的质量。有两类不同的图像分割方法。一种方法是假设图像各成分的强度值是均匀的并利用这种均匀性;另一种方法寻找图像成分之间的边界,因而是利用图像的不均匀性。主要有直方图分割,区域生长,梯度法等。

(3) 边界查索,用于检测图像中线状局部结构,通常是作为图像分割的一个预处理步骤。大多数图像边缘检测技术应用某种形式的梯度算子,可应用对水平方向、垂直方向或对角线方向的梯度敏感的梯度算子,用它们的复合结果可检测任意方向的边界。

(4) 图像增强和复原,用于改进图像的质量。不同的增强技术可以用于不同的目的,这取决于应用的类型。如果打算直接观察图像,可以增强对比度。如果是为了进一步对图像作数字处理,可以选择分割(一种突出各图像成分之间的边界和线状结构的运算)。该技术可以是整体的或局部的,也可以在某个频域或者空间域中进行。图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。

(5) 图像分类(识别), 图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

(6) 图像变换: 由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像边缘检测中也有着广泛而有效的应用。[2]

3滤波器基本原理

3.1中值滤波器基本原理

中值滤波就是用一个奇数点的移动窗口,将窗口中心点的值用窗口内个点的中值代替。假设窗口内有五点,其值为80、90、200、110、120,那么此窗口内各点的中值即为110。

设有一个一维序列 ,取窗口长度(点数)为m(m为奇数),对其进行中值滤波,就是从输入序列中相继抽出m个数 (其中 为窗口的中心点值, ),再将这m个点按其数值大小排序,取其序号为中心点的那个数作为滤波输出。其公式为:

, (3-1)

例如,有一序列{0,0,3,4,7},则Med{0,0,3,4,7}=3。此列若用平滑滤波,窗口也是取5,那么平滑滤波输出为(0+3+4+0+7)/5=2.8。[3]

3.2高斯滤波器基本原理

高斯滤波是根据高斯函数的形状来选择权值的线性平滑滤波器。高斯平滑滤波器对去除服从正态分布的噪声是很有效果的。一维零均值高斯函数为 。其中,高斯分布参数 决定了高斯滤波器的宽度。对图像来说,常用二维零均值离散高斯函数作平滑滤波器,高斯函数具有5个重要性质:

(1)二维高斯函数具有旋转对称性,即滤波器在各个方向上的平滑程度是相同的。一般来说一幅图像的边缘方向是不知道的。因此,在滤波之前是无法确定一个方向比另一个方向上要更多的平滑的。旋转对称性意味着高斯滤波器在后续的图像处理中不会偏向任一方向。

(2)高斯函数是单值函数。这表明,高斯滤波器用像素邻域的加权均值来代替该点的像素值,而每一邻域像素点的权值是随着该点与中心点距离单调递减的。这一性质是很重要的,因为边缘是一种图像局部特征。如果平滑运算对离算子中心很远的像素点仍然有很大的作用,则平滑运算会使图像失真。

(3)高斯函数的傅立叶变换频谱是单瓣的。这一性质是高斯函数傅立叶变换等于高斯函数本身这一事实的直接推论。图像常被不希望的高频信号所污染,而所希望的图像特征,既含有低频分量,又含有高频分量。高斯函数傅立叶变换的单瓣意味着平滑图像不会被不需要的高频信号所污染,同时保留了大部分所需要的信号。

(4)高斯滤波器的宽度(决定着平滑程度)是由参数σ表证的,而且σ和平滑程度的关系是非常简单的。σ越大,高斯滤波器的频带就越宽,平滑程度就越好。通过调节平滑程度参数σ,可在图像特征分量模糊(过平滑)与平滑图像中由于噪声和细纹理所引起的过多的不希望突变量(欠平滑)之间取得折衷。

(5)由于高斯函数的可分离性,大高斯滤波器可以有效实现。通过二维高斯函数的卷积可以分两步来进行,首先将图像与一维高斯函数进行卷积,然后将卷积的结果与方向垂直的相同一维高斯函数进行卷积。因此,二维高斯滤波的计算量随滤波模板宽度成线性增长而不是成平方增长。这些性质使得它在早期的图像处理中特别有用,表明高斯平滑滤波器无论在空间域还是在频率域都是十分有效的低通滤波器。[4]

4边缘检测

4.1 边缘检测定义

所谓图像边缘(Edlge)是指图像局部特性的不连续性,例如,灰度级的突变,颜色的突变,纹理结构的突变等。边缘广泛存在于目标与目标、物体与背景、区域与区域(含不同色彩)之间,它是图像分割所依赖的重要特征。本为主要讨论几种典型的图像灰度值突变的边缘检测方法,其原理也是用于其他特性突变的边缘检测。

图像的边线通常与图像灰度的一阶导数的不连续性有关。图像灰度的不连续性可分为两类:阶跃不连续,即图像灰度再不连续出的两边的像素的灰度只有明显的差异,如图1.1所示,线条不连续,即图像灰度突然从一个值变化到另一个值,保持一个较小的行程又返回到原来的值。在实际中,阶跃和线条边缘图像是较少见的,由于空间分辨率(尺度空间)、图像传感器等原因会使阶跃边缘变成斜坡形边缘,线条边缘变成房顶形边缘。它们的灰度变化不是瞬间的而是跨越一定距离的。

4.2 图像边缘检测算法的研究内容

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。其目的是提高信息的相对质量,以便提取有用信息。图像边缘检测中的变换属于图像输入-图像输出模式,图像边缘检测是一种超越具体应用的过程,任何为解决某一特殊问题而开发的图像边缘检测新技术或新方法,几乎肯定都能找到其他完全不同的应用领域。[5] ,图像边缘检测的主要研究内容包括:

(1) 图像获得和抽样,其中通过人眼观察的视野获取图像的问题有:最常用的图像获取装置——电视(TV)摄像机问题,对所获得信号进行独立的采样和数字化就可用数字形式表达景物中全部彩色内容;电荷-耦合装置,用作图像传感器,对景物每次扫描一行,或通过平行扫描获得图像;选择正确的分辨力或采样密度,一幅图像实质上是二维空间中的信号,所以适用于信号处理的法则同样适用于图像边缘检测,在放射学中常常需要高分辨力,要求图像至少达到2048像素×2048像素;灰度量化,图像强度也必须进行数字化,通常以256级(按1字节编码)覆盖整个灰度,一般一幅灰度分辨力为8位,空间分辨力为512像素×512像素的图像需0.25兆字节的存贮容量。

(2) 图像分割,目的是把一个图像分解成它的构成成分,以便对每一目标进行测量。图像分割是一个十分困难的过程。但其测量结果的质量却极大地依赖于图像分割的质量。有两类不同的图像分割方法。一种方法是假设图像各成分的强度值是均匀的并利用这种均匀性;另一种方法寻找图像成分之间的边界,因而是利用图像的不均匀性。主要有直方图分割,区域生长,梯度法等。

(3) 边界查索,用于检测图像中线状局部结构,通常是作为图像分割的一个预处理步骤。大多数图像边缘检测技术应用某种形式的梯度算子,可应用对水平方向、垂直方向或对角线方向的梯度敏感的梯度算子,用它们的复合结果可检测任意方向的边界。

(4) 图像增强和复原,用于改进图像的质量。不同的增强技术可以用于不同的目的,这取决于应用的类型。如果打算直接观察图像,可以增强对比度。如果是为了进一步对图像作数字处理,可以选择分割(一种突出各图像成分之间的边界和线状结构的运算)。该技术可以是整体的或局部的,也可以在某个频域或者空间域中进行。图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。

(5) 图像变换: 由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像边缘检测中也有着广泛而有效的应用


5图像处理结果与分析

5.1 椒盐噪声图像的去噪与边缘检测

图像选择的是lena图像,添加了椒盐噪声,运用中值滤波复原图像,其中分别采用了3*3中值滤波、5*5中值滤波和7*7中值滤波,最后利用log微分算子进行边缘检测。下图5.1,为图像处理结果。


基于MATLAB的图像去噪与边缘检测技术_第1张图片



5.2 添加高斯噪声的图像去噪和边缘检测

第二幅图选择的是peppers图像,对其添加了高斯白噪声,运用巴特沃斯低通滤波器,改变截止频率,分别是300、500和1500,观察不同截止频率下复原图像的结果,同时利用log微分算子对它们进行边缘检测,分析三幅图之间的差别。


基于MATLAB的图像去噪与边缘检测技术_第2张图片

基于MATLAB的图像去噪与边缘检测技术_第3张图片

下图5.2,5.3,5.4,5.5为不同截止频率的图像处理结果。


基于MATLAB的图像去噪与边缘检测技术_第4张图片

基于MATLAB的图像去噪与边缘检测技术_第5张图片

图5.2灰度图像和添加高斯噪声的图像

图5.3截止频率为300的低通滤波图和其边缘检测图像



基于MATLAB的图像去噪与边缘检测技术_第6张图片

基于MATLAB的图像去噪与边缘检测技术_第7张图片

图5.4截止频率为500的低通滤波图和其边缘检测图像


基于MATLAB的图像去噪与边缘检测技术_第8张图片

基于MATLAB的图像去噪与边缘检测技术_第9张图片


图5.5fulu截止频率为1500的低通滤波图和其边缘检测图像



附录:程序

1:I = imread('lena2.bmp');
subplot(3,3,1);
imshow(I);
title('原始图像')

I = rgb2gray(I);
subplot(3,3,2);
imshow(I);
title('灰度图像')

I1 = imnoise(I,'salt & pepper',0.02);
subplot(3,3,3);
imshow(I1);
title('添加椒盐噪声的图像')

k1=medfilt2(I1);                     %进行3*3模板中值滤波
k2=medfilt2(I1,[5,5]);              %进行5*5模板中值滤波

subplot(3,3,4);
imshow(k1);
title('3*3模板中值滤波');
subplot(3,3,5);
imshow(k2);
title('5*5模板中值滤波');
subplot(3,3,6);
imshow(k3);
title('7*7模板中值滤波');

I2=edge(k1,'log');                 %对灰度图像进行log算子分割
subplot(3,3,7);
imshow(I2);                        %显示结果
title('3*3模板中值滤波后log算子分割结果');

I3=edge(k2,'log');                 %对灰度图像进行log算子分割
subplot(3,3,8);
imshow(I3);                        %显示结果
title('5*5模板中值滤波后log算子分割结果');

I4=edge(k3,'log');                 %对灰度图像进行log算子分割
subplot(3,3,9);
imshow(I4);                        %显示结果
title('7*7模板中值滤波后log算子分割结果');

2:I = imread('peppers.jpg');
I = rgb2gray(I);
figure(1);
imshow(I);
title('灰度图像')

I1 = imnoise(I,'gaussian',0.05);    %叠加高斯噪声
figure(2);
imshow(I1);
title('添加高斯噪声的图像')

I1=double(I1);        %转换为双精度
F0=fft2(I1);          %傅里叶变换
F0=fftshift(F0);      %转换数据矩阵
[M,N]=size(F0);       %获取矩阵大小
nn=2;                 %二阶巴特沃斯低通滤波器
d0=300;               %截止频率为300
for i=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*F0(i,j);       %传递函数与信号傅里叶变换函数相乘
        end
end
result=ifftshift(result);
I2=ifft2(result);      %逆傅里叶变换
figure(3);
imshow(I3);
title('截止频率为300的低通滤波图');


K=edge(I3,'log');                 %对灰度图像进行log算子分割
figure(4);
imshow(K);                        %显示结果
title('低通滤波后log算子分割结果');

你可能感兴趣的:(算法,计算机视觉,机器学习,人工智能,java)