0

次のような写真があります: http://i.imgur.com/Kev9jWd.png

そして、各数値を個別にトリミングしようとしているので、数値 0 のみを含む画像配列、1 のみを含む別の画像配列などになります。元の画像をトリミングしてグレースケール化した後、次のコード:

 for i = 1:351    
    if(capture_crop_gray(:, i, :) > 100)
        capture_crop(:, i, 1) = 255;  %red
    else
        %we found the front of a character
        for j = 1:301
            if(capture_crop_gray(j, i, :) > 100)
                capture_crop(j, i, 1) = 255;
            end
        end
    end
 end 

そして、これは私が得た結果です: http://i.imgur.com/li0clzE.png

そのため、黒い数字を除くすべてに色を付けることができますが、それぞれを単独で切り取る方法がわかりません. Image Processing Toolkit を持っているので、それを使ったショートカットがあれば教えてください。

4

1 に答える 1

1

画像に対して連結要素アルゴリズムを実行できる場合は、画像内の個々の数字を見つけ、長方形の境界を識別し、それに応じてトリミング/コピーできるはずです。この問題にアプローチするにはさまざまな方法がありますが、次の方法はかなり簡単です。

  1. 現在のトリミングされた画像をカラーからグレースケールに変換します。
  2. 画像を白黒に変換するための 2 値化のしきい値 (大津法などを使用) を見つけます。
  3. 連結成分イメージを白黒で実行します。
  4. 各コンポーネント (別名ブロブ) から、左、上、右、下、または外接する四角形を見つけます。
  5. 画像から各ブロブをトリミングします。

現在の結果画像でグローバル 2 値化が機能することを期待していますが、そうでない場合は、他のローカル 2 値化方法または適応 2 値化を試すことができます。

2 値化後に数字が複数の部分に分割された場合 (たとえば、「1」が 2 つの別個のブロブになる場合)、接続されたコンポーネントを実行する前に、黒いピクセルに対してモルフォロジー クローズ (膨張、侵食) を数回繰り返します。

これらの機能が役立つようです:

http://www.mathworks.com/help/images/ref/bwconncomp.html

http://www.mathworks.com/help/images/ref/imcrop.html

于 2013-09-22T02:45:35.393 に答える