1

我们目前正在使用 opencv 开发一个 android ocr 应用程序。预处理、分割、特征提取步骤已完成。分类是剩下的步骤,我们被卡住了..我们正在使用一个填充了每个字母特征的 DB 表..首先我们每个字母只有一个特征,我们使用了欧几里德距离,但结果不准确等等需要获得特征,所以我们做到了。现在的问题是我们每个字母有 7 个特征,并且完全不知道如何根据它们对 i/p 进行分类。有些人建议使用 knn,但我们不知道如何并且该部分中的opencv文档不清楚..所以如果有人可以帮助它,那就太好了。提前致谢

4

2 回答 2

3

简单地说,不讨论细节。向量空间在这里派上用场。您需要为 <feature1, feature2, feature3.. featureN>训练集中的每个实例构建一个特征向量。您可以从这些图像中的每一个中提取您认为或在研究文章中阅读的特征,这些特征对于图像分类很重要。例如,你可以做质心、高斯模糊、直方图等。一旦你有了这些值,线性代数就会与一些分类算法一起发挥作用:你在训练集上运行的 knn、svm、朴素贝叶斯等,那就是你建立你的模型. 如果模型准备好,您可以在测试集上运行它。使用交叉验证以获得更全面的结果。有关更多详细信息,请查看课程说明: http: //www.inf.ed.ac.uk/teaching/courses/iaml/slides/knn-2x2.pdfhttp://www.inf.ed.ac.uk/teaching/courses/inf2b/lectureSchedule.html

于 2012-06-27T17:38:08.240 回答
0

想补充一点,OpenCV 可能没有您可能喜欢的分类器。

那里有几个库,尽管您可能必须看看在移动平台上哪个库效果最好。您能否详细说明您正在使用的功能?

最简单的 KNN(k-最近邻)度量是在输入样本的特征和 DB 表中的每个向量之间找到 n 维的欧几里得距离(对于 n 维特征向量)。如果您有多个类并且输入图像将被归类为这样的图像“类型”或“类”,还可以探索马氏距离(用于测量点和数据集/类之间的距离)。

正如@matcheek 所提到的,使用机器学习技术(例如 SVM、神经网络等)可以实现更复杂的操作。但是首先您可能会考虑像 kNN 这样更简单的东西,因为它是一个可能限制计算复杂性的移动平台。

于 2012-06-28T12:28:19.073 回答