我希望我可以从 stackoverflow 社区获得一些指导,以解决我在高级项目中遇到的困境。首先,我想声明我是一个新手程序员,我相信你们中的一些人会很快告诉我这个项目超出了我的想象。我很快就意识到这可能是真的。
现在这已经不碍事了,让我给出一些定义:
项目目标: 该项目的目标,就像许多其他人在各种 SO 问题中寻求实现的一样(其中许多问题在此工作过程中对我非常有帮助),是检测停车位是否已满或可用,最终将此类情况报告给用户(最好是通过 iPhone 或 Droid 或其他易于使用的移动应用程序——由于时间限制,这方面很快被认为超出了我的工作范围)。
使用中的工具: 我大量使用了 AForge.Net 库的资源,它为我提供了将项目整合到一起的所有构建块,包括从 IP 摄像机捕获视频、对图像应用过滤器以及最终完成检测的目的。结果,你就会知道我选择用 C# 编程,主要是因为初学者易于使用。其他选项包括 MATLAB/C++、带有 OpenCV 的 C++ 和其他替代方案。
问题
这是我遇到问题的地方。下面链接了一张在 AForge 图像处理实验室中经过预处理的图像。使用的过滤器和过程的顺序是:灰度、直方图均衡、Sobel 边缘检测,最后是 Otsu Thresholding(尽管我不相信需要最后一步)。
http://i.stack.imgur.com/u6eqk.jpg
当然,您可以用肉眼从图像中看出,检测到的边缘序列显然是停在我用相机监控的空间中的汽车。这些汽车的轮廓清晰地由亮化的车轮图案、基本上代表侧窗外边缘的那种“双铁轨”图案,甚至在这种情况下的车牌轮廓线所定义。具体来说,在项目的延续中,选择的摄像机将是一个 PTZ,以覆盖尽可能多的街区,因此我只想关注汽车的侧面特征(消除车牌等因素) . 也可以考虑天窗的矩形等特征,但显然这不是汽车的普遍特征,而一般的窗户轮廓是。
我们都可以看到这些模式存在差异,当然会因汽车制造商和型号而异。但是,通常这个序列不仅可以成功检索所需的特征,还可以从视野中消除道路(重要的是,如果您要检测空白空间,我打算使用道路颜色作为“第一个试金石”......如果我检测到与道路数据一致的灰度级,特别是如果在一个区域中没有检测到边缘,我觉得我可以安全地假设一个空白空间)。我的问题是这样的,希望它足够通用,对网站上的其他人实际上有益:
重点问题:
有没有办法拍摄一个图像片段(通过裁剪),然后将检测到的边缘序列与来自相机的未来新帧进行比较?更具体地说,有没有办法做到这一点,同时允许余地/基本上为边缘的微小差异创建公差阈值?
关于这个问题的个人想法/头脑风暴:
——我确信有一种方法可以逐个像素地比较——裁剪到边缘周围的矩形,然后将裁剪后的图像滑过新处理的帧以进行比较像素-逐像素,但除非您与检测到的边缘完全匹配,否则这将无济于事。
感谢所有帮助,我也很乐意根据需要进行澄清。