8

我希望在 2D 对象检测方面获得一些帮助。我将简要概述将在其中实现这一点的上下文。

将拍摄天花板的图像。天花板上将放置标记,以便确定摄像机的方向。照片将始终正面朝上拍摄。我的目标是检测图像中的这些标记之一并确定其旋转。因此旋转和缩放(在较小程度上)将是图像检测中使用的两个主要因素。我将用 C# 或 matlab 编写软件(还不太确定)。

例如,标记可能是这样的箭头:

参考箭头

天花板的图像将包含标记。软件需要检测单个标记并确定它已经旋转了 170 度。

天花板箭头

我之前没有图像分析方面的经验。我知道图像处理是一个相当广泛的主题,并且希望就我应该采取的方向以及哪些技术最适合我的应用程序获得一些建议。谢谢!

4

6 回答 6

4

我不是直接在这个领域,但我会告诉你从专门研究边缘检测开始。如果你有数学/工程背景,这些材料很容易理解:

这似乎引发了一些想法: http ://www.cfar.umd.edu/~fer/cmsc426/lectures/edge1.ppt

于 2009-11-08T23:46:16.047 回答
3

我推荐 MATLAB,或者如果您打算使用 C#,Emgu CV非常好。

霍夫变换是个好主意。一旦你检测到图像中的边缘,使用Canny 边缘检测器,你就会得到一个边缘图像(这是一个只有 1 或 0 值的二进制图像)。

然后,霍夫直线变换(本质上)使用线的参数化函数围绕边缘图像中的每个白色像素旋转一条线(线的分辨率取决于您)并计算白色的总数(值为 1)沿每条旋转线的像素,并将此信息存储在一个大累加器中,该累加器存储由线参数索引的数据。

替代文字 http://upload.wikimedia.org/wikipedia/en/a/af/Hough_space_plot_example.png

在上面的例子中,一条线的参数形式是:

rho = x*cos(theta) + y*sin(theta)

其中 rho 是距离,theta 是角度

因此,如您所见,如果您以特定方向查看垃圾箱,您会发现有多少条线以该角度定向。当然,您必须做一些额外的工作才能确定哪些线以该角度定向,因为每个箭头有 5 条其他线,但这不应该太难。

于 2009-11-09T05:05:43.743 回答
3

与计算机视觉一样,您的第一个问题是图像照明和采集。在更进一步之前,确定标记将如何打印在天花板上,它们的形式是什么,你将使用什么光来观察它们,以及你将选择什么样的相机设置来观察标记。

给定好的材料、好的光线和好的相机,你处理图像可能完全没有问题。例如,您可以在反光材料上打印一个完整的箭头,其尾部比您的示例更长,在相机上使用彩色灯和相应的滤镜。现在你的图像上只有箭头......还有很多其他获取图像的方法可以帮助你。

一旦你有了简单的箭头,一个简单的 blob 分析(包括计算图像中对象的统计矩)会给你很多信息:每个箭头应该有 7 个 hu 矩的值几乎相等,这允许你过滤对象有效地,从中心矩计算的方向也会给你箭头的角度。斑点分析只是统计数据,它非常快。

于 2009-11-09T08:00:19.373 回答
3

已经开发了几个系统来可靠地检测标记及其方向:

如果您的主要目标不是学习,而是使应用程序正常工作,我建议您使用其中之一。对于初学者来说,稳健地检测图像中随机标记的位置和方向并非易事。

另一方面,如果你对学习很感兴趣,我也会将你引向 ARToolKit及其出版物(及其参考资料),这些出版物解释了如何稳健地实现标记检测。

于 2009-11-09T09:48:26.910 回答
2

您将需要探索边缘检测,因此请查看 Hough 滤波器。之后,您将需要研究模式分类器和特征提取。

这篇论文有一种算法,似乎可以在没有边缘检测的情况下工作。 一旦你完成了边缘检测,这本书的摘录就更倾向于你想要的那种符号检测。

于 2009-11-08T23:52:27.890 回答
1

确定在投影几何(大多数相机)下获取的图像的方向的一种严格方法是使用消失点消失线。给您的好消息:您的标记可用于查找此信息!更多好消息,您的图像可以被矫正,因此图像列(y 轴)将对应于上下方向。您将在 Hartley 和 Zisserman 的著作《计算机视觉中的多视图几何》的第 8 章中找到有关此内容的更多信息。

另请记住,您可能需要处理径向失真问题,即由相机镜头引起的失真。其他人对箭头检测问题的看法是正确的:您必须使用边缘检测,然后使用霍夫变换模板匹配。有关详细信息,请参阅 Gonzalez 和 Woods 的书Digital Image Processing

于 2009-11-09T12:10:09.840 回答