霍夫变换
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。最基本的霍夫变换是从黑白图像中检测直线(线段)。
以直线检测为例,每个像素坐标点经过变换都变成都直线特质有贡献的统一度量,一个简单的例子如下:一条直线在图像中是一系列离散点的集合,通过一个直线的离散极坐标公式,可以表达出直线的离散点几何等式如下:
X *cos(theta) + y * sin(theta) = r 其中角度theta指r与X轴之间的夹角,r为到直线几何垂
直距离。任何在直线上点,x, y都可以表达,其中 r, theta是常量。该公式图形表示如下:
下等式:
(x –a ) ^2 + (y-b) ^ 2 = r^2其中(a, b)为圆的中心点坐标,r圆的半径。这样霍夫的参数空间就变成一个三维参数空间。给定圆半径转为二维霍夫参数空间,变换相对简单,也比较常用。
相关API
代码演示
新建一个项目opencv-0017,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法
开始做霍夫直接检测的编码
然后我们看看执行后的效果
原图为
获取到canny边缘的图为
可以看到获取到边缘后的我们的方形图实际的直线来说也并非很直。
最后就是我们的画线后的图
可以看到方形边缘有部分是画有绿色的线的,就是我们划出来的检测出的直线效果。
-END-
长按下方二维码关注
领取专属 10元无门槛券
私享最新 技术干货