边界跟踪
假定我们从一个梯度幅值图像着手进行处理,这个图像是从一幅处于和物体具有反差的背景中的单一物体的图像进行计算得来的。因为灰度级最高的点(即在原始图像中梯度值最高的点)必然在边界上,所以我们可以把这一点作为边界跟踪过程的起始点。如果有几个点都具有最高灰度级,我们可以任选一个。
接着,搜索以边界起始点为中心的 邻域,找出具有最大灰度级的邻域点作为第2个边界点。如果有两个邻域点具有相同的最大灰度级,就任选一个。从这一点开始,我们起动了一个在给定当前和前一个边界点的条件下寻找下一个边界点的迭代过程。在以当前边界点为中心的 邻域内,我们考察前一个边界点位置相对的邻点和这个邻点两旁的两个点(图8-4-1)。下一个边界点就是上述三点中具有最高灰度级的那个点。如果所有三个或两个相邻边界点具有同样的最高灰度级,我们就选择中间的那个点。如果两个非邻接点具有同样的最高灰度级,我们可以任选其一。
在一个无噪声的单调点状物图像中,这个算法将描画出最大梯度边界;但是,即使少量的噪声也可能使跟踪暂时或永远偏离边界、噪声的影响可以通过跟踪前对梯度图像进行平滑或采用“跟踪虫”(tracking bug)的方法来降低。即使这样,边界跟踪也不能保证产生闭合的边界,并且算法也可能失控并走到图像边界外面。
跟踪虫是一种按下述方式工作的算法“昆虫”。首先我们定义一个矩形平均窗n(“虫”),通常整个窗口具有相同的权值(图8-4-1)。最近两个或几个边界点定义了当前的边界方向。虫的背部则以当前边界为中心,以当前的边界方向为轴。随后跟踪虫可向任一边转一个角。
图 8-4-1 边界跟踪
图 8-4-2 边界跟踪虫
在虫的每一个位置,对虫覆盖的区域的平均梯度进行计算。当虫位于最高平均梯度位置时,可以从虫的前部选择一个点作为下一个边界点。显然,跟踪虫是在一个更大的空间执行先前描述过的边界跟踪过程、大尺寸的跟踪虫可以完成梯度图像的平滑,从而降低了它对噪声的敏感化 它也限制了边界方向的急剧改变。