現在、opencv.pre-processing、セグメンテーション、機能抽出の手順を使用して、Android ocr アプリに取り組んでいます。分類は残りのステップであり、行き詰まっています..各文字の特徴で満たされたDBテーブルを使用しています..最初に、文字ごとに1つの特徴しかなく、ユークリッド距離を使用しましたが、結果は正確ではなく、さらに機能を取得する必要があったため、取得しました。問題は、文字ごとに 7 つの機能があり、それらに基づいて i/p を分類する方法がまったくわからないことです..knn の使用を推奨する人もいますが、方法がわかりませんそして、その部分のopencvドキュメントは明確ではありません..だから、誰かがそれを助けることができれば、それは素晴らしいことです. 前もって感謝します
2 に答える
簡単に、詳細については説明しません。ここではベクトル空間が便利です。<feature1, feature2, feature3.. featureN>
トレーニングセット内のインスタンスごとに特徴ベクトルを作成する必要があり
ます。これらの各画像から、画像の分類に重要であると思われる特徴や研究記事で読んだ特徴を抽出します。たとえば、重心、ガウスぼかし、ヒストグラムなどを実行できます。これらの値を取得すると、トレーニングセットで実行するknn、svm、ナイーブベイなどの分類アルゴリズムで線形代数が機能します。つまり、モデルを構築します。 。モデルの準備ができたら、テストセットで実行します。より包括的な結果を得るには、相互検証を使用します。詳細については、コースノートを確認してください:http:
//www.inf.ed.ac.uk/teaching/courses/iaml/slides/knn-2x2.pdf
または
http://www.inf.ed.ac.uk/teaching/courses/inf2b/lectureSchedule.html
OpenCVにはあなたが好むような分類子がないかもしれないことを付け加えたいと思います。
そこにはいくつかのライブラリがありますが、モバイルプラットフォームでどれが最適に機能するかを確認する必要があるかもしれません。使用している機能について詳しく教えてください。
最も単純なKNN(k最近傍)測定は、入力サンプルの特徴とDBテーブル内の各ベクトルとの間のn次元(n次元特徴ベクトルの場合)のユークリッド距離を見つけることです。また、複数のクラスがあり、入力画像がそのような「タイプ」または「クラス」の画像の1つとして分類される場合は、マハラノビス距離(ポイントとデータセット/クラス間の距離を測定するために使用)を調べます。
@matcheekが述べたように、SVM、ニューラルネットなどの機械学習技術を使用すると、より高度なものが可能になります。ただし、最初に、計算の複雑さを制限する可能性のあるモバイルプラットフォームを考慮して、kNNのような単純なものを検討します。