我如何比较两个图像&识别图像中的图案?

时间:2008-11-20 05:13:28

标签: c# image-processing computer-vision pattern-recognition feature-extraction

如何比较两张图片&识别图像中的图案,无论其大小和图案大小如何,并使用.Net C#?此外,从图像处理中使用哪些算法?

9 个答案:

答案 0 :(得分:7)

请参阅Scale-invariant feature transformtemplate matchingHough transform。快速且不准确的猜测可能是制作颜色直方图并进行比较。如果图像足够复杂,您可以区分几组图像。

为了简单起见,假设我们有三个用于R,G和B的桶。完全白色的图像((100,100%,100%)用于(R,G,B)。完全红色的图像会有(100%,0%,0%)。复杂的图像可能有类似的东西(23%,53%,34%)。如果你采用那个(R,G,B)空间中的点之间的距离,你可以比较哪一个是“更接近”。

答案 1 :(得分:2)

我不是图像识别方面的专家,我曾经在用{C#编写的AForge库中进行图像识别。也许它可以帮助......

答案 2 :(得分:2)

图像匹配和图像识别技术可能非常不同。对于第一项任务,您可以使用SIFT或手工制作您自己的距离函数,基于RGB或其他方式。对于识别,可以使用大量的机器学习技术,更流行的技术涉及Adaboost,SVM和其他混合神经网络方法。该领域不乏相关的研究论文。谷歌是你的朋友。

答案 3 :(得分:1)

查找模式识别。除了名字之外,我对此知之甚少。

警告:如果这就是你想要的,那就是已知的最难的“现实世界”编程问题之一。

答案 4 :(得分:1)

Jinmala,你在这里问了一个非常广泛的问题。关于这些主题的文献中有数千篇论文。没有正确的答案,图像比较中有许多未解决的问题,所以你真的可能不希望有一个简单的解决方案,只是有效(除非你的情况非常简单和受限制)

如果你缩小范围,我可以提供帮助。

答案 5 :(得分:1)

你可能正在寻找这个

System.Drawing.Bitmap sourceImage =(Bitmap)Bitmap.FromFile(@“C:\ SavedBMPs \ 1.jpg”);             System.Drawing.Bitmap template =(Bitmap)Bitmap.FromFile(@“C:\ SavedBMPs \ 2.jpg”);             //创建模板匹配算法的实例             //(将相似度阈值设置为92.5%)

       ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0.921f);
            // find all matchings with specified above similarity

            TemplateMatch[] matchings = tm.ProcessImage(sourceImage, template);
            // highlight found matchings

       BitmapData data = sourceImage.LockBits(
            new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
            ImageLockMode.ReadWrite, sourceImage.PixelFormat);
        foreach (TemplateMatch m in matchings)
        {

                Drawing.Rectangle(data, m.Rectangle, Color.White);

            MessageBox.Show(m.Rectangle.Location.ToString());
            // do something else with matching
        }
        sourceImage.UnlockBits(data);

我警告你,它很慢,需要大约6秒才能处理1024x768的图像,并在其中查找尺寸为50x50的pciture。enter code here

答案 6 :(得分:1)

模板匹配,你可以用EmguCV,OpendotnetCV,Aforge.net

来做到这一点

答案 7 :(得分:0)

Scale-invariant feature transform (SIFT)可能就是你要找的东西。然而,理解或实施起来并不简单。

答案 8 :(得分:0)

ImageMagick有一篇有趣的文章:http://www.imagemagick.org/Usage/compare/#sub-image