OpenCV - HoughCircles提供5-10%的不准确度

时间:2018-04-25 08:43:28

标签: opencv emgucv image-recognition opencv3.1

将EmguCV与C#,MS VS 2015结合使用。目标是识别白板上的黑色圆圈(带有灰尘)。圆周半径约为80像素,没有相邻的圆圈。

鉴于IntPtr ptrImg包含带有灰度图像的byte[](每个样本8位,一个通道)。

有一个圆圈检测代码:

Mat mat = new Mat(height, width, DepthType.Cv8U, 1, ptrImg, width);

CvInvoke.FastNlMeansDenoising(mat, mat, 20);

return CvInvoke.HoughCircles(mat, HoughType.Gradient, 2.0, 120.0, 90, 60, 60, 100);

事实上,有些圆圈被检测到了,但是其他圆圈有一个小故障 - 检测到的半径与实际半径不同,大约5-7个像素;检测到的边界在一侧与实际边界重合,在另一侧重合。

top-right - radius more than real; bottol-left - radius less than real

我错了什么?也许,我必须玩dp,param1,param2?我和他们有什么关系?

P.S。如果我删除去噪,但按阈值添加二值化,情况并不好: enter image description here

0 个答案:

没有答案