将重复出现的图像识别为更大的图像 [英] Recognize recurring images into a larger one

查看:261
本文介绍了将重复出现的图像识别为更大的图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

编辑:这不是



我需要找到每一个的轮廓。第一步是识别在2D图像中存在循环图像(或未知模式)。如何实现这个第一步?



我读过,我可能使用原始图像的FFT和搜索重复的频率,这是一个可行的方法吗?



建立一个问题:我不知道图像之前,也不知道它的大小或在大图像上会有多少。图像可以从相机拍摄,所以他们可能是嘈杂。

解决方案

您可以尝试使用描述的关键点(Sift / SURF / ORB / etc。)找到图像中的功能,并尝试检测图像中的相同功能。
你可以在



,因此您可以看到相同模式的不同发生确实被自动检测和链接。



后续步骤是将功能对象,从而可以提取整体模式。一旦你有一个模式的候选人,你可以为模式的每次出现(使用一个参考候选模式)提取单应性,以验证它是一个模式。一个开放的问题是如何找到这样的候选人。也许值得尝试找到平行特征,因此具有平行线和/或相同长度线的关键点匹配(见图像)。或者也许有一些图论理论方法。



总而言之,这种整体方法将有一些优势和劣势:



优点:




  • 现实世界适用性 - 筛选和其他关键点工作相当良好,一些透视效果,因此增加找到这种模式的机会。



缺点
$ b



  • 参数化(定义这意味着两个功能都成功匹配

  • 不适合所有类型的模式 - 您的模式必须有一些可提取的关键点



没有完成;)



遗憾的是没有完整的代码,但是我希望这个想法很清楚。


Edit: this is not a duplicate of Determine if an image exists within a larger image, and if so, find it, using Python since I do not know the pattern beforehand

Suppose I have a big image (usually a picture taken with a camera so it might be a bit noisy, but let's assume it's not for now) made up of multiple smaller images all equal among themselves, something like

I need to find the contour of each one of those. The first step is recognizing that there's a recurring image (or unknown pattern) in the 2D image. How can I achieve this first step?

I did read around that I might use a FFT of the original image and search for duplicate frequencies, would that be a feasible approach?

To build a bit on the problem: I do not know the image beforehand, nor its size or how many will there be on the big image. The images can be shot from camera so they might be noisy. The images won't overlap.

解决方案

You can try to use described keypoints (Sift/SURF/ORB/etc.) to find features in the image and try to detect the same features in the image. You can see such a result in How to find euclidean distance between keypoints of a single image in opencv where 3x the same image is present and features are detected and linked between those subimages automatically.

In your image the result looks like

so you can see that the different occurances of the same pattern is indeed automatically detected and linked.

Next steps would be to group features to objects, so that the "whole" pattern can be extracted. Once you have a candidate for a pattern, you can extract a homography for each occurance of the pattern (with one reference candidate pattern) to verify that it is a pattern. One open problem is how to find such candidates. Maybe it is worth trying to find "parallel features", so keypoint matches that have parallel lines and/or same length lines (see image). Or maybe there is some graph theory approach.

All in all, this whole approach will have some advantages and disadvantes:

Advantages:

  • real world applicability - Sift and other keypoints are working quite well even with noise and some perspective effects, so chances are increased to find such patterns.

Disadvantages

  • slow
  • parametric (define what it means that two features are successfully matched)
  • not suitable for all kind of patterns - your pattern must have some extractable keypoints

Those are some thoughts and probably not complete ;)

Unfortunately no full code yet for your concrete task, but I hope the idea is clear.

这篇关于将重复出现的图像识别为更大的图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆