3

Visual Studioプラットフォームで手書き認識と関連するものに取り組んでおり、openCVライブラリを使用しています。入力は、バイナリスキャンされた.tif画像の形式です。

現在、私は、直線/曲線を使用して単語を三振(キャンセル)するのと同じように、三振された単語を認識する方法を見つけようとして障害に直面しました。計算能力の無駄になるような個別の文字認識を行うつもりはありません。

別の方法でそのような出来事を認識する方法はありますか?

以下は私が思いついた2つのアイデアですが、よくわかりません-1>すべての水平線を見つけるのに役立つ<0 0 0、1 1 1、000>のようなマスクを使用します...しかしこれは非常に大きな仮定。線は波状で任意の方向にすることができます。

2>入力をスケルトン化し、交差を探します。これにより、かなりの数の交差点が得られます。これには、単語を打ち消すために使用される線が原因で発生する交差点も含まれます。最小二乗法などの近似を使用します。近似線を取得できます。しかし、交差点が多くの場所で発生する可能性があるという問題があります。'b'などの2つの交差点。

助言がありますか?

4

3 に答える 3

2

ハフ変換を使用してストライクラインを検出することを検討しましたか?

これは、手書きでのハフ変換の使用の図です。これにより、アプローチの直感がわかります。 手書き 検出された行

openCVですばやくテストできます。この関数はと呼ばれcvHoughLines2ます。

于 2009-11-26T09:31:18.563 に答える
0

輪郭を処理しないのはなぜですか? Poly (Ten-Chin) 近似を利用して、チェーンの再構成から得られた少数のベクトルのみを分析できます。さらに多くのことをしたい場合は、混合ピラミッド/等高線スキームを使用して、粗い解像度から最も細かい解像度まで、さまざまな詳細レベルでベクトル近似を取得します。

「妥当な」数の一意のセグメントを取得したら、改良を停止し、正規化を適用して (Moments - Hu's Moments を参照)、サンプルのフィンガープリントを作成し、最後に強力な分類システムを採用します。

OpenCV スイートの ML (機械学習) 部分を参照して、後者の部分をよりよく参照することをお勧めします。ラスター データの場合、Haar のウェーブレット + 隠れマルコフ モデルがうまく機能します。ベクトルの場合は、セットアップがそれほど難しくないもの (SOM、KNN、KMeans) を使用できます。

于 2009-10-03T07:38:43.593 に答える
0

私は個々の文字認識を使用します。計算能力の無駄かもしれませんが、最良の結果が得られる可能性があります。文字認識から、文字がどれだけうまく認識されたかを示す値を取得する方法を見つけてから、文字ではないもののしきい値を見つけてください。キャンセルすると、認識で何かを見つけるのに問題が発生するように文字が破壊されると思います。この事実を使用して、キャンセルされた文字を見つけることができるかもしれません。結果を改善するには、テキストの同じ領域で正しく認識されていない多くの文字を探します。多くの場合、単語全体がキャンセルされるため、悪い認識結果がクラスター化されます。

最終的にパフォーマンスが非常に悪い場合は、後でいつでも戻ってアルゴリズムを改善できます。

于 2009-10-28T14:33:56.960 に答える