1.选取一个模板图像,最好在图像里面随机选择一个参考点而不是在图像外面选取,然后根据这个参考点和模板图像的所有边缘点,然后将普通边缘点的坐标转换为(r, ɸ)这种形式,r为边界点到选取参考点的长度,ɸ为参考点到边界点的连线与边界点切线的夹角,建立起来一个r-table
2.检测过程中,先把目标图像灰度化,然后用canny边缘检测把图形边缘坐标都提取出来,然后针对每一个边缘点,我们通过查r-table表来得到(r,ɸ),然后反计算出参考点(Xc,Yc),然后就是一个字典++P[Xc][Yc],这就是投票,然后看这个二维数组,最大值在哪,那么
参考点就在哪,那么对应的图形就在哪,然后又可以根据参考点算出目标检测里所有坐标
3.有的时候经常还要旋转尺度变换的检测,也就是把算出来的(r,ɸ),再根据你给的Omin ~Omax, Smin~Smax,每一个都反算一个参考点(Xc,Yc,O,S),然后就是一个 四维字典P[Xc][Yc][O][S],也是投票,然后看这个四维数组的最大值,也就是投票好的点,那么坐标
就是Xmax,Ymax, 对应的旋转角度rotation就是O,缩放大小Scale也就是S
我的话比较枯燥,可以参考以下几个博客去看:
https://blog.csdn.net/qihangran5467/article/details/78408072
https://blog.csdn.net/marvin521/article/details/9071405
http://www.cnblogs.com/chenyn2014/p/4227171.html
http://www.itriacasa.it/generalized-hough-transform/instructions.html
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:广义霍夫曼变换进行目标检测的理解 - Python技术站