第七章 邻域运算

目录

  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个象素位置)为掩模,考察图象中每个点在该区域范围内的所有点的象素值与当前点的值的一致程度:

 

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

  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

数字图像处理:第七章 邻域运算相关推荐

  1. 数字图像处理——第七章 小波和多分辨处理

    数字图像处理--第七章 小波和多分辨率处理 文章目录 数字图像处理--第七章 小波和多分辨率处理 写在前面 1 多分辨率处理 1.1 图像金字塔 1.2 多尺度和多分辨率的区别 2 小波 2.1 连续 ...

  2. 数字图像处理----第七章

    数字图像处理----第七章 7.1点.线和边缘检测` 7.1.1 点检测 嵌在图像的恒定或近似恒定区域中的孤立点的检测,原理上非常简单.使用图7.1中的模板时,若|R≥T(T是一个非负阈值),则我们说 ...

  3. 数字图像处理 第七章小波和多分辨率处理

    文章目录 数字图像处理 第七章小波和多分辨率处理 引言 7.1背景 7.1.1图像金字塔 7.1.2子带编码 7.1.3哈尔变换 7.2小波 7.2.1连续小波 7.2.2离散小波 数字图像处理 第七 ...

  4. 数字图像处理——第七章(小波变换和多分辨率处理)

    小波变换和小波包变换 一.基础 1.1 图像金字塔 1.2 子带编码 1.3 哈尔变换(Haar) 二.多分辨率展开 2.1 级数展开 2.2 尺度函数 2.3 小波函数 三.小波变换 3.1 一维小 ...

  5. 数字图像处理第五章——几何变换与图像配准

    数字图像处理第五章 数字图像处理---几何变换与图像配准 (一)点变换 (二)仿射变换 (三)投影变换 (四)应用于图像的几何变换 (五)MATLAB 中的图像坐标系统 5.1 输出图像位置 5.2 ...

  6. 数字图像处理第四章——图像复原(下)

    数字图像处理第四章 数字图像处理---图像复原 (三)仅有噪声的复原--空间滤波 3.1 空间噪声滤波器 3.2 自适应空间滤波 (四)退化函数建模 (五)维纳滤波 (六)约束的最小二乘法(规则化)滤 ...

  7. 数字图像处理——第六章 彩色图像处理

    数字图像处理--第六章 彩色图像处理 文章目录 数字图像处理--第六章 彩色图像处理 1 彩色模型 1.1 RGB彩色模型 1.2 CMY 和CMYK彩色模型 1.3 HSI彩色模型 2 伪彩色图像处 ...

  8. 数字图像处理——第五章 图像复原与重建

    数字图像处理--第五章 图像复原与重建 文章目录 数字图像处理--第五章 图像复原与重建 写在前面 1 图像退化/复原过程的模型 2 噪声模型 2.1 高斯噪声 2.2 椒盐噪声 3 仅有噪声的复原- ...

  9. 数字图像处理——第四章 频率域滤波

    数字图像处理--第4章 频率域滤波 文章目录 数字图像处理--第4章 频率域滤波 频率域 1.傅里叶级数原理 1.1.一维傅里叶变换 1.2.二维傅里叶变换 2.python×傅里叶级数 2.1.傅里 ...

最新文章

  1. ERROR: from PIL import Image ImportError: No module named PIL
  2. OpenGL 文本渲染Text Rendering
  3. PHP面向对象基础总结
  4. 读书笔记8-浪潮之巅(part3)
  5. 2d 蓝图_“蓝图”卷积--对深度可分离卷积的再思考
  6. Recoil 是 React 的状态管理库
  7. 机器学习基础(五十五)—— 核(Kernel Trick)
  8. 使用数据分析工具的注意事项
  9. kali安装小企鹅输入法
  10. 010-flutter dart代码后台执行,没有界面的情况下
  11. hdfs 元数据维护机制
  12. 贪心高性能神经网络与AI芯片应用
  13. 移动端可移动小图标(vue版)
  14. MAC使用小技巧之用好mac电脑?的10个必知的小技巧!
  15. 计算机科学版面费,《计算机科学》版面费
  16. rootfs 制作ubuntu_【整理】为何要把文件夹形式的rootfs制作成单个rootfs镜像文件...
  17. 编程天才“楼教主”—— 专访两届“黑客杯”世界编程大赛季军、清华大学博士生楼天城...
  18. Mindjet MindManager 出现“拼写检查器出错”等类似问题
  19. Android接入支付宝和微信支付
  20. 成为 Apache 贡献者,So easy!

热门文章

  1. 值得深思:美国感恩节78.3%的网购来自iOS
  2. 实战并发编程 - 10Guarded Suspension模式在BlockingQueue源码中应用
  3. 深入理解分布式技术 - 降级和熔断
  4. Apache Kafka-Spring Kafka将泛型反序列化为对象而非LinkedHashMap
  5. 华为M2 e服务器信息解析失败,关于华为:华为审核被拒检查HMS-Core更新失败
  6. docker 启动 springboot 项目
  7. 安卓使用Span富文本给某段Text文本加上波浪线
  8. java call back_java中Callback简单使用总结
  9. git 推送本地分支到远程分支 git push origin
  10. sftp 中文乱码 连接后_sftp服务器中文乱码