c – 复杂形状匹配的最佳方法是什么

我需要知道匹配图像中某个形状(模板)的最佳方法是什么.

我知道有几种方法,但有些方法并没有带来非常好的结果,另一方面需要大量的处理时间,所以任何人都尝试用一种快速方法来进行短时间的匹配.

例如,这是模板……

我有一个样本,我想比较样本和模板,如果样本与模板类似,则返回true,否则返回false.

注意:我尝试过轮廓匹配,级联分类和SURF,但它们都不是很好或者处理时间不是很好.

解决方法

相互匹配的事情可能是一项相当困难的任务,主要是因为不同的技术具有非常不同的特征,并且可以在某些类别上产生几乎完美的结果而在其他类别上产生非常差的结果.

这就是说,我认为你不会得到你的问题的答案,至少没有一个说“从[引用的论文]中使用xyx方法,这将解决你所有的问题”.我会试着为你指出一些例子,希望它会有所帮助.

模板匹配运算符:将模板与图像上的滑动窗口进行比较,如果模板与图像中正在查找的对象非常相似,无论它有多复杂,都可以获得非常好的结果.可以非常快,它基本上不是任何东西都是不变的,所以如果你计划旋转,照明或其他东西的重大变化,这可能不适合你. here你可以找到一些代码.注意你使用的是哪个色彩空间,如果正确使用,不同的色彩空间可以获得非常不同的结果(例如,对于面部分析,在某些情况下HSV可能比RGB更好)

像SIFT或SURF这样的关键点匹配:我使用了很多非常好的结果.您需要确定要使用的描述符和匹配器. OpenCV有一些不错的例子,here你可以找到一个.不会是匹配你的对象的最快方法,因为这些描述符可能需要一些时间来提取,如果你不太了解你将要工作的条件,这是很好的:它通常对于缩放,旋转和只要在模板和图像上都能正确找到关键点,闪电就会发生变化.

形状匹配:当我参与的图像分类竞赛中,我能够使用简单的HOG描述符获取有关我的图像的非常有辨别力的信息时,我感到非常惊讶. Oriented Gradients的直方图是描述对象形状的相当强大的工具,它使用边缘方向和幅度来描述您的图像.它们可以快速计算(我认为OpenCV具有GPU实现),可配置(您可以决定网格的厚度和细胞数量,从而产生非常不同的信息). HOG对旋转不是不变的,从不同角度看到的物体可能会产生不同的直方图,但由于不使用颜色这一事实,它们对光照变化非常稳健.
HOG只是一个例子,有很多形状和轮廓描述符,但基本上它们提供的几乎和我想的一样.

直方图匹配:不是我的第一选择,如果您了解对象和图像的其余部分,它会很有用.例如,如果你知道你在丛林图像中寻找你的粉红色花朵,那里是唯一的粉红色花朵,那么简单的颜色直方图匹配就可以了.拿起一个滑动窗口,在你的图像上运行它,比较你的直方图,你就完成了.非常快,非常简单,它根本不使用形状,所以无论你的物体多么复杂,你都会找到它.不使用形状使其对旋转稳健,但要注意照明变化.这种方法一个非常大的局限性是,如果丛林中还有其他粉红色的东西,你将无法区分.

混合方法在这里您可以充分利用上述技术.正如您所看到的,它们中的大多数在某个环境中运行良好,而在其他环境中运行良好.您可以结合使用您熟悉的技术,获得比零件总和更好的东西.我在HOG和头部姿势估计方面做了很多工作,当我们开始提取HOG不是以密集的方式而是围绕某些关键点时,我们取得了真正的突破.你需要知道你的问题,找出你需要什么,并采取一系列方法.通常,混合方法可以更好地工作并且速度慢很多.

希望这对你有所帮助,我不认为,鉴于你给我们的信息,我可以给你一个更好的答案..(可能是其他人可以,这就是为什么我还是学生:))

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...