4

我希望我可以从 stackoverflow 社区获得一些指导,以解决我在高级项目中遇到的困境。首先,我想声明我是一个新手程序员,我相信你们中的一些人会很快告诉我这个项目超出了我的想象。我很快就意识到这可能是真的。

现在这已经不碍事了,让我给出一些定义:

项目目标: 该项目的目标,就像许多其他人在各种 SO 问题中寻求实现的一样(其中许多问题在此工作过程中对我非常有帮助),是检测停车位是否已满或可用,最终将此类情况报告给用户(最好是通过 iPhone 或 Droid 或其他易于使用的移动应用程序——由于时间限制,这方面很快被认为超出了我的工作范围)。

使用中的工具: 我大量使用了 AForge.Net 库的资源,它为我提供了将项目整合到一起的所有构建块,包括从 IP 摄像机捕获视频、对图像应用过滤器以及最终完成检测的目的。结果,你就会知道我选择用 C# 编程,主要是因为初学者易于使用。其他选项包括 MATLAB/C++、带有 OpenCV 的 C++ 和其他替代方案。

问题

这是我遇到问题的地方。下面链接了一张在 AForge 图像处理实验室中经过预处理的图像。使用的过滤器和过程的顺序是:灰度、直方图均衡、Sobel 边缘检测,最后是 Otsu Thresholding(尽管我不相信需要最后一步)。

http://i.stack.imgur.com/u6eqk.jpg

当然,您可以用肉眼从图像中看出,检测到的边缘序列显然是停在我用相机监控的空间中的汽车。这些汽车的轮廓清晰地由亮化的车轮图案、基本上代表侧窗外边缘的那种“双铁轨”图案,甚至在这种情况下的车牌轮廓线所定义。具体来说,在项目的延续中,选择的摄像机将是一个 PTZ,以覆盖尽可能多的街区,因此我只想关注汽车的侧面特征(消除车牌等因素) . 也可以考虑天窗的矩形等特征,但显然这不是汽车的普遍特征,而一般的窗户轮廓是。

我们都可以看到这些模式存在差异,当然会因汽车制造商和型号而异。但是,通常这个序列不仅可以成功检索所需的特征,还可以从视野中消除道路(重要的是,如果您要检测空白空间,我打算使用道路颜色作为“第一个试金石”......如果我检测到与道路数据一致的灰度级,特别是如果在一个区域中没有检测到边缘,我觉得我可以安全地假设一个空白空间)。我的问题是这样的,希望它足够通用,对网站上的其他人实际上有益:

重点问题:
有没有办法拍摄一个图像片段(通过裁剪),然后将检测到的边缘序列与来自相机的未来新帧进行比较?更具体地说,有没有办法做到这一点,同时允许余地/基本上为边缘的微小差异创建公差阈值?

关于这个问题的个人想法/头脑风暴
——我确信有一种方法可以逐个像素地比较——裁剪到边缘周围的矩形,然后将裁剪后的图像滑过新处理的帧以进行比较像素-逐像素,但除非您与检测到的边缘完全匹配,否则这将无济于事。

感谢所有帮助,我也很乐意根据需要进行澄清。

4

2 回答 2

4

让我试一试。

你有两个图像。让我们称它们为 BeforePic 和 AfterPic。对于这两张图片中的每一张,您都有一个 ROI(感兴趣的矩形)——也就是一个裁剪的片段。

您想查看 AfterPic.ROI 是否与 BeforePic.ROI 有很大不同。“非常不同”是指差异大于某个阈值。

如果这确实是你的问题,那么它应该分为三个部分:

  1. 获取 BeforePic 和 AfterPic(以及每个的 ROI)。
  2. 将图片\边缘差异的抽象概念转化为数字概念。
  3. 将差异与某个阈值进行比较。

第一部分并不是你问题的一部分,所以我会忽略它。最后一部分基本上是基于找到正确的阈值。再次超出了问题的范围。第二部分是我认为问题的核心(我希望我没有完全离开这里)。为此,我将使用算法ShapeContext(在 PDF 中,最好在第 3.3 节之前实现它,因为从 3.4 及更高版本开始,它对于您的需求来说太健壮了)。

形状上下文是一种使用图像边缘的图像匹配算法,成功率很高。实现这是我的决赛项目,它对你来说似乎是一个完美的匹配(不是双关语)。如果您的优势很好,并且您的投资回报率是准确的,那么它不会让您失望。

实施可能需要一些时间,但如果做得正确,这将非常适合您。请记住,一个糟糕的实现可能会运行缓慢,我见过每张图像 5 秒的最坏情况。另一方面,一个好的(但不是完美的)实现将花费不到 0.1 秒的时间。

希望这会有所帮助,祝你好运!

编辑:我在 C# @ CodeProject 中找到了 ShapeContext 的实现,如果有兴趣的话

于 2011-04-25T16:21:45.667 回答
3

我在工作中处理了相当多的机器视觉问题,我可以告诉你的最重要的事情是越简单越好。方法越复杂,意外边界情况就越有可能导致失败。在工业中,我们通常通过尽可能简化条件来解决这个问题,施加严格的约束来限制我们需要考虑的事情的数量。诚然,学生项目与行业项目不同,因为您需要展示对特定技术的理解,这可能比它是否是您选择承担的问题的可靠解决方案更重要。

有几点需要考虑:

  1. 街道上是否有预定义的停车位?您是否可以选择手动预定义摄像头将观察到的停车区域?这可以大大简化问题。

  2. 当汽车被非法停放(例如占用多个位置)时,您是否可以提供错误的结果?

  3. 当空间中有垃圾、坑洞、积水或雪等意外环境条件时,您是否允许提供错误的结果?

  4. 您是否需要支持所有类别的车辆(汽车、平板车、货车、送货车、摩托车、迷你电动车、三脚架车?)

  5. 您是否可以在没有汽车的情况下拍摄街道的基线快照?

至于比较两组边缘,可能最稳健的方法被称为几何模型查找(在数学上将感兴趣的边缘描述为一系列“边缘”,将它们组合成链并比较几何形状),但这是过度杀戮为您的应用程序。我会更多地关注停车区域中存在的“边缘像素”计数的阈值或与基线图像的差异(但是需要注意图像偏移,因为室外温度变化引起的材料膨胀可能会导致视野由于相机机械移动而略有变化。)

于 2011-04-25T17:08:41.060 回答