2010-08-22 180 views
7

我需要使用边缘检测技术统计仓库中的盒子;图像将从仓库的3D模型中获取,并且建议的系统将以3个不同角度使用3幅图像来覆盖仓库的整个区域。图像边缘检测

因为在对使用哪种算法感到困惑之前,我对图像处理没有经验。

+1

尝试http://stackoverflow.com/questions/1391212/best-articles-to-start-learning-about-edge -detection-image-recognition – PaulG 2010-08-22 09:32:59

+3

这是一个非常非常复杂的问题来解决!我怀疑你会收到全面的答案,你最好的选择可能会搜索一些研究论文的谷歌。 – 2010-08-23 10:29:01

+4

对不起,这听起来像“我没有驾驶经验,你能告诉我如何从伦敦飞往东京747”。阅读一些关于图像处理和计算机视觉的书籍,实施算法并对其进行实验。在你这样做之前,我认为你不能解决这样的问题。 – Niki 2010-08-23 20:20:46

回答

10

对于一个快速启动,我建议在看这两个:

这些是非常好的结果。使用最广泛的边缘检测过滤器。

如果您开始学习计算机视觉,您还应该了解typical operations in image processingconvolution

OpenCV library是一个伟大的库,它实现了许多计算机视觉算法,包括上面提到的两个运算符。

+0

非常感谢你的评论,我选择了canny作为我的alogrithm, 如果我使用OpenCV或Mathlab,我的讲师不会太高兴,请问你有什么建议可以找到C#中canny实现的细节或教程吗? – sha123 2010-08-22 09:57:59

+0

有一个很好的CodeProject文章关于Canny在C#中的实现:http://www.codeproject.com/KB/cs/Canny_Edge_Detection.aspx – 2010-08-22 19:09:39

1

结账AForge。它具有完整的C#实现一些边缘检测算法。

+0

k我会检查,非常感谢你4评论 – sha123 2010-08-22 10:51:55

0

看一看Image Processing Library for C++的问题。你可以在这里找到几个有用的链接。建议的库不仅有算法描述,而且还有它们的实现。

+0

谢谢你的评论,但我使用C#作为我的编程语言 – sha123 2010-08-23 10:46:15

+0

肯定会由您决定。但是这个级别的图像处理是相当耗费资源的东西,性能很重要。因此将其委托给托管的运行时将是不明智的。 OpenCV有一些低级优化,他们甚至建议英特尔处理器明确。但是如果你坚持使用C#,你可以在非托管DLL之上轻松创建托管包装。 – 2010-08-23 18:43:09

0

看看我的两个edge detection tutorials - 一个基于卷积,另一个 - 只是简单的数学。哦,你必须热爱像素着色器阅读本:)

问候

0

OpenCV的一个非常好的算法检测图像中的封闭轮廓和将它们作为点名单。然后,您可以丢弃所有没有4点的轮廓,然后检查其余部分(长方形的长宽比等)的一些约束,以找到剩余的盒子边。这至少应该解决图像处理问题的一部分,但将这些轮廓列表转换为仓库中的盒子数量会很困难。

检查这里OpenCV的功能:

http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#findcontours

http://opencv.willowgarage.com/documentation/drawing_functions.html#drawcontours