检测2D图像中的标记

时间:2009-11-08 23:39:25

标签: c# matlab image-processing computer-vision

我希望能够获得2D物体检测的一些帮助。我将简要介绍实现这一目标的背景。

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

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

Reference Arrow

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

Ceiling Arrows

我没有图像分析的经验。我知道图像处理是一个相当广泛的主题,并希望得到一些建议,我应该采取哪种方向,哪种技术最适合我的应用。谢谢!

6 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:3)

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

Hough transforms是个好主意。一旦检测到图像中的边缘,使用,例如Canny edge detector,就会得到一个边缘图像(这是二进制图像,值只有1或0)。

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

alt text http://upload.wikimedia.org/wikipedia/en/a/af/Hough_space_plot_example.png

在上面的示例中,行的参数形式为:

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

其中rho是距离而theta是   角度

因此,您可以看到,如果您在特定方向查看bin,您可以找出在该角度定向的线数。当然,你需要做一些额外的工作来弄清楚哪个线朝向那个角度,因为你每个箭头还有5个其他线但不应该太难。

答案 2 :(得分:3)

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

如果有好的材料,良好的光线和良好的相机,你可能根本没有问题来处理图像。例如,您可以在反光材料中打印完整箭头,尾部比示例长,在相机上使用彩色灯光和相应的滤镜。现在你对你的形象所拥有的只是箭头......还有很多其他的方法来获取图像,这将有助于你。

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

答案 3 :(得分:3)

已经开发了几种系统来稳健地检测标记及其方向:

如果您的主要目标不是学习,而是为了使应用程序正常工作,我建议您使用其中一个。初学者可以稳健地检测图像中随机标记的位置和方向,这不是一项微不足道的任务。

另一方面,如果你有兴趣学习,我也会引导你去ARToolKit和its publications (and their references)解释如何有力地实施标记检测。

答案 4 :(得分:2)

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

This paper有一种似乎无法进行边缘检测的算法。 完成边缘检测后,This book excerpt更倾向于您想要的符号检测。

答案 5 :(得分:1)

确定在投影几何体(大多数相机)下采集的成像方向的严格方法是使用消失点消失线。对您好消息:您的标记可用于查找此信息!更多好消息,您的图像可以纠正,因此图像列(y轴)将对应于上下方向。你会在Hartley和Zisserman的书第8章计算机视觉中的多视图几何中找到更多关于这些内容的信息。

另外请记住,您可能需要处理径向失真问题,即相机镜头造成的失真。其他人对箭头检测问题是对的:你必须使用边缘检测,之后, Hough变换模板匹配。有关详细信息,请参阅Gonzalez和Woods的书籍数字图像处理