2

GPUImageを使用すると、画像内の本/ページの角を検出できます。ただし、4 つ以上のポイントを通過する場合もあります。その場合は、これらのポイントから最適な長方形を処理して把握する必要があります。次に例を示します。

ここに画像の説明を入力

この場合、最適な四角形を見つける最も効率的な方法は何ですか? ありがとう

4

1 に答える 1

6

コーナー検出アルゴリズムを使用している場合は、検出されたコーナーの相対的な強度に基づいて結果をフィルタリングできます。現在の背景に対する本の隅のコントラストは、木目に見られるポイントのコントラストよりもはるかに強いように見えます。各ポイントに関連付けられた相対マグニチュードはありますか、それともポイントを取得するだけですか? エッジ強度のしきい値を設定すると、前景と背景の強度が比較的一定でない限り、多くの手間がかかります。

サンプル画像がぼやけている、または変形している可能性があります。たとえば、明るいピクセルの適切な形態学的「クローズ」は、本のサイズと形状に影響を与えることなく、木目のテクスチャを削除できます。(http://en.wikipedia.org/wiki/Mathematical_morphology)

別の可能性は、画像をはるかに小さいサイズに縮小してから、それに対して検出を実行することです。画像のサイズを変更すると、現在検出されている木目模様などの細部が消去される傾向があります。

適切なレンズと照明を選択すると、画像の処理が容易になります。画像を処理する前に、画像をできるだけ単純化してください。前述のように、本の端だけを照らす「暗視野」照明は、処理用にはるかに単純な画像を表示します。制約を書き留めておくと、どのソリューションが最も堅牢で実装が最も簡単かがより明確になります。画像内の任意の場所で四角形を見つけるのは非常に困難です。長方形のサイズが 100 x 100 ピクセル以上で、正方形から画像の端まで 15 度以内に回転している場合などは、暗い背景で明るい長方形を見つけるのがはるかに簡単になります。

より複雑なソリューションは、次の 2 つのアプローチに分けることができます。

  1. 与えられた 4 つ以上の (x,y) 点のみを使用して問題を解決します。
  2. サンプル画像とは別の画像処理技術を使用しています。

1. 点のみが与えられた場合のプログラムの解法 通常、点が 5 つまたは 6 つしかない場合、およびそれらの点のうち 4 つが必要な長方形の角に属すると確信している場合は、これを試すことができます。

  1. すべての点の凸包を見つけます。凸包は、すべての点を完全に包含する N ゴンです。ポイントが突き出たペグであり、それらの周りにゴムバンドを伸ばして所定の位置にスナップすると、ゴムバンドの最終的な形状は凸包になります. 凸包を見つけるアルゴリズムは通常、左下の点から反時計回りに並べられた点のリストを返します。
  2. ポイント リストのコピーを作成し、残りのポイントが 4 つになるまでコピーからポイントを削除します。これらの残りの 4 つのポイントは、引き続き反時計回りに並べられます。
  3. 点 1、2、3、2、3、4、3、4、1 というように、連続する 3 つの点の各セットによって形成される角度を計算します。
  4. 角度が妥当な許容範囲外 (70 度未満または 110 度を超える) の場合は、手順 2 に戻り、次のポイント (またはポイントのセット) を削除します。
  5. 4 点の各セットの最小角度と最大角度を保存します。
  6. 手順 2 ~ 6 を繰り返し、毎回異なるポイントを削除します。
  7. 最小角度と最大角度が 90 度に最も近い点のセットを追跡します。

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

導入できるその他のチェックと制約が多数あります。たとえば、凸包 (ポイント N から N+1、および N+1 から N+2) 内の 3 つの連続するポイントのポイント間の距離が、本の予想される幅と高さに近い場合、これらを既知の良好なポイントとしてマークし、残りのポイントのみをテストして、どれが 4 番目のポイントであるかを確認します。

上記の手法は、かなりの数のポイントを取得すると扱いにくくなる可能性がありますが、本の角のポイントのうち 2 つまたは 3 つが凸包上にあると予想される場合は機能する可能性があります。

幾何学的な問題については、GeometricTools.com をチェックすることを常にお勧めします。これには、あらゆる種類の問題用に最適化された優れたソース コードが多数あります。特に AddAll.com を使用して安価なコピーを見つけることができる場合は、本も持っていると非常に便利です。

http://www.geometrictools.com/

2. サンプル画像のその他の画像処理技術 間違っているかもしれませんが、GPUImage には汎用の画像処理アルゴリズムがあまりないようです。他の画像処理アルゴリズムを使用すると、この問題をより簡単に解決できる可能性があります。

ここでは詳しく説明するスペースはありませんが、画像処理を成功させるための鍵の 1 つは、適切な照明です。照明が一貫していることを確認してください。本と背景を均等に照らす拡散光がうまく機能します。ファンキーな照明を使用して問題を単純化できます。4 つのライト (または特別なリング ライト) がある場合は、上、下、左、右から水平方向の照明を提供できます。表面が暗く見える。 http://www.benderassoc.com/mic/lighting/nerlite/Darkfield.htm

他の GPU ライブラリを使用して画像処理を実行できる場合は、次の手法のいずれかがうまく機能します。

  1. 接続されたコンポーネントのラベル付け (別名ブロブの検索)。本である白い塊を背景の残りの部分から分離するために、バイナリしきい値処理または分水界アルゴリズムを使用することはそれほど難しくありません。本のブロブが特定されると、コーナーを見つけるのがより簡単になります。(http://en.wikipedia.org/wiki/Connected-component_labeling) OpenCV では、「輪郭」を見つけることができます。
  2. エッジ ポイントのリストを生成し、4 つの個別のライン フィッティング ツールを使用して、上から下、右から左、下から上、左から右に検索して、本に関連付けられた 4 つの強力な (そしてほぼ直線の) エッジを見つけます。ただし、サンプル画像では、本の表紙がわずかに歪んでいるか、カメラのレンズがたる型の歪みを導入しています。
  3. 暗い背景で明るいコーナーを見つけるように設計されたコーナー検出器を使用します。木目調の背景に白い本を常に探している場合は、茶色の背景に白いコーナーを見つける検出器を作成できます。
  4. ハフ手法を使用して、イメージ内の最も強い 4 つの線を見つけます。(http://en.wikipedia.org/wiki/Hough_transform)

最適なアルゴリズム手法は、制約によって異なります。特定のサイズの四角形のみを探していますか? 前景と背景のコントラストは一貫していますか? 画像の外観を単純化するために照明を導入できますか? 等々。

于 2012-09-21T01:47:47.350 に答える