第七章 邻域运算

目录

  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. 数字图像学习4(图像的浮雕效果)

    图像的浮雕效果根据生成的算法不一样,效果也不太一样,作为练习程序,自己写了两个: (1)取主对角线除右下角外的各点之和的平均值,减去右下角点的值,再加上填充背景色,再加上一个背景常数,会形成类似浮雕的 ...

  2. 数字图像处理学习笔记(七)——用Pycharm及MATLAB实现三种图像内插法(最近邻内插法、双线性内插法、双三次内插法)

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  3. Python零基础速成班-第9讲-Python面向对象编程(上),对象和类、初始化、继承、重写、多态、类方法、组合

    Python零基础速成班-第9讲-Python面向对象编程(上),对象和类.初始化.继承.重写.多态.类方法.组合 学习目标 修饰器 面向对象编程:对象和类.初始化.继承.重写.多态.类方法.组合 课 ...

  4. Python零基础速成班-第8讲-Python文件操作File IO、高级文件处理模块shutil、CSV、JSON、多线程基础

    Python零基础速成班-第8讲-Python文件操作File I&O.高级文件处理模块shutil.CSV.JSON.多线程基础 学习目标 文件操作File I/O 高级文件处理模块shut ...

  5. CV学习笔记-数字图像概述

    数字图像 1. 图像 像素: 像素是分辨率的单位.像素是构成位图图像的基本单元,每个像素都有自己的颜色. 分辨率: 又称"解析度",图像的分辨率就是单位英寸内的像素点数.单位是PP ...

  6. 《数字图像处理》学习总结及感悟:第二章数字图像基础(1)人眼结构、感知和错觉

    ☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░ 一.引言 本系列文章记录老猿自学冈萨雷斯<数字图像处理>的感悟和总结,不过 ...

  7. matlab对于处理数字图像的优点,学习MATLAB数字图像处理经验谈

    学习MATLAB数字图像处理经验谈 学习数字图像处理经验谈 (赵小川) 一.面向应用:层层分解.抓住要点 我们学习数字图像处理的最终目的还是应用,不管是用它来研制产品还是研发项目抑或是研究课题,都要用 ...

  8. 数字图像处理学习笔记(四)——数字图像的内插、度量、表示与质量

    数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...

  9. Deep Learning Applied to Steganalysis of Digital Images: A Systematic Review 深度学习在数字图像隐写分析中的应用:系统综述

    Deep Learning Applied to Steganalysis of Digital Images: A Systematic Review (深度学习在数字图像隐写分析中的应用:系统综述 ...

最新文章

  1. OpenGL百分比更紧密过滤
  2. np.c_与np.r_
  3. 论文浅尝 - ICML2020 | 跨域对齐的图最优运输算法
  4. java dumpheap_java程序性能分析之thread dump和heap dump
  5. java ssm项目_JAVA项目:逝去的SSM
  6. bp 预测 matlab代码,bp神经网络进行交通预测的Matlab源代码.docx
  7. php 上传 excel xlsx_在PHP中创建和编辑Excel电子表格
  8. 【java】简介(一)
  9. 451 Sort Characters By Frequency 根据字符出现频率排序
  10. 华为交换机导入配置_华为交换机配置文件导入 华为s5700交换机配置教程
  11. c语言定义星期一到日,C语言万年历程序设计
  12. 【2020年面经】【通用篇】拿了阿里、滴滴、shopee几家公司offer后的经验总结
  13. 电子工程师12个忠告,新手老鸟都值得一看!
  14. ESP32学习笔记(29)——BLE iBeacon广播
  15. python3之面向对象实例烤地瓜
  16. 打乱mysql数据顺序_打乱数据库表内的数据顺序
  17. 解密双十一、618电商大促数据大屏指标实现原理
  18. VC 格式化代码快捷键
  19. CH579蓝牙智能遥控器方案
  20. 测试用例模板(个人习惯使用)

热门文章

  1. 机敏问答[常微][5] #20210622
  2. Unity修改默认脚本编辑器
  3. 电力电子matlab 徐德鸿,动态电压恢复器DVRMATLAB仿真.doc
  4. VUE课后总结(小白)
  5. 查看微信小程序的累计访客(UV)
  6. 解码营养行业新趋势 2023晶球益生菌与肠内营养健康高峰论坛圆满落幕
  7. 554 DT:SPM 163 smtp3解决方案
  8. 30.英语单词背诵—源书番外
  9. uBuntu下安装Win程序
  10. 西安电子科技大学java答案_第3章 数 组_西安电子科技大学:JAVA语言_ppt_大学课件预览_高等教育资讯网...