https://en.wikipedia.org/wiki/Hough_transform
http://blog.youkuaiyun.com/xw20084898/article/details/21180729 角点检测
http://xueshu.baidu.com/s?wd=paperuri%3A%288b719ca5f86b75be4dccea6676b0cacf%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.docin.com%2Fp-377692448.html&ie=utf-8
http://blog.youkuaiyun.com/jia20003/article/details/17252807 圆检测
http://blog.163.com/yuyang_tech/blog/static/21605008320130233343990/
http://www.doc88.com/p-7426855009287.html
http://blog.youkuaiyun.com/morewindows/article/details/8266985
已知直线方程斜截式表达式:y=k*x+b;r是从原点到直线的最短距离, 为x轴与最短距离连线夹角。
将k,b用r, 关系替换,直线表达式为: ,对于任意一点(x,y),在hough变换中 对应一条曲线。
多个点对应多条曲线,这些曲线有交点,交点处就是对应点组成的直线 。如果有多个交点说明有多条直线,曲线在同一交点重合的越多,说明,直线上有很多点。、
下面为我写的利用极坐标表示圆的一种算法流程。
1.图像灰度化,二值化(注意:二值化的好坏对检测结果有很大影响,常用的有SOBEL算子)
2.检测图像中的边缘点,并保存其坐标位置。设置角度theta的变化范围和步长,半径r的变换范围和步长。
3.利用公式x=a+rcos(theta),y=b+rsin(theta)求出a和b的值。(注意:x和y为实际的图像空间某个边缘点的坐标,a和b为其对应的参数空间的坐标),如果a和b的值在合理的范围之类,则对该位置进行累加。
4.检索完毕,寻找最大值,求出圆心坐标与半径,保存。
Opencv提供了hough检测直线、圆的函数,检测直线需要二值图,检测圆灰度图。 http://blog.youkuaiyun.com/morewindows/article/details/8266985