数字 0-9 的二进制图像的哪些特征应该与 k 最近邻算法一起使用?

Posted

技术标签:

【中文标题】数字 0-9 的二进制图像的哪些特征应该与 k 最近邻算法一起使用?【英文标题】:What characteristics of a binary image of a number 0-9 should be used with the k nearest neighbour algorithm? 【发布时间】:2014-04-05 09:11:43 【问题描述】:

玩弄 OCR。

我有一组可以用作训练数据的数字 0-9 的二进制图像,以及同一范围内的另一组未知数字。我希望能够使用k最近邻算法对未知集合中的数字进行分类。

我对该算法进行了一些研究,并且我读到最好的方法是获取数量特征并将每个训练数据绘制在以这些特征为轴的特征空间中,并为未知中的每个图像绘制set 做同样的事情,并使用 k 最近邻算法找到最近的点,就像 here 所做的那样。

什么特性最适合这样的事情?

【问题讨论】:

通常是图像中的像素强度,作为向量。 我们如何将其存储为向量? (我在这里假设当你说矢量时,你的意思是Euclidean Vector.) 【参考方案1】:

在一个简单的情况下,正如 phs 在他的评论中提到的那样,使用了像素强度。将图像调整为标准尺寸,如 20x20、10x10 等,并将整个图像分别表示为 400 或 100 个元素的向量。

这样的例子如下所示:Simple Digit Recognition OCR in OpenCV-Python

或者您可以查找矩、质心、面积、周长、欧拉数等特征。

如果您的图像是灰度的,您可以使用 Histogram of Oriented Gradients。这是 SVM 的示例。您可以尝试将其适应 kNN :http://docs.opencv.org/trunk/doc/py_tutorials/py_ml/py_svm/py_svm_opencv/py_svm_opencv.html#svm-opencv

【讨论】:

我看过 OpenCV 的 k 最近邻算法和给出的例子,我有点困惑。在示例中,您只是将图像本身传递给了 k 最近的函数。它如何仅使用原始图像进行预测? 我通过了图像,但在每个数字周围提取了一个边界框以进行训练,这相当于将这些数字作为单独的文件提供。然后将该图像转换为 20x20 px,然后将其制成 400 像素的向量,直接提供给 kNN 进行训练。

以上是关于数字 0-9 的二进制图像的哪些特征应该与 k 最近邻算法一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

用matlab实现图像识别的功能,提供一下思路

数字图像处理——图像的统计特征

C语言如何把11位16进制字符串转成16进制数?

图像的特征提取有哪些算法

如何使用Opencv对图像进行颜色特征提取

图像的矩 图像的轮廓面积和长度