0

アルゴリズムは次の茎で構成する必要があると思います(例は下部にあります):

  1. 情報領域の検出 (単語、画像)。
  2. 最初のステップで検出された、要素領域と重ならない、最も上に近いスタンプ投稿位置を見つけます (このステップは、モンテカルロ法で実装できます)。

また、テキストと画像の領域検出について次のアイデアがあります。

  1. tesseract または別の OCR を使用します。この方法の欠点は、一部のページ要素 (線、画像など) を検出できないことです。また、テキスト認識はこのタスクのオーバーヘッドです。
  2. OpenCV または別のコンピューター ビジョン ライブラリを使用します (ただし、正確な方法はわかりません)。

ドキュメント上の最適なスタンプ位置を見つけるためのより良い方法、アルゴリズム、またはライブラリをアドバイスできる人はいますか?

スタンプ投稿サンプル

4

2 に答える 2

2

あなたがスタンプのサイズを知っていると仮定して、私は素朴ですが堅牢な解決策を続けます。

ドキュメントが1000*1000ピクセルで、スタンプが200*100であると仮定します。ドキュメントのピラミッドを作成します(たとえば、4つのピラミッドの場合、500 * 500、250 * 250、125 * 125、67 * 67にダウンサンプリングします)。最小のピラミッド(元の画像の16分の1)の場合、そのような場所を見つけたら、サイズが12 * 6の空の長方形を検索し、ピラミッドを上って問題がないかどうかを確認します。

これは最も効率的なソリューションではありませんが、ピラミッドがあるため、かなり高速に動作します。

OCRはそのような問題にはやり過ぎだと思います。

于 2012-12-12T19:35:26.937 に答える
1

これにはOCRは必要ありません。

元の画像の白いピクセルの値が 0 で、黒いピクセルの値が 1 で、グレーの色合いが中間の値であると仮定すると (そうでない場合は、必要に応じて画像を再スケーリングおよび/または無効にするだけです)、「理想的な」解決策は次のとおりです。

  • 最良の設定 = 無限大
  • スタンプ画像の可能な左上の位置 (x, y) ごとに:
    • s = 0 に設定
    • スタンプ内のすべての非白 (または「非透明」) ピクセル (i、j) について:
      • s += PagePixel(x+i, y+j) (またはピクセル値の他の関数。以下を参照)
    • s が best よりも低い場合は、より適切な配置が見つかりました。
      • best を s、bestX を x、bestY を y に設定します。

その後、(bestX, bestY) は、暗いピクセルの最小合計「重み」を上書きするスタンプの位置になります。非常に暗いピクセルを回避することをより重要視するために、二乗ピクセル値またはその他の関数を使用することをお勧めします。

上記の手順は、ページ内のピクセル数にスタンプ内の白以外のピクセル数を掛けた数に比例する時間を必要とするため、遅くなる可能性があります (最新の CPU では、まだ数分の 1 秒しかかからないはずです)。その場合、 OopsUserで提案されているように、両方の画像をサブサンプリングすることは理にかなっています。

于 2012-12-13T07:51:40.567 に答える