我希望能够获得2D物体检测的一些帮助。我将简要介绍实现这一目标的背景。
将会拍摄天花板的图像。天花板上会放置标记,因此可以确定摄像机的方向。照片将始终面朝上拍摄。我的目标是在图像中检测其中一个标记并确定其旋转。因此,旋转和缩放(在较小程度上)将是图像检测中使用的两个主要因素。我将用C#或matlab编写软件(还不太确定)。
例如,标记可能是这样的箭头:
天花板拍摄的图像将包含标记。该软件需要检测单个标记并确定它已旋转170度。
我没有图像分析的经验。我知道图像处理是一个相当广泛的主题,并希望得到一些建议,我应该采取哪种方向,哪种技术最适合我的应用。谢谢!
答案 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)
已经开发了几种系统来稳健地检测标记及其方向:
reacTIVision(开源)使用这些类型的标签来查找位置和方向:
ARToolKit(开源)使用不同类型的标签来提取所有6个自由度: alt text http://www.schanes.net/docs/robot/marker.png
如果您的主要目标不是学习,而是为了使应用程序正常工作,我建议您使用其中一个。初学者可以稳健地检测图像中随机标记的位置和方向,这不是一项微不足道的任务。
另一方面,如果你有兴趣学习,我也会引导你去ARToolKit和its publications (and their references)解释如何有力地实施标记检测。
答案 4 :(得分:2)
您需要探索边缘检测,因此请查看Hough过滤器。之后,您将需要查看模式分类器和特征提取。
This paper有一种似乎无法进行边缘检测的算法。 完成边缘检测后,This book excerpt更倾向于您想要的符号检测。
答案 5 :(得分:1)
确定在投影几何体(大多数相机)下采集的成像方向的严格方法是使用消失点和消失线。对您好消息:您的标记可用于查找此信息!更多好消息,您的图像可以纠正,因此图像列(y轴)将对应于上下方向。你会在Hartley和Zisserman的书第8章计算机视觉中的多视图几何中找到更多关于这些内容的信息。
另外请记住,您可能需要处理径向失真问题,即相机镜头造成的失真。其他人对箭头检测问题是对的:你必须使用边缘检测,之后, Hough变换或模板匹配。有关详细信息,请参阅Gonzalez和Woods的书籍数字图像处理。