前几篇文章中讲的都是对于离散点的操作,对于离散点的处理方法比较少,后来想到将离散点做出的曲线图保存成图像,对图像进行处理比较方便。在matlab图像处理工具箱中,有两个函数可以用来进行边界跟踪,其中一个是bwtraceboundary,另一个是bwboundaries。我们首先看一下bwtraceboundary 函数的常见调用方法:
B = bwtraceboundary(BW, p,fstep)
B = bwtraceboundary (BW, P,fstep, conn)
B = bwtraceboundary(BW, p, fstep, conn, N, dir)
其中,BW是二值图像,非0值构成了目标,0值构成了背景; p是一个二维向量,p中的元素是指开始搜寻边界点的行号和列号; fstep 是初始的搜索方向,其值可以为'N",即图像上面的元素,若值为'NE'则表示图像右上方的元素; conn刻画了跟踪边界的连续性,其值可以为4或者8; N是指边界的最大像素数目,默认值为inf; dir 是跟踪边界的方向,其值可以为'clockwise'或者counterclockwise';B是返回的边界像素的行号和列号。关于搜索方向的设定就不在这里加以赘述,在help中可以查到。
下面的例子首先读取一幅二值图像,从图像的左上方开始搜寻图像的第一个非0像素,边界的像素个数为50,然后在原图上显示边界。
利用bwtraceboundary函数跟踪边界,代码实现如下:
BW=imread('BW.jpg');