什么是最佳方法用于模板匹配带有噪声的图像?

4
我有一个大图像(5400x3600),上面有多个需要检测的CCTV。检测需要很长时间(4-7分钟)并且还需进行旋转。但是,它仍然无法解决某些CCTV的问题。
最好的匹配此类模板的方法是什么?
我正在使用skImage - openCV对我来说不是选项,但我也接受关于这方面的建议。
例如:在下面的图像中,第二张图像正确地与模板匹配,但第一张图像未匹配 - 我猜是由于文本“BLDG…”导致的噪声。

模板:

Template


源图像:

Source image


匹配结果:

Match result


你尝试过使用图像预处理吗,比如自适应阈值化?这可以减少噪声。 我还注意到旋转是绕x轴翻转的,如果旋转只有4个固定选项,那么只搜索这4个选项可能会加快检测速度。 - spoorcc
我将图像转换为仅有黑/白像素。如果这是您的意思,那么旋转本身并不需要时间。我需要完整的360度 - 但由于匹配整个图像需要每个模板9秒(在另一台机器上为5秒),因此我无法低于10度增量。我还没有使用多线程 - 所以这是一个改进点 - 我的目标是在两个核心上总共降低到3分钟。 - anups
我确实是指黑白转换,因此只有0或255。这肯定是多线程的候选项,因为您要执行36个独立操作。只需为每个旋转启动一个线程即可。 OpenCV对您来说不是必选项,但您会接受使用它实现的答案吗? - spoorcc
创建级联分类器。滑动窗口测试1:黑色像素数量,测试2:与模板(或360度旋转的模板)进行卷积。cv::countNonZero和cv::matchTemplate将完成工作。 - LovaBill
在测试不同的旋转时,你是旋转模板还是搜索图像?我建议保持模板与轴对齐,这样你就会有一个较小的边界框,应该对噪音更不敏感。 - HugoRune
4个回答

2
最快的方法可能是使用一系列经过训练的增强分类器,这些分类器包含您的标志的几个变体,可能还包括一些旋转和一些负面示例(非标志)。您必须大致缩放整个图像,以便测试和训练示例在比例上大致匹配。与在学习和搜索时花费大量时间寻找兴趣点并创建描述符的SIFT或SURF不同,二进制分类器将大部分负担转移到了训练阶段,而您的测试或搜索将更快。
简而言之,级联将以这样的方式运行,即第一个测试将丢弃图像的大部分内容。如果第一个测试通过,则其他测试将跟随并进行优化。它们将非常快速,平均每个点只需要进行几次强度比较。只有少数位置将通过整个级联,并可以通过额外的测试(例如您的旋转相关例程)进行验证。
因此,分类器不仅有效地检测您的对象,而且还可以快速丢弃非对象区域。要了解有关增强分类器的更多信息,请参见以下openCV部分

0

这个问题通常可以通过Logo检测来解决。请参见this以获取类似的讨论。 有许多强大的模板匹配方法。请参见this或谷歌搜索以获取非常详细的讨论。

但从您的示例中,我可以猜测以下方法会起作用。

  1. 为您的搜索图像创建一个功能。它基本上有一个包含“CCTV”单词的矩形。因此,匹配文本信息的宽度、高度、角度和个体字符特征可能是一个合适的选择。(或者您也可以使用带有“CCTV”的图像。在这种情况下,该方法将不具备比例不变性。)

  2. 现在,在搜索时首先detect矩形。然后使用角度来修剪您的搜索空间,并使用图像转换将矩形与轴平行对齐。(这应该能够解决旋转的需要)。然后根据步骤1中选择的特征,匹配文本内容。如果您使用个体字符特征,则您的模板匹配步骤可能实质上是一个分类步骤。否则,如果您使用图像进行匹配,则可以使用cv::matchTemplate。

希望这有所帮助。


0

符号识别比标志识别更复杂,因为兴趣点在文档图像(如建筑平面图)上的工作很困难。许多会议涉及模式识别,每年都有许多新的符号识别算法,因此无法提供最佳方法。您可以查看IAPR会议:ICPR、ICDAR、DAS、GREC(图形识别研讨会)等。这些研究人员专注于此主题:M Rusiñol、J Lladós、S Tabbone、J-Y Ramel、M Liwicki等。他们致力于改进符号识别的多种技术,例如:向量签名基于图形的签名等(请在Google学术中查找更多论文)。

开始新方法的简单方法是使用简单的形状,如线条、矩形、三角形,而不是一次匹配所有内容。


-1

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