0

画像にテキストをオーバーレイするのに最適な場所をプログラムで決定する必要があります。つまり、前景と背景を区別する必要があります。imagemagickを試しました:http://www.imagemagick.org/Usage/scripts/bg_removal。残念ながら、これでは十分ではありませんでした。画像はほとんど何でも写真にすることができますが、通常は背景がぼやけています。

liuliuのCCVを試してみたいと思います。コード:https ://github.com/liuliu/ccv 、デモ:http: //liuliu.me/ccv/js/nss/

デモでは、json haarカスケードのように見えるものを使用して顔を検出します:https ://github.com/liuliu/ccv/blob/unstable/js/face.js

方法:1。xml haarカスケードファイルをCCVで使用できるように変換します2.目標に最適なカスケードを生成します(画像へのテキストの配置)3。CCVのドキュメントを検索します

そして最後に、この問題を解決するためのより良い方法はありますか?

編集:私はここで国境の質問をしました:https ://stackoverflow.com/questions/10559262/programmatically-place-text-in-an-image

4

1 に答える 1

0
  1. xml haar cascade ファイルを変換して、CCV で使用できるようにします。
  2. 目標に最適なカスケードを生成する (画像上のテキスト配置)
  3. CCV のドキュメントを探す

1) (とにかく、どの XML ファイル? opencv からのいくつかだと思いますか?) または 3) についてはわかりませんが、2) についての私の見解は次のとおりです。

ハールカスケードをビオラ&ジョーンズ風にするには、顔などの目的のオブジェクトのみを含む一連の小さなトレーニング画像が必要です。

画像ごとに 1 つのオブジェクト、バックグラウンドをできるだけ少なくし、すべて同じ方向とサイズで、平均輝度と輝度の分散がすべて同じになるように正規化します。多くのトレーニング画像が必要になります。

また、背景のみを含む一連の負のトレーニング画像、正の例と同じサイズ/明るさなどが必要です。

ただし、このアプローチがまったく機能するとは思えません。

Haar フィルターは、すべての前景オブジェクトに共通する長方形の明るい/暗い構造を認識することによって機能します。したがって、目的の前景画像には共通の構造が必要です。

Haar フィルター カスケードの例は次のように機能します (非常に単純化されています)。

  • x1,y1 の長方形の領域は x2,y2 の領域よりも暗いですか? いいえの場合 --> 顔ではない、はいの場合 --> 続行
  • x3,y3 の領域は x4,y4 の領域よりも暗いですか? いいえの場合 --> 顔ではありません --> はいの場合は続行します
  • 等々 ....

(より大きな画像で顔の位置を見つけるには、画像内の可能なすべての位置に対してこのフィルターを実行します。フィルター カスケードは顔以外を非常に高速に拒否するため、実行可能です。)

そのため、前景オブジェクトはそれらの間で共通のパターンを持つ必要があります。顔の場合、目の領域は頬の領域よりも暗く、口はあごの領域よりも暗いなどです。

顔を回転させるだけでは、顔に対する同じフィルターは機能しなくなります。木と顔の両方に対して適切なフィルターを作成することはできません。また、一般的な前景オブジェクトに対してフィルターを作成することは絶対にできません。それらの間にそのような共通の構造はありません。考えられるオブジェクトのタイプごとに個別のフィルターが必要になるため、写真に非常に限られた数のタイプしか表示されない限り、これは機能しません

于 2012-05-12T08:13:00.350 に答える