您的位置:首页 > 其它

边界跟踪、边缘检测、边缘连接

2017-12-19 15:10 567 查看
参考

1.图像轮廓跟踪        

在识别图象中的目标时,往往需要对目标边缘作跟踪处理,也叫轮廓跟踪。顾名思义,轮廓跟踪就是通过顺序找出边缘点来跟踪边界的。若图象是二值图象或图象中不同区域具有不同的象素值,但每个区域内的象素值是相同的,则如下算法可完成基于4连通或8连通区域的轮廓跟踪。

步骤1:首先按从上到下,从左到右的顺序扫描图象,寻找没有标记跟踪结束记号的第一个边界起始点A0,A0是具有最小行和列值的边界点。定义一个扫描方向变量dir,该变量用于记录上一步中沿着前一个边界点到当前边界点的移动方向,其初始化取值为

(1)对4连通区域取dir=3;

(2)对8连通区域取dir=7;

步骤2:按逆时针方向搜索当前象素的3*3邻域,其起始搜索方向设定如下:

(1)对4连通区域取(dir+3)mod 4;

(2)对8连通区域,若dir为奇数取(dir+7)mod 8;若dir为偶数去(dir+6)mod 8;

在3*3邻域中搜索到的第一个与当前像素值相同的像素便为新的边界点An,同时更新变量dir为新的方向值。

步骤3:如果An等于第二个边界点A1且前一个边界点An-1等于第一个边界点A0,则停止搜索,结束跟踪,否则重复步骤2继续搜索。

步骤4:由边界点A0、A1、A2、……、An-2构成的边界便为要跟踪的边界。
上述算法是图象轮廓跟踪最基本的算法,它只能跟踪目标图象的内边界(边界包含在目标点集内),另外,它也无法处理图象的孔和洞。

2.边界跟踪

       假定我们从一个梯度幅值图像着手进行处理,这个图像是从一幅处于和物体具有反差的背景中的单一物体的图像进行计算得来的。因为灰度级最高的点(即在原始图像中梯度值最高的点)必然在边界上,所以我们可以把这一点作为边界跟踪过程的起始点。如果有几个点都具有最高灰度级,我们可以任选一个。

  接着,搜索以边界起始点为中心的 邻域,找出具有最大灰度级的邻域点作为第2个边界点。如果有两个邻域点具有相同的最大灰度级,就任选一个。从这一点开始,我们起动了一个在给定当前和前一个边界点的条件下寻找下一个边界点的迭代过程。在以当前边界点为中心的 邻域内,我们考察前一个边界点位置相对的邻点和这个邻点两旁的两个点(图8-4-1)。下一个边界点就是上述三点中具有最高灰度级的那个点。如果所有三个或两个相邻边界点具有同样的最高灰度级,我们就选择中间的那个点。如果两个非邻接点具有同样的最高灰度级,我们可以任选其一。

  在一个无噪声的单调点状物图像中,这个算法将描画出最大梯度边界;但是,即使少量的噪声也可能使跟踪暂时或永远偏离边界、噪声的影响可以通过跟踪前对梯度图像进行平滑或采用“跟踪虫”(tracking bug)的方法来降低。即使这样,边界跟踪也不能保证产生闭合的边界,并且算法也可能失控并走到图像边界外面。

  跟踪虫是一种按下述方式工作的算法“昆虫”。首先我们定义一个矩形平均窗n(“虫”),通常整个窗口具有相同的权值(图8-4-1)。最近两个或几个边界点定义了当前的边界方向。虫的背部则以当前边界为中心,以当前的边界方向为轴。随后跟踪虫可向任一边转一个角。
图 8-4-1 边界跟踪

图 8-4-2 边界跟踪虫

  在虫的每一个位置,对虫覆盖的区域的平均梯度进行计算。当虫位于最高平均梯度位置时,可以从虫的前部选择一个点作为下一个边界点。显然,跟踪虫是在一个更大的空间执行先前描述过的边界跟踪过程、大尺寸的跟踪虫可以完成梯度图像的平滑,从而降低了它对噪声的敏感化 它也限制了边界方向的急剧改变。

  虫的大小和形状也可以改变以求达到最佳性能。可通过减小旁视角增大虫的“惯性”。实际上,虫的确切形状对其性能影响似乎并不明显。梯度跟踪虫通常在噪声很低的图像或人工干预能防止灾难性的偏差的情况下才有用。

3.二值图像内外边界跟踪转载

目标内边界的像素全都在目标里面,目标外边界的像素全都不在目标上,是包围着目标的。

二值图像内外边界的计算都是有两种方法的,所以一共是4种算法,不过实际用到跟踪的只有一个而已。

首先是内边界跟踪:

第一种方法不是跟踪方法。步骤是先对原图像腐蚀,然后用原图像减去腐蚀后的图像就得到边界了。

第二种方法是跟踪方法。步骤如下:

1.遍历图像。

2.标记第一个遇见像素块的前景像素(i,j)。

3.对这个像素周围八邻域逆时针搜索,如果搜索到周围有前景像素,那么更新坐标(i,j)为(i',j'),并标记。

4.不断执行第3步直到再次遇见此像素块第一次标记的像素。

5.继续执行第1步。

然后是外边界跟踪:

第一种方法和求内边界第一种方法类似。先对原图像进行膨胀,然后用膨胀后的图像减去原图像即可。

第二种也不算跟踪方法,只是标记算法而已。就是将图像中前景像素周围的非前景像素标记一下就行了。

4.边缘连接

以下连接间断点的算法:

1.“非最大”抑制。在沿边缘方向追踪边缘点时,不被看作边缘点要进行抑制(设为0),这样最后输出的图像边缘比较细,具体操作时可使用形态学算法进行细化处理。

2.“滞后”处理。若使用单阈值 ,假定轮廓的平均灰度等于T ,由于噪声影响,轮廓上的有些点的灰度会小于T ,同样,有些点的灰度会高于T ,必然会造成轮廓的中断。为了避免这种情况出现,“滞后”处理使用一高一低两个阈值。图像中任意一点,只要其梯度大于T1 ,都被假定为边缘点,并立即标记,和该点相连的任意点只要其梯度大于T2 ,也被作为边缘点进行标记。因此,跟踪一个边缘,首先应该以梯度大于T1 的点开始,在遇到梯度小于T2的点前不要停止,这一跟踪过程称为“滞后”处理。

轮廓跟踪好像和边缘连接属于不同的边缘提取算法

对于一个图像来说,轮廓跟踪有边缘检测的效果,但是对于对比度低的图像效果并不是很好.对于已经提取出来的边缘,轮廓跟踪是没有作用的,必须要用边缘连接算法来完成边缘的提取.

融合算法步骤

① Sobel算子与图像卷积经典的Sobel算子只有水平和垂直两个方向的

模板,本文采用8个方向的模板(见图2)。图像中的每一点与这8个模板分别卷积,所得的最大值作为Sobel算子与图像卷积的输出,并记录相应的模板方向为该点的方向

②确定高低门限得到Sobel边缘图1,Soble边缘图2

③用Canny最佳边缘检测算子得到Canny边缘图

④Canny边缘图与Sobel边缘图1相与,得到初始边缘图

⑤在初始边缘图上寻找每一边缘线的端点或孤立点,标记这些点作为修补弱边缘的初始点

⑥采用轮廓跟踪的思想进行边缘修补,具体算法如下:

a. 确定孤立点或端点P的边缘方向(由①步Sobel算子计算得到)。

b. 在Sobel边缘图2上寻找P点边缘方向上的点Pˊ是否在Sobel边缘图2上。

c. 若Pˊ在Sobel边缘图2上,则P点为丢失的边缘点,将P修补,且Pˊ置为P,返回a步。若Pˊ点不在Sobel边缘图2上,则停止对P的边缘修补。

d. 若初始边缘图上还有孤立点或端点还未修补,则返回a步。

5.边缘检测

边缘检测主要是灰度变化的度量、检测和定位。有很多种不同的边缘检测方法,同一种方法使用的滤波器也不尽相同。图像边缘检测就是研究更好的边缘检测方法和检测算子。

边缘检测的基本思想首先是(1)利用边缘增强算子,突出图像中的局部边缘,(2)然后定义象素的“边缘强度”,通过设置阈值的方法提取边缘点集。由于噪声和模糊的存在,监测到的边界可能会变宽或在某点处发生间断。因此,边界检测包括两个基本内容:

i. 用边缘算子提取出反映灰度变化的边缘点集

ii. 在边缘点集合中剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线

常用的检测算子有微分算子、拉普拉斯高斯算子和canny算子。

在Matlab图像处理工具箱中,提供了edge函数利用以上算子来检测灰度图像的边缘。

参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息