[英]How do I compare two images & recognize the pattern in an image?
如何比较两个图像并识别图像中的图案,无论其大小和图案大小如何,并使用.Net C#? 此外,从图像处理中使用哪些算法?
我不是图像识别方面的专家,因为我曾经在用C#编写的AForge库中进行了图像识别。 也许它可以帮助......
用于图像匹配和图像识别的技术可以是非常不同的。 对于第一项任务,您可以使用SIFT或手工制作您自己的距离函数,基于RGB或其他方式。 对于识别,可以使用大量的机器学习技术,更流行的技术涉及Adaboost,SVM和其他混合神经网络方法。 该领域不乏相关的研究论文。 谷歌是你的朋友。
查找模式识别。 除了这个名字,我对它知之甚少。
警告:如果这是你想要的,那就是已知的最难的“现实世界”编程问题之一。
模板匹配,你可以用EmguCV,OpendotnetCV,Aforge.net做到这一点
Jinmala,你在这里问了一个非常广泛的问题。 关于这些主题的文献中有数千篇论文。 没有正确的答案,并且在图像比较中存在许多未解决的问题,因此您可能无法希望找到一个简单的解决方案(除非您的情况非常简单和受限制)
如果你缩小范围,我可能会提供帮助。
你可能正在寻找这个
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
ImageMagick有一篇有趣的文章: http : //www.imagemagick.org/Usage/compare/#sub-image
缩放不变特征变换(SIFT)可能是您正在寻找的。 然而,理解或实施并不简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.