5

小さなプレビュー サイズにトリミングしたいイラストの画像がたくさんあります。

問題は、図の「興味深い」部分を表示するためにそれらをトリミングしたいことです(つまり、空白の領域を避けます)。

通常、画像の背景は単色または微妙なグラデーションになっています。それらはほとんどベクトル スタイルのアートワークで、かなり独特な形状をしています。

以下にいくつかの例を示します:リンク;-)

スライディング ウィンドウを使用して何らかの画像特徴検出アルゴリズムを使用して、最大数の特徴を持つ領域を見つけることを考えていました。

私はこれを PHP で実装していますが、ライブラリや拡張機能が利用できない場合は、自分で実装してもかまいません。

アイデア?

4

7 に答える 7

2

これは、エッジ検出フィルターを使用し、画像のエッジの中心をトリミングしてサムネイルを生成する、かなり単純なアプローチです。ほとんどの画像でうまく機能しますが、複数の被写体がある場合は機能しません. ソース画像の「興味深い」ポイントを特定する他の方法についての提案を受け付けています。

于 2010-06-21T22:13:38.247 に答える
2

ImageMagickにはトリム操作があります。ライブラリとして利用できますが、PHP から使用するのがどれほど難しいかはわかりません。いくつかのPHP インターフェイスがあります。

于 2010-03-01T01:38:22.670 に答える
2

わかりましたので、例を見た後、私がやったことは次のとおりです。

各イメージのすべての行とすべての列を合計します。2 つの配列が得られます。どちらも次のようになります。

      /-----\  /--\
    _/       --    |
___-                \_________

いくつかの画像のこれらの配列を見て、適切なしきい値を見つけます (おそらくゼロより少し上の何か)。次に、このしきい値の左端と右端の交差点で、トリミングする必要があります。そうでない場合は、十分に明確にすることができたと思います-尋ねてください!

于 2010-03-01T04:00:29.030 に答える
1

PHP 用の ImageMagick には、サムネイルの自動生成があります。This SO questionにはImageMagick auto-cropオペレーターへのリンクがあり、よくわかりませんが、これはPHPインターフェースだと思います。

リンクから:

bool Imagick::trimImage ( float $fuzz )
画像から背景色のエッジを削除します。

より一般的な「面白さ」については、シームカービングの逆を試してみてください(最低エネルギー領域ではなく、最高エネルギー領域を見つけるため)。

于 2010-03-01T01:37:36.743 に答える
1

ええと、エッジ検出アルゴリズムを使用することを検討したいかもしれません。エッジの数が最も多い領域を選択します。ぼやけていないエッジ (背景からのものである可能性があるため) に高い重みを付けます。

于 2010-03-01T00:41:40.757 に答える
1

Drupal にはsmartcropと呼ばれるプロジェクトがあり、これには、画像内の最高のエントロピーと「興味深い」領域を見つけるための PHP コードがあります。出力例を参照してください。

Drupal 以外のプロジェクトでも、モジュール内の関数とライブラリを使用できるはずです。

于 2011-02-04T16:06:07.533 に答える