改进OpenCV的模板匹配算法

4

使用OpenCV进行汽车检测

我正在进行一个小的个人项目,需要知道显示的图像是否为汽车。我正在使用基本的基于Python的OpenCV模板匹配。

正面图像/模板图像

汽车俯视图:-https://istack.dev59.com/zXr1U.webp

通过将其中一个正面图像与另一个正面图像进行简单的模板匹配即可得到所需结果。

负面图像

但是,当我们使用负面图像,例如https://istack.dev59.com/YLVwc.webp时,模板查找器会将其视为正面匹配。

尝试并失败的方法:

  1. 增加模板匹配的阈值:增加阈值会导致许多实际正面图像停止匹配

  2. 使用OpenCV中存在的不同类型的模板匹配技术:没有提供更好的结果

  3. 使用多个模板来加强正面和负面匹配:对所有情况都不起作用

是否有更好的方法来消除我们得到的模板匹配错误正例?是否有任何特征匹配或边缘检测技术可以代替模板匹配以改进我的算法。


你的“负面”图像中包含(大部分)一辆车 - 不清楚是否应该检测到它?因此,我认为您可能需要首先指定标准和所需性能。由于有不同种类的汽车(例如,有些比路面更暗,有些更亮),您几乎肯定需要多个模板。预处理图像和模板以检测某种“类似汽车”的特征可能会有所帮助;也许是边缘检测。另一个可能的方法是从许多正面和负面示例中训练神经网络;但那要复杂得多。 - NickJH
也许你应该先了解这些方法的工作原理。这是你能够学会正确使用它们的唯一途径... - Piglet
1
https://dev59.com/21oV5IYBdhLWcg3wa-Uo#36274515 - zindarod
@NickHollinghurst 负面图像不应被检测为汽车。只有当完整的汽车出现在图像中时,才应该进行检测。 - ANIRUDH NJ
1个回答

2

一种简单的方法,但在您的情况下可能值得尝试的是将模板分成(“4”)部分 - 角落,然后对每个部分应用模板匹配,并仅在找到 4 个部分时接受结果。

此外:

  • 在增加阈值的同时添加不同的模板

  • 如果尚未应用,则应用一些归一化处理


谢谢。@M.Sabaa,您能解释一下在这种情况下“规范化”是什么意思吗? - ANIRUDH NJ
简单的方法是对于每个图像,将每个像素值除以所有像素值的总和。 - M.Sabaa
这应该有所帮助,如果有不同的闪电。 - M.Sabaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接