我的应用程序是检测硬币。我大部分时间都是使用 OpenCv 完成的。我正在使用CannyDetection和houghTransform来检测图像的圆圈。
但是我没有得到正确的硬币圈,我认为ThresoldValues传递给cannyEdgeDetector可能是问题。谁能告诉我如何选择脱粒价值来检测硬币圈。
谢谢你,斯里尼瓦斯
如果您发布问题的图像,则更容易回答。不过,一个想法是在CannyEdgeDetector输出的轮廓上进行圆形霍夫变换。这将降低错误阈值的灵敏度。
对于选择阈值,很多事情都需要考虑。
首先,Canny使用两个阈值来表示滞后和非最大值抑制,一个是低阈值,一个是高阈值。一般倾向于选择高阈值为低阈值的两倍。
下限阈值 -- 幅度小于该值的边将被隐含
更高的脱粒 -- 具有大于将保留的幅度的边
以及仅当位于/连接到高阈值边缘点时,才会保留低和高之间的边。
高阈值和低阈值的选择完全取决于您的边缘强度。如果你的硬币有明亮的边界,你可以选择80和160但是,如果硬币边缘的强度较低,那么像30-50这样的值代表低阈值,60-100代表高阈值就足够了,
我想补充的一件事是,如果您选择低阈值,也会出现一些额外的不需要的边缘,但是如果您的硬币边缘的强度达到该大小,那么您将被迫选择较低的阈值。