所以我希望能够识别图像中的模式(例如4号),我一直在阅读不同的算法,我真的想使用最近邻算法,它看起来很简单,我基于它理解它在本教程中: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html 问题是,虽然我理解如何使用它来填补缺失的数据集,但我不明白如何将它用作图像识别工具来瞄准图像形状识别。有人可以说明这个算法如何用于模式识别?我已经看过使用OpenCV的教程,但是我真的不想使用这个库,因为我有能力自己进行预处理,而且为了应该是一个简单的最近邻居而实现这个库似乎很愚蠢算法
答案 0 :(得分:9)
您只是(简单地?)必须为您的数据定义“距离”度量。
假设您已经在小图像中分割了大图像,每个图像对应于您要分类的文本字符。让我们假设我们正在处理数字单色图像,因此每个图像表示为(例如)0-255整数范围(亮度)中的值(像素)的矩形矩阵。还假设(NN是一种“监督的分类算法”),你有很多已经很好分类的图像(你的训练集)。
给定一个新的小图像,您必须定义两个图像之间的距离,以便选择训练集中最接近的图像,并选择其“标签”作为识别的文本字符。
一种天真的方法是获取像素的差异(例如,平方和)。但是这个距离测量对翻译(以及旋转和缩放)很敏感,我们通常不希望如此。另一种方法是计算傅里叶变换的模数,这是平移不变量(但这还不够)。从这里你可以开始 - 并且认识到问题很难,而且这种分类需要大量的工作才能完成。
答案 1 :(得分:2)
我使用K-Nearest-Neighbor算法在带摄像机的实时姿势识别中进行姿势识别。我建议你使用Matlab来训练和测试数据集,因为它有PRToolbox用于此目的,并且有很多帮助和样本。 最重要的是,您可以正确选择能够强有力地表示每个类的功能。 一旦你拥有了这些功能(这将是一组值,如颜色,区域,位置......)和类,你需要样本来训练分类器(例如KNN)。与分类器一样重要的是如何选择样本进行训练。然后你将不得不测试分类器。
尝试不同的训练集,不同的特征,不同的分类器,因为KNN可能不是最适合您的数据类型的方法。
我希望你觉得这很有用。
答案 2 :(得分:1)