亚像素边缘的直线及圆弧的基元分割

从20世纪70年代起就有不少专家提出了一些有效的亚像素边缘定位的方法,如插值法、灰度矩法和一些组合的算法等。本文在前辈的基础上描述一种图像亚像素边缘检测方法,用Sobel算子和多边形逼近的方法实现亚像素级边缘定位。
亚像素的边缘提取
 欢迎关注微信公众号:“智能算法”。
在进行直线以及圆弧基元的分割的前提,是要将亚像素的边缘提取出来,这一部分内容,我们可以先提取像素级的边缘,在利用拟合曲面来提取亚像素的边缘。
利用sobel算子,我们可以很容易的提取出图像的边缘,这里利用了非最大值抑制,双滞滤波器,达到边缘的准确提取,并且保留梯度图像,后续步骤需要用到。如下图所示:
亚像素边缘的直线及圆弧的基元分割_第1张图片
截取图中一小部分,其中的一些边缘在8领域内是可约的,什么是可约呢,就是去掉其中一点曲线仍然是连续的,如果曲线可约,将不方便后续的处理。这里就利用形态学细化,方便后续亚像素的提取,细化后的结果如下图所示。
亚像素边缘的直线及圆弧的基元分割_第2张图片
利用梯度图像中边缘点的梯度方向,而亚像素级的最大值无非就是在梯度方向所在的直线上,利用曲面拟合,以及拟合后曲面和直线的交线,在求出交线的极值,就可以得到该点的亚像素表示。如下图所示,为提取后的亚像素点。
亚像素边缘的直线及圆弧的基元分割_第3张图片
ramer的多边形逼近
首先,在轮廓的起点和终点之间建立一条线段,然后计算所有轮廓控制点到线段的距离,并从中选出距离最大的控制点。如果此距离比指定的阈值大,那么在对应最大距离控制点处将当前线段再次细分成两段。在新得到的线段上重复进行上述处理。如下图所示:
亚像素边缘的直线及圆弧的基元分割_第4张图片
轮廓段的融合
根据相邻轮廓段的三个分割点不可能处在同一直线上这一前提拟合一个近似圆,然后计算该圆与对应轮廓段之间的最大偏差。如果偏差比两个轮廓段与对应逼近线段的最大距离还要小,那么这两条轮廓段就标记为合并处理对象。否则继续对下对轮廓段进行同样的处理,经过多次迭代直到没有合并处理的对象为止。
亚像素边缘的直线及圆弧的基元分割_第5张图片
下图是对基元分割后的结果,白线部分是直线基元,黑色线段是圆弧基元。
亚像素边缘的直线及圆弧的基元分割_第6张图片

你可能感兴趣的:(图像处理)