您的位置:首页 > 其它

数字图像处理:第七章 邻域运算

2015-12-02 17:01 513 查看
第七章 邻域运算
目录

引言

相关与卷积

平滑
中值滤波
边缘检测
细化
作业

1.引言

邻域运算是指当输出图象中每个象素是由对应的输入象素及其一个邻域内的象素共同决定时的图象运算,通常邻域是远比图象尺寸小的一规则形状,如正方形2x2、3x3、4x4或用来近似表示圆及椭圆等形状的多边形。信号与系统分析中的基本运算相关与卷积,在实际的图象处理中都表现为邻域运算。邻域运算与点运算一起形成了最基本、最重要的图象处理工具。

以围绕模板(filter mask, template)的相关与卷积运算为例,给定图象f(x,y)大小N×N,模板T(i, j)大小m×m(m为奇数),常用的相关运算定义为: 使模板中心T((m-1)/2,(m-1)/2)与f(x,y)对应,



当m=3时,



卷积运算定义为:



当m=3时,



可见,相关运算是将模板当权重矩阵作加权平均,而卷积与相关不同的只是在于需要将模板沿中心反叠后再加权平均。如果模板是对称的,那么相关与卷积运算结果完全相同。实际上常用的模板如平滑模板、边缘检测模板等都是对称的,因而这种邻域运算实际上就是卷积运算,用信号系统分析的观点来说,就是滤波,对应于平滑滤波或称低通滤波、高通滤波等情况。

2.平滑

图象平滑的目的是消除或尽量减少噪声的影响,改善图象质量。在假定加性噪声是随机独立分布的条件下,利用邻域的平均或加权平均可以有效地抑制噪声干扰。图象平滑实际上是低通滤波,让主要是信号的低频部分通过,阻截属于高频部分的噪声信号。显然,在减少随机噪声点影响的同时,由于图象边缘部分也处在高频部分,平滑过程将会导致边缘模糊化。

(1)邻域平均(矩形邻域和圆形邻域)





(2)高斯滤波(Gaussian Filters)

高斯函数即正态分布函数常用作加权函数,二维高斯函数如下:





时,



时,


一般用小于

的滤波器,即




时,



由连续Gaussian分布求离散模板,需采样、量化,并使模板归一化。


 Lenna with noise


 

After Gaussian Filter with

=1


 

After Gaussian Filter with

=3

高斯滤波的matlab代码:Gaussianfilter code of matlab(..\..\download_IPCVPR\CS585Image
and Video Computing Home Page.files\gaussian filter code of matlab.htm)

高斯滤波的演示资料参见Canny Edge Detector Demos
(..\..\download_IPCVPR\CS585 Image and VideoComputing Home Page.files\canny edge detector demo.htm)

3.中值滤波

与加权平均方式的平滑滤波不同,中值滤波是将邻域中的象素按灰度级排序,取其中间值为输出象素。中值滤波的效果依赖于两个要素:邻域的空间范围和中值计算中涉及的象素数(当空间范围较大时,一般只取若干稀疏分布的象素作中值计算)。中值滤波能够在抑制随机噪声的同时不使边缘模糊,因而受到欢迎。

网上资料:平滑(..\..\download_IPCVPR\IPFundamentals\SmoothingOperations.htm)http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Smoothin.html

4.边缘检测

边缘是指图象中灰度发生急剧变化的区域。图象灰度的变化情况可以用灰度分布的梯度来反映,给定连续图象f(x,y),其方向导数在边缘法线方向上取得局部最大值。

边缘检测:求f(x,y)梯度的局部最大值和方向

f(x,y)在θ方向沿r的梯度




的最大值条件是





,or



梯度最大值


或为了减少计算量而用


梯度算子 Roberts, Sobel, Prewitt
在离散情况下常用梯度算子来检测边缘,给定图象U(m,n)在两个正交方向H1、H2上的梯度



如下:





则边缘的强度和方向由下式给出:

 
 
常用边缘检测算子

算子名





特点

Roberts





边缘定位准,对噪声敏感

Prewitt





平均、微分对噪声有抑制作用

Sobel





加权平均边宽

2象素

Isotropic Sobel





权值反比于邻点与中心点的距离,检测沿不同方向边缘时梯度幅度一致

演示:..\SourceProgramCodes\chapter9\武勃981403\Debug\ViewDIB.exe


  Lena


 Prewitt edge


 Sobel edge

方向算子
有时为了检测特定方向上的边缘,也采用特殊的方向算子,如检测450或1350边缘的Sobel方向算子:





网上资料:微分算子(..\..\download_IPCVPR\IPFundamentals\Derivative-basedOperations.htm)http://www.ph.tn.tudelft.nl/Courses/FIP/noframes/fip-Derivati.html

 

二阶算子 Laplacian, LoG
考虑坐标旋转变换,设旋转前坐标为

,旋转后为

,则有:


, 







容易看出,虽然



不是各向同性的,但是它们的平方和是各向同性的。

即 


 

且二阶微分的和也是各向同性的


定义Laplacian算子为

 

Laplacian是各向同性(isotropic)的微分算子。

离散情况下,有几种不同的模板计算形式:



补充内容:过零点检测(Marr-Hildreth算子)

根据图象边缘处的一阶微分(梯度)应该是极值点的事实,图象边缘处的二阶微分应为零,确定过零点的位置要比确定极值点容易得多也比较精确。但是显然二阶微分对噪声更为敏感。

为抑制噪声,可先作平滑滤波然后再作二次微分,通常采用高斯函数作平滑滤波,故有LoG(Laplacian ofGaussian)算子。在实现时一般用两个不同参数的高斯函数的差DoG(Difference of Gaussians)对图象作卷积来近似,这样检测出来的边缘点称为f(x,y)的过零点(Zero-crossing)。

过零点的理论是Marr,Hildreth提出来的,是计算视觉理论中的有关早期视觉的重要内容。









与前面的微分算子仅采用很小的邻域来检测边缘不同,过零点(Zero-crossing)的检测所依赖的范围与参数

有关,但边缘位置与

的选择无关,若只关心全局性的边缘可以选取比较大的邻域(如

=
4 时,邻域接近40个象素宽)来获取明显的边缘。过零点检测更可靠,不易受噪声影响,但缺点是对形状作了过分的平滑,例如,会丢失明显的角点;还有产生环行边缘的倾向。

Disadvantages of zero-crossing:

smoothes the shape too much; for example sharp corners are lost
tends to create closed loops of edges



网上资料:DIP ofMilan Sonka, Image Pre-processing: Local pre-processing(Zero-crossing,Canny Edge)(..\..\download_IPCVPR\DIP of Milan Sonka\edgeextraction.htm)

补充内容1:最优的阶梯型边缘(step edge)检测算法---Canny边缘检测方法

在如下的三个标准意义下,Canny边缘检测算子对受白噪声影响的阶跃型边缘是最优的:

(a)检测标准
… 不丢失重要的边缘,不应有虚假的边缘;

(b)定位标准
… 实际边缘与检测到的边缘位置之间的偏差最小;

(c)单响应标准
… 将多个响应降低为单个边缘响应。

Canny 边缘检测算子是基于如下的几个概念:

 

(a)边缘检测算子是针对1D信号表达的,对前两个标准最优,即检测标准和定位标准;

(b)如果考虑第三个标准(多个响应),需要通过数值优化的办法得到最优解。该最优滤波器可以有效地近似为标准差为σ的高斯平滑滤波器的一阶微分,其误差小于20%,这是为了便于实现。这与LoG边缘检测算子很相似。

(c)将边缘检测算子推广到两维情况。阶跃边缘由位置、方向和可能的幅度(强度)来确定。

详细内容,参见英文原文:

optimal for step edges corrupted by white noise
optimality related to three criteria
detection criterion ... important edges should not be missed, there should be no spurious responses

localization criterion ... distance between the actual and located position of the edge should be minimal

one response criterion ... minimizes multiple responses to a single edge (also partly covered by the first criterion since when there are two responses to a single edge one of them should be considered as false)


 Cannyedge

Matlabcode of Canny edge extraction(..\SourceProgramCodes\chapter7&8\CannyEdgeMatlabCode\EdgeByCanny.m)



详细参见:

CannyEdge Detector demo(..\..\download_IPCVPR\CS585 Imageand Video Computing
Home Page.files\canny edge detector demo.htm)

Cannyedge detection(..\..\download_IPCVPR\DIP of MilanSonka\edgeextraction.files\PreProcessing3.htm)
http://www.icaen.uiowa.edu/~dip/LECTURE/PreProcessing3.html#canny
Canny Edge 的参考文献:Milan Sonka,Vaclav Hlavac, and Roger Boyle, Image processing, analysis, and machine vision, Chapman & Hall Computing, London,1993.

补充内容2:SUSAN( Smallest Univalue SegmentAssimilating(吸收)Nucleus

边缘检测方法

基本原理:

以半径为3.4个象素的圆形区域(覆盖37个象素位置)为掩模,考察图象中每个点在该区域范围内的所有点的象素值与当前点的值的一致程度:



 

 



 

g:  geometricthreshold, which can be set to 3/4nmax; n(r0) represents USAN area

 
 
USAN面积越小,边缘强度越大。

 



a. 原来用的相似度函数;b.
现在用的比较稳定的相似度函数,本例中象素值差别阈值设为±27;c.
边界检测子(比较结果的输出)

 

 
 
 

 
 
 
 
 
 
详细参见:..\Readings\chapter07\SUSAN\Smith_01.pdf

5.细化

[原则] S为代表形状区域的象素的集合,细化就是要在保持连通性且不减小形状长度的条件下消去S中那些不是端点的简单边界点,过程是按S的上(北)、下(南)、左(西)、右(东)四个方向顺序,反复进行扫描以消去可删除简单边界点,直到不存在可以消去的简单边界点为止。

[定义] 简单边界点:(Simple border points)S中的一个边界点P,如果其邻域中属于S的点只有一个与其相邻接的连通分量,则P为S的简单边界点。

例如,在8连通邻域意义下,P点是否简单边界点的情况:

a.不是

b.是

c.是

d.是

e.不是

0

1

1

0

1

1

0

0

1

0

0

0

0

1

1

0

P

1

0

P

1

0

P

1

0

P

0

0

P

0

1

0

0

0

1

0

1

1

0

0

1

1

1

0

[算法1] 每次细化需4次扫描,在不删除端点(只有一个邻点)的条件下,按如下条件进行:

nw

n

ne

w

p

e

sw

s

se

八连通下的北向边界点(n=0, p=1)可删除条件:



上式排除了如下的不可删除北向边界点类型:

0

1

0

0

1

0

0

1

P

1

0

P

P

0

P

0

0

P

0

0

1

1

0

八连通下的南向边界点(s=0, p=1)可删除条件:



上式排除了如下的不可删除南向边界点类型:

0

0

1

1

0

1

P

1

0

P

P

0

P

0

0

P

0

1

0

0

1

0

0

八连通下的西向边界点(w=0, p=1)可删除条件:



上式排除了如下的不可删除西向边界点类型:

1

1

0

0

1

0

P

0

0

P

0

P

0

P

0

0

P

0

1

1

0

0

1

八连通下的东向边界点(e=0, p=1)可删除条件:



上式排除了如下的不可删除东向边界点类型:

1

0

1

1

0

0

P

0

P

0

P

0

0

P

0

0

P

0

1

0

1

1

0

[算法2] E.S. Deutsch提出一种简单的细化算法(参见周冠雄,计算机模式识别--统计方法,pp.173,华中工学院出版社,1986。),描述如下:

记象素P的8邻域点的二值(0,1)化灰度值为fI(i=0,1,2,…,7),其对应位置如下所示:

3

2

1

4

P

0

5

6

7




 Binary Sobel edge


 Thinningby E.S.Deutsch

作业

编制邻域运算通用程序,通过交互输入参数观察各种平滑及边缘检测算子的效果。
编制中值滤波程序,观察不同参数下的效果。
编制对二值图象进行细化的程序,选择不同的二值图象如阈值化后的边缘检测图象等,观察细化过程及结果。
阅读Canny edge 的 Matlab 程序代码,用MS-VC编制程序,作为第一个课程设计的一个功能。(参照下载的有关Canny edge的资料,对照Matlab程序理解程序实现时的具体方法)
阅读SUSAN边缘检测方法的文章Smith_01.pdf,编制程序,作为第一个课程设计的一个功能。

返回主目录

返回本章目录

清华大学计算机系 艾海舟

最近修改时间:2001年7月18日

出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息