最近由于项目需要,需要做一些边缘检测相关的工作。于是把最近几天的学习内容做一下整理。
①.基本原理
在图像处理和计算机视觉中,边缘检测被广泛使用。其目的在于标识出数字图像中亮点变化明显的点,进而
提取出有用的信息。通常情况下我们可以将数字图像表示为二位数组,而概二位数组中每个元素的值则对应
着图像各个像素点的灰度值。而边缘检测的根本原理是通过算法将该数组中各个数据邻域内数值变化大的数据
元素进行突出显示,而邻域内变化不大的相邻数据元素数据元素进行屏蔽或降低其灰度显示。
不能看出其边缘检测的很像即为如何找出一种算法来突出这种邻域内的数值变化率。
②.边缘检测算法有哪些
不难看出,边缘检测算法的核心是突出图像中变化率,无论目标与目标,还是目标与背景之间。这于导数的
概念离奇的详尽。而对于离散的数字图像中,我们可以使用与求导类比的差分运算来提取图像边缘。基于此原
理应用于二维数组中我们可以求出该二维数组的梯度模矩阵。该梯度模矩阵就能比较清楚的表示出图像矩阵的
边缘。当然也可以设定一个阈值,当梯度模矩阵中大于阈值的元素则保留,而低于阈值的元素则设为黑度。
根据梯度模矩阵的不同求法,边缘检测算法可以分为两大类:一阶导数方式(梯度算子)和二阶导数方式
而一阶导数方式中几种常见的边缘算子为:Robert,Sobel,PreWitt,kvisch.
而二阶导数方式常见的有:laplace算子
③.边缘检测在图像处理中的一般步骤
其中第一步为滤波,因为图像中存在噪声所以需要先进行滤波。然而数字图像中的噪声大多和边缘信号一
样占据高频段,所以如果滤波过于完全很可能连同边缘一起滤除,使得滤波后的图像变得模糊,无法提取有
效的边缘。而第二步为我们通常所说的利用边缘算子对边缘进行增强。这一步的结果便可直接当做边缘检测
的结果。然而大多数边缘检测还需要进行第三部,设定阈值,对超过阈值的像素点进行突出,对低于阈值的像
素点进行屏蔽。
④.matlab边缘处理示例。
程序代码如下:
程序结果如下:
本文对边缘检测做了简单的概述,也是对近两天学习的总结。通过此文相信大家会对边缘检测有了
大概的了解,通过最后一个示例程序使读者对各种边缘处理的印象更加直观。文中难免出现纰漏还望
读者批评指正,最后共同进步。