如何比较两个图像并识别图像中的图案,而不管其大小和图案大小,并使用.Net C#?另外,图像处理中使用了哪些算法?
8 回答
我不是图像识别方面的专家,因为我曾经偶然发现AForge库是用 C# 编写的并进行图像识别。也许它可以帮助...
图像匹配和图像识别的技术可能非常不同。对于第一个任务,您可以使用 SIFT 或根据 RGB 或其他方式手工制作您自己的距离函数。对于识别,您可以使用大量的机器学习技术,更流行的技术包括 Adaboost、SVM 和其他混合神经网络方法。该领域不乏相关研究论文。谷歌是你的朋友。
你可能正在寻找这个
System.Drawing.Bitmap sourceImage = (Bitmap)Bitmap.FromFile(@"C:\SavedBMPs\1.jpg"); System.Drawing.Bitmap 模板 = (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);
我警告你,处理 1024x768 的图像在 50x50 大小的图片中找到的图像非常慢,大约需要 6 秒。enter code here
Jinmala,你在这里提出了一个非常广泛的问题。文献中关于这些主题的论文数以千计。没有正确的答案,而且图像比较中还有很多未解决的问题,所以你真的可能不能指望一个简单的解决方案就行了(除非你的情况非常简单和受限)
如果您缩小范围,我也许可以提供帮助。
查找模式识别。除了名字,我对它知之甚少。
警告:如果这是你想要的,那它是已知的最难的“现实世界”编程问题之一。
模板匹配,你可以用 EmguCV ,OpendotnetCV,Aforge.net
尺度不变特征变换 (SIFT)可能是您正在寻找的。然而,理解或实施并不简单。