霍夫变换检测
霍夫变换之直线检测霍夫变换直线检测
前提条件-边缘检测已经完成
平面空间到极坐标空间的转换(空间域向霍夫域的转换)
检测原理两点确定一条直线,通过一点可以确定无数条直线,极坐标直线公式
每个点通过角度取不同的值,都能在横坐标为角度值,纵坐标为ρ值的坐标系内确定一条曲线,只要角度值的精细度足够。ρ代表直线到原点的距离。对每个像素采取这样的操作,将会得出很多这样的曲线,这些曲线的交点证明,这些点所在的那个角度所通过的直线到原点距离相等,则证明这些点就在同一条直线上。从运算的复杂程度来看opencv不可能采取那样精细的角度范围。但大致原理基本如此。
对于任意一条直线上的所有点来说
变换到极坐标,从[0~360]空间,可以得到r的大小
属于同一条直线点在极坐标(r,theta)必然在一个点上有最强的信号出现,根据此反算到平面坐标中可以得到直线上各点的像素坐标。从而得到直线
参考链接:
相关API
标准的霍夫变换cv::HoughLines从平面坐标转换到霍夫空间,最终输出是(角度,极轴)表