【数字图像处理】一种求图像边缘的方法

一幅图像,背景为黑色。其中有一个白色物体,其边缘连续。现在要求出其外边缘,即与黑色背景相交的部分,组成边缘线,并且由单个像素组成。

思想:

首先找到位于图像最上方的那个白色点。

然后从这个白色点(当前点)开始搜索下一个相邻的位于边缘上的点。并且定义当前起始搜索方向为方向1(如图一).搜索的方式为:从当前方向开始,按顺时针依次检查每个方向上的相邻点(8连通域),看是否为白色点。如果是,则其为下一个边缘点。在8个方向搜索完毕之前,一定能够搜索到下一个边缘点,因为图像边缘是连续的。

接着,把当前点定义为刚刚搜索到的相邻的下一个边缘点。并且修改当前起始搜索方向为:上一步搜索到下一个边缘点的方向逆时针旋转90度。为什么要旋转90度是因为边缘可能是弯折的。但是即便是弯折,下一个边缘点也一定在旋转90度后的范围之内。这个画图就可以看出,因为我们求得是外边缘。然后从此方向按顺时针搜索下一个相邻的边缘点。一直到搜索到的下一个相邻的边缘点就是最初的起始点为止,边缘点全部找到。

这个方法只能寻找外层的单像素边缘。对于有空洞的则无能为力。而且要求边缘连续,规则。

实现代码(matlab):



运行结果:

读入的一幅用Windows7自带画图工具随手画得图像(白色背景、黑色前景,程序中进行了处理,转化为了黑色背景,白色前景):


检测出来的边缘:


posted on 2011-11-01 14:34  江南烟雨hust  阅读(796)  评论(0编辑  收藏  举报

导航