Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 模板匹配有噪声图像的最佳方法是什么?_Opencv_Python 2.7_Image Processing_Computer Vision - Fatal编程技术网

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

Opencv 模板匹配有噪声图像的最佳方法是什么?,opencv,python-2.7,image-processing,computer-vision,Opencv,Python 2.7,Image Processing,Computer Vision,我有一个大图像(5400x3600),其中有多个CCTV需要检测 旋转检测需要大量时间(4-7分钟)。但仍无法解决某些CCTV问题 匹配这样的模板的最佳方法是什么 我正在使用skImage-openCV对我来说不是一个选项,但我也愿意接受关于这方面的建议 例如:在下面的图像中,模板与第二个图像正确匹配-但第一个图像不匹配-我猜是由于文本“BLDG…”产生的噪音 模板: 源图像: 比赛结果: 这个问题通常通过徽标检测来解决。有关类似的讨论,请参见。 模板匹配有很多健壮的方法。有关详细讨论

我有一个大图像(5400x3600),其中有多个CCTV需要检测

旋转检测需要大量时间(4-7分钟)。但仍无法解决某些CCTV问题

匹配这样的模板的最佳方法是什么

我正在使用skImage-openCV对我来说不是一个选项,但我也愿意接受关于这方面的建议

例如:在下面的图像中,模板与第二个图像正确匹配-但第一个图像不匹配-我猜是由于文本“BLDG…”产生的噪音


模板:


源图像:


比赛结果:

这个问题通常通过徽标检测来解决。有关类似的讨论,请参见。 模板匹配有很多健壮的方法。有关详细讨论,请参阅或谷歌

但从你的例子中,我可以猜测下面的方法是可行的

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

  • 现在搜索第一个矩形时。然后使用角度修剪搜索空间,并使用图像变换将矩形与轴平行对齐。(这应考虑到旋转的需要)。然后根据步骤1中选择的功能,匹配文本内容。如果使用单个字符特征,那么模板匹配步骤可能本质上是一个分类步骤。否则,如果使用图像进行匹配,则可以使用cv::matchTemplate


  • 希望有帮助。

    符号识别比标识识别更复杂,因为兴趣点对文档图像(如建筑平面图)几乎不起作用。许多会议涉及模式识别,每年都有许多新的符号识别算法,因此给你最好的方法是不可能的。你可以查看IAPR会议:ICPR、ICDAR、DAS、GREC(图形识别研讨会)等。该研究人员专注于这个主题:M Rusiñol、J Lladós、s Tabbone、J-Y Ramel、M Liwicki等。他们研究了几种改进符号识别的技术,如:,等等(更多论文请查看google scholar)


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

    最快的方法可能是使用多个不同的徽标和一些旋转以及一些负面示例(非徽标)训练一系列增强分类器。您必须粗略地缩放整体图像,以便测试和训练示例按比例大致匹配。与SIFT或SURF花费大量时间搜索兴趣点并为学习和搜索创建描述符不同,二进制分类器将大部分负担转移到训练阶段,而您的测试或搜索将更快

    简而言之,级联将以这样一种方式运行,即第一次测试将丢弃大部分图像。如果第一次测试通过,其他测试将跟进并完善。它们将是超快速的,只需在每个点周围进行几次平均强度比较。只有少数位置可以通过整个级联,并且可以通过其他测试(如旋转相关例程)进行验证


    因此,分类器是有效的,不仅因为它们可以快速检测到您的对象,还因为它们可以快速丢弃非对象区域。要了解更多关于增强分类器的信息,请参阅以下openCV

    您的示例可以通过形状匹配(轮廓匹配)识别,比4分钟快得多

    为了获得良好的匹配,需要进行良好的预处理和去噪


    可以找到示例

    您是否尝试使用图像预处理,例如?。这样可以减少噪音。我还注意到旋转是绕x轴翻转的,如果旋转仅为4个固定旋转,则可以通过仅搜索这4个选项来加快检测速度。我仅使用黑白像素转换图像。如果这就是你的意思。旋转本身并不需要时间。我需要完全360度-但我无法低于10度增量,因为匹配整个图像需要每个模板9秒(在另一台机器上需要5秒)。我还没有多线程-这是一个改进点-我的目标是在两个内核上将其整体时间减少到3分钟。实际上,我指的是黑/白转换,所以只有0或255。它当然是多线程的候选者,因为您要执行36个独立的操作。每旋转一圈就放出一根线。OpenCV不适合您,但您将使用它实现答案?创建级联分类器。滑动窗口测试1:黑色像素数,测试2:与模板卷积(或360旋转模板)。cv::countNonZero和cv::matchTemplate将完成这项工作。在测试不同的旋转时,您是旋转模板还是旋转搜索图像?我建议保持模板轴对齐,这样你就有了一个更小的边界框,它应该不太容易受到噪声的影响。