【问题标题】:Using Nearest Neighbour Algorithm for image pattern recognition使用最近邻算法进行图像模式识别
【发布时间】:2011-02-14 17:59:41
【问题描述】:
【问题讨论】:
标签:
ocr
image-recognition
knn
【解决方案1】:
您只需(简单地?)为您的数据定义“距离”度量。
假设您已经将大图像分割成小图像,每个小图像对应一个要分类的文本字符。假设我们正在处理数字单色图像,因此每个图像都表示为(例如)0-255 整数范围(亮度)中的值(像素)的矩形矩阵。还假设(NN 是一种“监督分类算法”)您有很多已经分类良好的图像(您的训练集)。
给定一个新的小图像,您必须定义两个图像之间的距离,以便选择训练集中最接近的图像,并选择其“标签”作为识别的文本字符。
一种天真的方法是采用像素差(例如平方和)。但是这个距离度量对平移(以及旋转和缩放)很敏感,我们通常不希望这样。另一种方法是计算傅里叶变换的模,它是平移不变的(但这还不够)。从这里您可以开始 - 并意识到这个问题是困难的,而且这种分类需要大量的工作才能执行。
【解决方案2】:
我在摄像机的实时姿势识别中使用了 K-Nearest-Neighbor 算法进行姿势识别。我建议您使用 Matlab 来训练和测试数据集,因为它有 PRToolbox 用于此目的,并且有很多帮助和示例。
最重要的是你正确地选择了能够稳健地表示每个类的特征。
一旦你有了特征(这将是一组值,比如颜色、面积、位置......)和类,你需要样本来训练分类器(例如 KNN)。与分类器同样重要的是如何选择训练样本。然后你将不得不测试分类器。
尝试不同的训练集、不同的特征、不同的分类器,因为 KNN 可能不是最适合您的数据类型的方法。
我希望你觉得这很有用。