LEADTOOLS画像処理

フレームを表示

ユーザーがフォームをスキャンするとき、摂動または変換はimage(例えば回転、ズーム、縮小と変換(positionで動く))に追加されます。これらのエフェクトはフォームの様々な部分を識別することを難しくします。そして、検出と認識段階を複雑にします。

登録商標は、フォームの様々な部分を識別して、ローカライズするのを助けるのに用いられることができます。登録商標は、特定の場所でオリジナルのフォームに追加される事前定義シェイプです。これらのマークは、オリジナルのフォームに追加される変換または変形を識別して、それからスキャンされたフォームの向きを修正して、そのオリジナルのサイズにそれの大きさを変更するのにその後用いられることができます。

現時点では、スキャンされたフォーム(より多くはいずれ追加されることになっています)の用途に、定義された登録商標の1つの型だけが、あります。有効な登録商標は、以下の図に示されるように、T字状の図です。それは、90度反時計回りによって回転する「T」です。P4ポイントは、ラインP1P2(つまり、P1からP4までの距離は、P2からP4までの距離に等しいです)の中央点になければなりません。線幅は、2つのピクセル(望ましくは3つのピクセル)より大きくなければなりません。値をSearchRegistrationMarksCommandData.WidthSearchRegistrationMarksCommandData.HeightSearchRegistrationMarksCommandData.MaximumScaleSearchRegistrationMarksCommandData.MinimumScaleに提供するため、状況が行長の上にありません。選択したマークが有効な登録商標であることを確実にするために、IsRegistrationメソッドを使います。

現時点では、登録商標メソッドで使われるために、ドキュメントイメージは黒色背景の上で白体から構成されなければなりません。

登録メソッドを使うために、スキャニングのために使われるフォームの上で正確な位置で登録商標を格納する参考書を作成することから始めます。登録商標は、はるかに十分なフォーム ― しかし、フォームがスキャンされるとき、完全にフォームの上で必ずしも表示されないところでなく ― の様々な領域に、良好三角測量が実行されることができるフォームの上で離れて置かれなければなりません。登録メソッドは、基準点として3つの指定された登録商標を使うように設計されています。サンプル参照フォーム(大きさにおいて減らされる)は、以下の図に示されます:

参考書を作成した後に、ドキュメントイメージを得るために、それをスキャンします。参考書は、完全にスキャンされなければなりません:登録のための参考書を用いた任意のドキュメントは、正確にそのサイズ、動くことと回転と一致するために変形されます。

登録メソッドは、3つの標識化されたポイントの(X、Y)位置を見つけて、スキャンされたimageの上でこれらのポイントの位置と比較することによって機能します。その情報で、スキャンされたimage(5つの未知数による5つの方程式)の移動、回転とスケーリングを決定することが、できます。未知数は以下の通りです:

サンプルフォームの上で、登録商標はフォームの上で5つの場所に置かれました。これらのマークの3つは選択されることになっています、そして、他2が無視されます(登録メソッドは方程式を解くためにフォームの上で3つの場所を使います)。3つの登録商標を選択します。

各々の登録商標のために、綿密な領域をそのマークに指定します、そして、最大許容シフト、回転とスケーリングを指定します。各々の探索領域は1つの登録商標だけを格納しなければなりません、そして、マークがフォームのそうでない場合空白の部分に位置することが好ましいです。この情報はSearchRegistrationMarksCommandDataクラスを用いて示されて、以下の情報を格納します:

メンバ
TShape
ピクセル単位で、登録商標は幅です。
高さ ピクセル単位で、登録商標は高さです。
MinimumScale detected.である最小限の登録商標パーセンテージスケーリング(たとえば、90,85または75 …その他。)
MaximumScale 検出される最大の登録商標パーセンテージスケーリング。(たとえば、110,120または125 …その他。)
長方形 登録商標のために検索される長方形の領域。サーチエリアのあまりに小さくて選択するならば、マークがシフト、回転またはスケーリングのため、検出されないという危険を実行する点に注意します。しかし、領域がより大きいほど、時間はより検索でとても消費されます。
SearchMarkCount サーチエリアの内側の予想登録商標の数これを1に設定します。(1つの登録商標が各々の領域内部になければならないため。)
MarkDetectedPoints これは、SearchRegistrationMarksCommandDataクラスによって更新されます。
MarkDetectedCount 検出したマークの数これを0に設定します。これは、SearchRegistrationMarksCommandDataクラスによって更新されます。

この情報で、これらのマークの各々のために質量中心を計算するために、GetRegistrationMarksCenterMassを使うことができます。配列にこれらのポイントを保存します。

ここで、フォームをスキャンすることができて、向きとサイズを修正することができます。下記の以下の図は、サンプルがフォーム(大きさにおいて減らされる)を目立つスキューでスキャンしたことを示します:

次の手順は、スキャンされたimageで登録商標を検索することです。登録商標を見つけるために、スキャンされたimageの上でSearchRegistrationMarksCommandクラスメソッドを使用します。登録商標の全てが検出される(各々のSearchRegistrationMarksCommandDataクラスのMarkDetectedCountプロパティは1に等しいです)ならば、各々の登録商標のために質量中心を計算するために、Leadtools.ImageProcessing.Core.CoreUtilities.GetRegistrationMarksCenterMassを使います、そして、ポイントの配列にそれらを保存します。

次の手順は、スキャンされたimageを再適合させるのに必要な動くこと、スケーリングと回転を決定することです。こうするために、基準点の配列ならびにLeadtools.ImageProcessing.Core.CoreUtilities.GetTransformationParametersへの変換点の配列を渡します

それが参照imageのようであるように、再適合して、スキャンされたimageの大きさを変更するために、ApplyTransformationParametersCommandクラスGetTransformationParametersから値を使います。これは、RotateCommand(大きさを変更することなく)を用いてimageを回転させて、CombineCommandクラスを用いてimageをシフトすることに対応します、そして、SizeCommandResizeCommandを用いてimageを拡大縮小すること、(注意します:この命令で操作をすることは重要です。命令を変更するならば、誤った結果を取得します。)それが再適合して、大きさを変更されたあと、以下の図(大きさにおいて減らされる)はスキャンされたフォームを示します: