我正在尝试用C ++进行图像检测。我有两张图片:
图像场景:1024x786 人:36x49
我需要从现场识别这个特定的人。我试图使用相关但图像太嘈杂,因此无法给出正确/准确的结果。
我一直在思考/研究最能解决这项任务的方法,而这些方法似乎最合乎逻辑:
基本上,我想移动图像周围的噪音,然后我可以使用相关来更有效地找到这个人。
我知道FFT很难实现和/或可能很慢,尤其是我正在使用的图像大小。
有人可以提供解决这个问题的任何指示吗?最好的技术/算法是什么?
答案 0 :(得分:2)
在Andrew Ng的Machine Learning class中,我们使用神经网络和滑动窗口来解决这个问题:
jump_size
(例如5像素)。当您到达图片的右侧时,请返回0并按y
增加窗口的jump_size
。神经网络对此有好处,因为噪音不是一个大问题:您不需要将其删除。它也很好,因为它可以识别类似于之前看到的图像,但略有不同(面部角度不同,光线略有不同等)。
当然,缺点是你需要训练数据才能做到这一点。如果您没有一套预先标记的图像,那么您可能会运气不好 - 尽管如果您拥有Facebook帐户,您可以编写一个脚本来拉取您和您朋友的所有标记照片并使用它。 / p>
答案 1 :(得分:0)
当您已经使用kd-tree或分层树对图像进行排序时,FFT才有意义。我建议将图像2d rgb值映射到1d曲线,并在频率分析之前降低一些复杂性。
答案 2 :(得分:0)
我没有提出确切的算法,因为我发现目标检测方法在很大程度上取决于具体情况。相反,我有一些提示和建议。以下是我的建议:找到目标的特定特征并围绕它设计代码。
例如,如果您可以访问彩色图像,请使用Wally没有太多绿色和蓝色的事实。从红色图像中减去蓝色和绿色的平均值,你将有一个更好的起点。 (在图像和目标上应用相同的操作。)但是,如果噪声与颜色有关(即:每种颜色不同),这将不起作用。
然后,您可以在转换后的图像上使用相关性,并获得更好的结果。相关性的负面影响是,它只能用于第一张图像的精确切割...如果你需要找到目标来帮助你找到目标,那么它就不是很有用!相反,我认为你的目标的平均版本(许多Wally图片的组合)可以在某种程度上起作用。
我的最终建议:根据我个人使用嘈杂图像的经验,光谱分析通常是一件好事,因为噪声往往只会污染一个特定的尺度(希望与Wally的尺度不同!)此外,相关性在数学上等同于比较图像和目标的光谱特征。