使用最近邻算法进行图像模式识别

11

我想要能够识别图像中的模式(例如数字4),我一直在阅读不同的算法,我真的想使用最近邻算法,它看起来很简单,根据这个教程我也理解了: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html 问题是,虽然我知道如何使用它来填补缺失的数据集,但我不知道如何将它用作图像形状识别的模式识别工具。请问有人可以向我解释一下这种算法如何可用于模式识别吗?我已经看过使用OpenCV的教程,但我并不想使用这个库,因为我有能力自己进行预处理,而且实现这个简单的最近邻算法应该不需要使用这个库。

3个回答

9
您只需要为数据定义一个“距离”度量即可。
假设您已经将大图像分割成小图像,每个小图像对应于要分类的文本字符。假设我们正在处理数字单色图像,因此每个图像表示为在0-255整数范围内(亮度)的值(像素)的矩形矩阵。也假定(NN是“监督分类算法”),您有许多已经分类良好的图像(训练集)。
给定一个新的小图像,您必须定义两个图像之间的距离,以便选择训练集中最接近的图像,并选择其“标签”作为识别的文本字符。
一个朴素的方法是取像素的差异(例如平方和)。但是这种距离度量会对平移(旋转和缩放)敏感,而我们通常不希望如此。一种替代方法是计算傅里叶变换的模,它是平移不变的(但这还不够)。从这里开始,您可以开始了解到问题的难度,这种分类需要大量的工作才能达到可接受的水平。

2
我在实时视频摄像头的姿态识别中使用了K-最近邻算法。我建议您使用Matlab进行训练和测试数据集,因为它具有PRToolbox,可以用于此目的,并且有很多帮助和示例。 最重要的是,您要正确选择能够稳健地表示每个类别的特征。 一旦您拥有了特征(这将是一组值,如颜色、面积、位置等),以及类别,您需要样本来训练分类器(例如KNN)。与分类器同样重要的是,您如何选择用于训练的样本。然后,您将需要测试分类器。 尝试不同的训练集、不同的特征、不同的分类器,因为也许KNN并不适合您的数据类型。 希望您会发现这个信息有用。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接