我需要知道什么是匹配图像中特定形状(模板)的最佳方法。
我知道有几种方法,但是其中一些方法并不能取得很好的结果,而另一种方法则需要大量的处理时间,因此有人尝试了一种很好的快速方法以较短的处理时间进行匹配。
例如,这是模板...
我有一个样本,我想将样本与模板进行比较,如果样本与模板相似,则返回true,否则返回false。
注意:我尝试了轮廓匹配,级联分类和SURF,但是它们都不是很好,或者处理时间也不是很好。
相互匹配是一项相当困难的任务,主要是由于以下事实:不同的技术具有非常不同的特征,并且在某些类别上可以产生几乎完美的结果,而在其他类别上可以产生非常差的结果。
这就是说,我认为您永远不会得到问题的答案,至少不会有人说“使用[被引论文]中的xyx方法可以解决您的所有问题”。我会尝试为您指出一些示例,希望对您有所帮助。
模板匹配运算符:将模板与图像上的滑动窗口进行比较,如果模板与图像中要查找的对象非常相似,无论模板多么复杂,都可以达到非常好的效果。速度可能非常快,基本上没有什么变化,因此,如果您打算进行旋转,照明发生重大变化或其他原因,这可能对您不起作用。在这里您可以找到一些代码。注意使用的色彩空间,如果使用得当,不同的色彩空间可以获得非常不同的结果(例如,在人脸分析中,HSV在某些情况下可能比RGB更好)
像SIFT或SURF这样的关键点匹配:我经常使用它,效果非常好。您需要确定要使用的描述符和匹配器。OpenCV有一些很好的例子,在这里您可以找到一个例子。并不是最快的匹配对象的方法,因为要提取这些描述符可能要花一些时间,如果您对所要工作的条件不太了解,则很好:它通常在缩放,旋转和缩放方面都很健壮。只要在模板和图像上都能正确找到关键点,闪电就会发生变化。
形状匹配:当我参加一个图像分类比赛时,我能够使用一个简单的HOG描述符来获取有关我的图像的非常有区别的信息时,我感到非常惊讶。定向梯度直方图是用于描述对象形状的强大工具,它使用边缘方向和大小来描述您的图像。它们可以快速计算(我认为OpenCV具有GPU实现),可配置(您可以决定网格的厚度和单元数,从而产生非常不同的信息)。猪不是旋转不变,从不同角度看物体可能会产生不同的直方图,但由于不使用颜色,因此它们对照明变化非常有抵抗力。HOG只是一个例子,有很多形状和轮廓描述符,但基本上它们提供的功能几乎完全相同。
直方图匹配:不是我的第一选择,如果您对物体和图像的其余部分有所了解,它会很有用。例如,如果您知道要在丛林图像中寻找粉红色的花朵(那里是唯一的粉红色事物),则简单的颜色直方图匹配就可以了。拾取一个滑动窗口,在图像上运行它,比较直方图,您将完成操作。非常快,非常简单,它根本不使用形状,因此无论对象多么复杂,都可以找到它。不使用形状会使它对旋转具有鲁棒性,但是请注意照明的变化。这种方法的很大局限性是,如果丛林中还有其他粉红色的东西,您将无法分辨。
混合方法:在这里您可以充分利用上述技术。如您所见,它们中的大多数在特定环境中都能很好地工作,而在其他环境中却很糟糕。您可以使用已知技术的组合来获得比零件总和更好的东西。我在HOG和头部姿势估计方面做了大量工作,当我们开始以密集方式而不是密集方式提取HOG时,真正的突破出现了。您需要了解自己的问题,找出您需要什么,并采用多种方法来解决该问题。通常,混合方法可以更好,更慢地工作。
希望这对您有所帮助,我认为,鉴于您提供给我们的信息,我可以为您提供更好的答案。(可能有人可以,所以我仍然是学生:))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句