三种基本方法:
1:局部处理
2:区域处理
3:使用霍夫变换的全局处理
局部处理
根据预定的规则,将所有相似点连接起来。
用于确定边缘像素相似性的两个主要性质:1、梯度向量的幅度2、梯度向量的角度
由于要对每个点的邻点进行运算,计算量大。
优化如下:
例如,关注于水平与竖直方向的边缘连接,旋转90度,然后再旋转回来。 在要求多方向角度连接时,把3、4步骤组合成单个放射状扫描过程。 问题是3、4在每行中连接1两端的0.感觉不是很靠谱。相当于将扫描出的边界描粗了。当然这个是由于事先我们有了对某方向的强边缘的要求。
区域处理机理:
找到所有符合标准的多边形顶点,依次连接这些点。
两个要点:1、两个起始点必须指明2、所有的点必须排序(顺时针或逆时针方向)
关于创建排序的算法要用到边界追踪的知识:https://blog.csdn.net/qq_42604176/article/details/104286331
首先通过分析点间距离判断是开放还是闭合曲线
霍夫变换
相关链接
公式推导:
我的理解:
xy平面上位于同一直线的点映射到ρθ平面上有且仅有两个交点。
曲线族每经过一次交点,说明xy平面有一个像素点在直线上。一般来说我们可以通过设置直线上点的阈值来定义多少条曲线交于一点认为检测到了一条直线
xy平面上邻近的两个像素点,在ρθ平面产生的也是两条贴近的曲线,可能有交点。
曲线c1,c2,c4在xy平面是同一条直线C1上的,所以两个交点a1,a2曲线c3与c2、c4有四个交点,取两个交点坐标的平均为b1,b2,且b1与a1相近,b2与a2相近。 所以我们可以设定一定的阈值,例如b1与a1的|Δρ|<=α,例如b1与a1的|Δθ|<=β,则认为曲线c3对应的像素也在直线C1附近。
书本的讲解:
算法描述:
这个描述言简意赅。
算法步骤:
1、寻找图像的边缘
2、找出所有的边线点
3、进行霍夫变换,Hough Transform
4、霍夫变换后的矩阵,行与上述边界点集相对应,列为每一个点的霍夫转换
5、显示边界线的霍夫空间图像
6、寻找最大值及其在霍夫空间的坐标(通过霍夫空间门限)
7、求解笛卡尔坐标中的线
8、在这条线上补全小于某长度的缝隙。
参考链接:https://blog.csdn.net/lengo/article/details/100586228