0

ビデオストリームから画像内の数字を認識しなければなりませんが、認識を容易にするいくつかの方法があります:
1) 6x8 の固定フォントで、すべての記号は同じ幅です
2) 数字の正確な位置を知っています。それらは常に長方形です、回転/スクイーズ/スケーリングされていませんが、空気伝送の不具合により、多少の歪みがある場合があります。
3) 数字と のみです。
4) 数字の背景は半黒 (50% 不透明)

私はtesseract v2とv3を試しましたが、.NETラッパーは完璧ではなく、カスタムフォントでトレーニングしたとしても認識エラーが非常に大きかった.

画像を白黒に変換し、元のフォント画像とストリームからの画像の間で一致するピクセルをカウントすることで、自分で非常に単純なアルゴリズムを作成しました。テセラクトよりもパフォーマンスが高くなりますが、より洗練されたアルゴリズムの方がうまくいくと思います。

BackPropagationLearning で ActivationNetwork を使用して AForge をトレーニングしようとしましたが、収束に失敗しました (スケーリングといくつかのフォントが必要ない限り、この記事の最初の部分http://www.codeproject.com/Articles/11285/Neural- Network-OCR、記事のコードは古いバージョンの AForge 用であることを理解しているため)、悪い点は、このプロジェクトがサポートされなくなり、フォーラムが閉鎖され、Google グループも理解していることです。

私が見る限り、.NET への OpenCV ポートがあることは知っていますが、それには AForge とは異なるネットワーク アプローチがあるため、どのアプローチが最適かは疑問です。

では、これを支援する .NET フレームワークはありますか?それが複数のニューラル ネットワークの実装をサポートしている場合、どの実装が最適でしょうか?

4

3 に答える 3

4

固定倍率の固定サイズのフォントの場合、テンプレートマッチングに基づくあまり洗練されていないOCRアプローチでおそらく逃げることができます。OpenCVを使用してテンプレートマッチングを行う方法の例については、こちらを参照してください(.NETではありませんが、開始するには十分です)。基本的な考え方は、各桁のテンプレートを作成してから、ターゲットの場所ですべてのテンプレートをマッチングしてみることです。一致スコアが最も高いものを選択します。数字がどこにあるかがわかっているので、各数字の非常に小さな領域を検索できます。テンプレートマッチングの背後にある理論の詳細については、相互相関に関するこのwikiの記事を参照してください。

これは、実際には簡略化されたOCRアプリケーションの基礎です(通常、シリコンウェーハにシリアル番号を印刷するために使用されるSEMI標準フォントなどの特別なOCRフォントを認識します)。プロダクショングレードのアルゴリズムは、スケーリング、回転、および変換の許容範囲もサポートできますが、基本的なテクニックはほとんど同じです。

于 2012-09-28T14:54:20.213 に答える
2

このプロジェクトこのプロジェクトも見てみてください。どちらのプロジェクトも、OCRがどのように機能するかを説明し、C#と.NETでOCRを実装する方法を示しています。

于 2012-09-28T14:43:17.410 に答える
0

急いでいない場合は、まず問題を解決する方法を探すことをお勧めします。私はWEKAで良い経験をしました。WEKA を使用すると、多数のアルゴリズムを非常に高速にテストできます。問題を解決するアルゴリズムが見つかったら、それを .NET に移植するか、ラッパーを作成するか、実装を探すか、(簡単なアルゴリズムの場合) .NET で再構築することができます。

于 2012-10-18T17:29:06.910 に答える