Edge Linking

时间:2023-10-05 17:34:14

因为噪声的存在, 检测出来的edge points有很多都是不相邻的. 所以边缘检测算法通常都有最后的连接步骤: 将属于同一edge的不相邻点连接起来(TODO, 是用一条路径将它们连通, 把路径中的点也作为边缘点吗?)

Local Processing

最naive的做法就是检查每个已检测出边缘点的一个邻域, 将它与邻域内的相似点连接起来. 相似性的判断一般是用梯度强度与方向的差值表示: 当两个差值都小于各自指定的threshold时, 判定为相似.

但这种做法的算法复杂度很高: 正比于边缘点数量, 正比于邻域面积. 有简化算法, 但局限性很大. (见DIP 10.2.7. Local Processing)

Regional Processing

前提是有一个RoI(Region of Interest). 得到RoI上的边缘点集后, 用一个多边形(闭合, CLOSE)或折线(开口, OPEN)近似的表达出edge. 这种算法的应用面较窄, 但算法本身感觉很精妙.

关键点:

  • 输入的点集是有序排列的, 顺时针或逆时针.
  • CLOSED与OPEN的判断: 相邻点的距离都很相似(variance小于threshold)为CLOSE, 否则为OPEN.
  • A, B点可以取第一和最后一个点
  • 先计算出连接A B的直线, 然后计算其他点到这条直线的距离. 找到最大距离点, 若它的距离大于指定的threshold \(T\), 则将它作为新的顶点.

    Edge Linking

Global Processing and Hough Transformation

Hough Transformation的核心思想:

  • 将输入空间中的点转化为参数空间中的直线. 任意两不平行的直线都有交点.
  • 将参数空间划分一个个的cell, 统计落在每个cell内的交点的个数.
  • 找到个数局部最大的cell, 它包含的点都在由这个cell决定的曲线上. (这些点是来自于整张图片, 所以是global的.)

算法精妙, 但应用有限, 至少现在对我没多大用处. 点到即止.