2012-02-18 7 views
6


イムから文字(認識しない!)、黒&白画像から文字、
ので、画像が123であれば、 私は3枚の画像の配列を取得、エキスを抽出しようとしている画像

その重複した質問、私は知っているが、私は私が欲しいものを見つけるcouldntの、私はまた、

http://www.codeproject.com/Articles/143059/Neural-Network-for-Recognition-of-Handwritten-Digi
ソースコードが


あなたの助けがはるかに高く評価されて完了していないCodeProjectのを見てみましたが、作業の例を見つけるcouldntの:)

+0

私はこれらの文字を抽出するために*文字を認識しなければならないと確信しています。 OCRはこれを行う方法です。 –

+2

@ M.Babcock:必ずしもそうではありません。隣接する黒いピクセルに続いて、画像内の数字の表示の境界を特定することができます。 – Douglas

答えて

4

ケニーは、既に述べたように、「連結成分ラベリングは、」接続された画素を識別アルゴリズムのファミリーを記載しています。接続されたコンポーネントは、「接続されたリージョン」または「ブロブ」の名前と、「コンター」という関連するコンセプトによっても使用されます。そのようなアルゴリズムは、接続された前景ピクセルの形状だけでなく、背景色のピクセルからなる形状内部の「穴」の存在をも見つけることができなければならない。

http://en.wikipedia.org/wiki/Connected-component_labeling

このアルゴリズムは、コンピュータビジョン、マシンビジョン、および医療画像などの画像処理に依存しているいくつかの工学分野に使用されます。あなたが画像処理に時間を費やすつもりなら、あなたはこのアルゴリズムをとても快適にして、あなた自身で少なくとも1回は実装するべきです。

OpenCVのライブラリが輪郭を見つけるために使用することができfindContours()関数で、輪郭内の輪郭を持っている、など
http://opencv.willowgarage.com/wiki/

あなたが見て、仕事の領域ラベリングアルゴリズムを参照したい場合アプリケーションImageJを使用して「セルカウント」を参照するために使用します。生物学的細胞を数えることは、医用画像のための領域標識の重要かつ有望な応用である。

http://rsbweb.nih.gov/ij/

は被写体に教科書を得るのではなく、オンラインで断片的な学習を検討してください。接続された構成要素(ブロブ)を学ぶことは必然的に、グレースケールまたはカラー画像を取り込んでそこから白黒画像を生成する2値化(a.sa.thresholding)の考慮につながる。カメラの画像を使って作業している場合は、照明が重要になり、それには時間と手間がかかります。

イメージをクリーンアップするために必要なその他の前処理ステップが多数あります。前処理の必要性はアプリケーションによって異なります。

ここでは、多くの場合、推奨される教科書だし、それが標準的な画像処理技術の良好なカバレッジを提供します:

ディジタル画像処理ゴンザレスとウッズ、第3版 http://www.imageprocessingplace.com/

移動によってaddall.comへ安いコピーを見つける。国際版は安いです。

画像の文字(または他の図形)が一定のサイズと形をしている場合 - たとえば、「A」は常に40ピクセル、25ピクセルで、同じフォントで印刷されます。 1つまたは複数の一致する形状の存在を識別するために、「正規化された相互相関」またはテンプレートマッチング技術を使用することができる。この手法は、非常に粗い種類のOCRとして機能しますが、重大な制限があります。私の意見で

http://en.wikipedia.org/wiki/Template_matching

+1

ありがとうございます:) –

3

イメージが白背景(またはその逆)に黒色の文字を表している場合、画像が妥当な品質のものであり、テキストの行が水平である場合に、各文字が、そのネイバーから分離されている場合、それは比較的些細な操作である場合白い海の黒いピクセルのすべての小さな島を見つける。

これらIFSのそれぞれが緩和されたような問題は難しくなるが、概念的には同じまま:それが接続されていて、文字を発見した先の他のすべての黒画素を見つけ、その後黒画素を見つけます。 OCRとあなたの要求に関するコメントを念頭に置いて、(あなたが主張している)文字を表す黒のピクセルのパッチを見つけました。

+0

これらの条件はすべて設定されていますが、私は必要なものを実行するライブラリや何かがあることを確信しています。私は本を読んで、Rethunkのような論文を研究するのはちょっと残酷だと思っています:) –

+0

OpenCVをお勧めします。私はそれはあなたが開始するかもしれない関数 'findContours'を持って参照してください。 –

0

あなたはそれが便利なマシンビジョンのBlobまたは接続性分析について学習するかもしれません。無料のものを含むほとんどの図書館は、このようなものを持っています。また、向きを知っていれば、テキストはb/wで、テキストの間隔はきれいです.XとYの画像の1次元投影、または時間があれば任意の角度で文字エッジを見つけることができます。

0

彼はあなたがセグメンテーションと連結成分のラベル付けを使用する必要があることを指摘するように、これまでの最高の答えはRethunkです。 HighPerformanceMarkは、基本的には接続されたコンポーネントのラベリングアルゴリズム(非常に単純なものです)を記述しますが、アルゴリズムの名前に言及することはこの種の解答にとって重要であると思います。

ただし、セグメンテーションと接続されたコンポーネントのラベル付けは、問題を解決するための出発点にすぎません。たとえば、小文字の「i」などの一部の文字は2つのコンポーネントで構成され、ligatures(つまり、2つの文字が互いに接続されている)と考える必要があります。だから私はM. Babcockのコメントが好きです:文字を認識せずに問題を解決するのは難しいです。

お客様の問題では、OCR libraryを使用して問題を解決できると考えています。