应该是大半年前了,老师带领我做的一个项目主体部分已经完成了,但是投入运行的时候有一个很小的问题,就是需要在图像中知道一个圆形区域的边缘,由于这个圆形区域的半径是非递减随时间变化的而且圆心是固定的.当时解决的办法是找到变化的规律,然后将半径设置成随时间变化即可.不过此方法治标不治本,万一中途实际运行过程中发生了暂停类似时间,而程序还在计时,会有不同步的问题发生.后来希望由程序依托于图像自动找到变化的半径来解决这个问题,不过尽管最终识别的结果还算理想,但是考虑到系统已经投入测试运行了,修改的过程涉及到多次的测试过程,而且发现设置为随时间自动变化的效果还挺不错,就没把这段代码给嵌入进实际运行的系统中了.

半年过去了,当我回顾这段代码的时候,发现了以前写代码的一些问题,同时也希望再了解一下这个算法,下面就从要解决的问题和项目中的代码中窥探过去.

要识别的原图:

原图

 黄线为需要识别出来的圆

 

可能这样的图会比较好识别,但是如果是下面的这几副可能就没那么好识别了:

 

 

当时使用过大律法阈值判定,OpenCV的霍夫圆变换但效果都不是我想要的.

而且图中需要识别出来的也并非为完整的圆.

前面也说过了,这个是在测试现场提出来的一个需求,时间比较紧迫.可能我也没花太多时间去找更多的方法来适应这个问题.

好,下面是具体问题: