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

Posted

技术标签:

【中文标题】使用最近邻算法进行图像模式识别【英文标题】:Using Nearest Neighbour Algorithm for image pattern recognition 【发布时间】:2011-02-14 17:59:41 【问题描述】:

所以我希望能够识别图像中的模式(例如数字 4),我一直在阅读不同的算法,我真的很想使用最近邻算法,它看起来很简单,我确实理解它基于在本教程中: http://people.revoledu.com/kardi/tutorial/KNN/KNN_Numerical-example.html 问题是,虽然我了解如何使用它来填充缺失的数据集,但我不明白如何将其用作模式识别工具来瞄准图像形状识别。有人可以阐明该算法如何用于模式识别吗?我已经看过使用 OpenCV 的教程,但是我真的不想使用这个库,因为我有能力自己进行预处理,而且我会为应该是一个简单的最近邻居而实现这个库似乎很愚蠢算法。

【问题讨论】:

【参考方案1】:

您只需(简单地?)为您的数据定义“距离”度量。

假设您已经将大图像分割成小图像,每个小图像对应一个要分类的文本字符。假设我们正在处理数字单色图像,因此每个图像都表示为(例如)0-255 整数范围(亮度)中的值(像素)的矩形矩阵。还假设(NN 是一种“监督分类算法”)您有很多已经分类良好的图像(您的训练集)。

给定一个新的小图像,您必须定义两个图像之间的距离,以便选择训练集中最接近的图像,并选择其“标签”作为识别的文本字符。

一种天真的方法是采用像素差(例如平方和)。但是这个距离度量对平移(以及旋转和缩放)很敏感,我们通常不希望这样。另一种方法是计算傅里叶变换的模,它是平移不变的(但这还不够)。从这里您可以开始 - 并意识到这个问题是困难的,而且这种分类需要大量的工作才能执行。

【讨论】:

【参考方案2】:

我在摄像机的实时姿势识别中使用了 K-Nearest-Neighbor 算法进行姿势识别。我建议您使用 Matlab 来训练和测试数据集,因为它有 PRToolbox 用于此目的,并且有很多帮助和示例。 最重要的是你正确地选择了能够稳健地表示每个类的特征。 一旦你有了特征(这将是一组值,比如颜色、面积、位置......)和类,你需要样本来训练分类器(例如 KNN)。与分类器同样重要的是如何选择训练样本。然后你将不得不测试分类器。

尝试不同的训练集、不同的特征、不同的分类器,因为 KNN 可能不是最适合您的数据类型的方法。

我希望你觉得这很有用。

【讨论】:

【参考方案3】:

这是一个使用 Python 的简单实现 http://shyamalapriya.github.io/digit-recognition-using-k-nearest-neighbors/

【讨论】:

以上是关于使用最近邻算法进行图像模式识别的主要内容,如果未能解决你的问题,请参考以下文章

模式识别(Pattern Recognition)学习笔记(二十七)-- 基于树搜索算法的快速近邻法

最近邻分类法

图像处理、模式识别、计算机图形学之间的相互关系

KNN实现图像验证码识别

机器学习算法篇之KNN图像识别分类器构建

统计模式识别