数字图像学习邻域运算

第七章 邻域运算

目录

  1. 引言

相关与卷积

  1. 平滑
  2. 中值滤波
  3. 边缘检测
  4. 细化

作业


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 

梯度最大值

或为了减少计算量而用 

  1. 梯度算子 Roberts, Sobel, Prewitt

在离散情况下常用梯度算子来检测边缘,给定图象U(m,n)在两个正交方向H1H2上的梯度如下:

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

 
 

常用边缘检测算子

算子名

特点

Roberts

边缘定位准,对噪声敏感

Prewitt

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

Sobel

加权平均边宽2象素

Isotropic Sobel

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

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

  Lena

 Prewitt edge

 Sobel edge

  1. 方向算子

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

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

 

  1. 二阶算子 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)将边缘检测算子推广到两维情况。阶跃边缘由位置、方向和可能的幅度(强度)来确定。

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

  1. optimal for step edges corrupted by white noise
  2. 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个象素位置)为掩模,考察图象中每个点在该区域范围内的所有点的象素值与当前点的值的一致程度:

equa1

 

 

equa2

 

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

 
 equa3

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

 

graph1

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

 

 
 

 

 
 graphimg1

 
 graphimg2

 
 graphimg3

详细参见:..\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

  1. 八连通下的北向边界点(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

  1. 八连通下的南向边界点(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

  1. 八连通下的西向边界点(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

  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

作业

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

返回主目录 返回本章目录

清华大学计算机系 艾海舟

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

出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值