既然说到这里了,让我给出一些定义:
项目目标: 像许多其他SO问题一样,该项目的目标是检测停车位是否已满或可用,并最终向用户报告(理想情况下,通过iPhone、Droid或其他移动应用程序进行使用的便利性 -- 由于时间限制,这方面很快被认为超出了我的努力范围)。
工具使用: 我大量使用了AForge.Net库的资源,该库为我提供了从IP摄像机捕获视频、对图像应用滤镜以及最终完成检测目标的所有构建块。因此,您会知道我选择使用C#进行编程,主要是因为对初学者来说易于使用。其他选项包括MATLAB/C++、带有OpenCV的C++和其他替代方案。
问题: 这就是我遇到问题的地方。下面链接了一张在AForge图像处理实验室中预处理过的图像。使用的滤镜和过程序列是:灰度化、直方图均衡化、Sobel边缘检测,最后是Otsu阈值处理(尽管我不确定最后一步是否必要)。
http://i.stack.imgur.com/u6eqk.jpg
从图像中,肉眼当然可以看出,有一系列检测到的边缘是我正在监控的空间中停放的汽车。这些汽车可以通过明亮的车轮模式、表示侧窗外边缘的“双铁路轨道”模式以及甚至是车牌轮廓来清晰地定义。具体而言,在项目继续进行中,所选择的摄像机将是一个PTZ,以覆盖尽可能多的街区,因此我只想关注汽车的侧面特征(消除诸如车牌之类的因素)。也可以考虑一些功能,例如天窗的矩形,但显然这不是汽车的通用功能,而车窗轮廓则是。我们都能看到这些模式之间的差异,当然会因车型和制造商而异。但是,通常情况下,这个序列不仅可以成功检索所需的特征,而且还可以消除道路的视线(这很重要,因为我打算将道路颜色作为“第一个试金石”,以便检测空白区域…如果我检测到与道路数据一致的灰度级别,尤其是在某个区域没有检测到边缘时,我认为我可以安全地假定为空白区域)。我的问题是这样的,希望它足够普遍,对站点上其他人有实际的益处:
专注问题:
是否有一种方法可以通过裁剪来获取图像片段,然后将检测到的边缘序列与摄像机未来的新帧进行比较?更具体地说,是否有一种方法可以在允许余地/创建边缘微小差异容忍度的同时进行比较?
个人想法/头脑风暴关于问题::
-- 我确信有一种逐像素比较的方法-- 裁剪出仅围绕您的边缘的矩形,然后将裁剪的图像滑动到新处理的帧中进行逐像素比较,但除非您检测到精确匹配的边缘,否则这并没有什么用。
非常感谢您的帮助,如果需要我会很乐意进行澄清。