本周文件交换精选

我们最好的用户提交

检测,重新审视

布雷特本周的选择是circleFinder这是一款用于在图像中寻找圆圈的应用。

你们中的许多人已经知道我是一个应用程序的超级粉丝——那些内置在MathWorks工具箱中的应用程序,以及我自己构建的应用程序。我做了大量的图像和视频处理,并且非常了解图像处理工具箱的功能。尽管如此,为我们的一些功能找到“最佳”参数集仍然是一项挑战——即使对于经验丰富的用户也是如此。

例如,在图像中寻找圆圈的任务。这个话题经常出现在不同领域的图像中。圆检测是如此常见,事实上,我选择了陶鹏的圆探测器(CircularHough_Grd)是2008年每周的最佳选择。在当时,它是最好的实现之一圆形的脚腕转换我能找到的。

在我写了关于Tao提交文件交换的文章之后的九年里,图像处理工具箱团队发布了我们自己版本的(霍夫)圆探测器,它的函数名为imfindcircles.因为有了这个功能,今天的圆圈检测比以往任何时候都更容易,也更快!

但是,查看文档imfindcircles,你可以想象,很难找到工作参数来检测挑战性的圆。

医生(“imfindcircles”

有两个必需的输入参数(图像,以及目标圆的半径或半径范围)和四个输入参数-值对:

  1. “物体极性”,我们用它来表示圆形物体是否比背景亮或暗;
  2. ' Method ',指定用于计算累加器数组的技术;
  3. ' Sensitivity ',指定圆形Hough变换累加器数组的灵敏度;和
  4. ' EdgeThreshold ',用于设置梯度阈值,以确定图像中的边缘像素。

我们可以随时使用imdistline测量半径的工具。当然,我们(通常)可以通过视觉检查确定“物体极性”。但是其他的参数呢?

img = imread (“coins.png”);[center, radii, metric] = imfindcircles(img, [20 30],...“ObjectPolarity”“光明”);imshow (img) viscircles(中心、半径);

这种检测在默认输入参数下工作得很好。但是如果我们想要检测(并计数)来自疾病控制中心(CDC)的血液涂片图像中的细胞呢?

img = imread (“Babesia_thin_giemsa_tetrad4.jpg”);[center, radii, metric] = imfindcircles(img, [20 30],...“ObjectPolarity”“黑暗”);imshow (img) viscircles(中心、半径);

默认参数完全失败!

这就是circleFinder应用程序出现的地方:

看看这个视频吧!

下次你需要探测圆的时候试试吧。如果你喜欢,你甚至可以将其安装为应用程序在你的应用程序工具栏。一定要检查清楚瓦莱丽的视频真的很棒在工具!

一如既往,我欢迎你的到来想法和意见

发布与MATLAB®R2017a

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。