0

私は、各ユーザーが大きなアバターとこのアバターのサムネイルを持っているプロジェクトに取り組んでいます。アバターは 150x215、サムネイルは 50x50 です。サムネイルを生成するには、ユーザーがアバター内の正方形の領域を選択すると、システムがアバターをトリミングしてサイズ変更し、サムネイルを生成します。

次に、70x70 のサムネイルが必要です。見栄えが悪いため、50x50 のサムネイルのサイズを変更できません。私のアイデアは、アバター内のサムネイルを見つけるツールを作成し、サムネイルの場所を使用して、新しい 70x70 の画像を生成することでした。一部のサムネイルがトリミングされているだけでなく、サイズが変更されていることに気付くまでは、うまく機能していました。画像のサイズが変更されると、ピクセル単位の比較が不可能になるピクセルが失われます (そのため、アバター内のサムネイルの場所を検出できません)。

サムネイルがどこにあるかを特定する方法はありますか (サイズが変更されていても)? EMGUを使用して画像を処理しています。

助けてくれてありがとう

4

1 に答える 1

1

[編集1]

メモを見ると、元のアバターにスケーリング係数が適用されている場合は、同じスケーリング係数が適用された一時サムネイルを作成してから、既にスケーリングされたアバターに対してサムネイルの統計的同等性チェックを実行できます。これがどのように見えるかは、サムネイルがアバター内に存在する可能性がある各場所について、スケーリングされたアバター画像に対するサムネイルの「差分画像」を見つけることです。これらの「差分画像」のそれぞれについて、すべてのピクセルベースの差分を結合された単一の数値差分に追加し、それを x および y 位置の次元にサイズ変更された 2D 配列に格納します。サムネイルは、スケーリングされたアバター画像内に配置できます (このアバター画像の合計サイズよりも小さくなります。実際には、幅 = avatarWidth - thumbWidth および高さ = avatarHeight - thumbHeight になります)。この 2D 配列の単一差分インスタンスをすべて計算したら、配列内の最小値を見つけます。これは、使用するスケーリングされたアバター内の左上のピクセル位置です。もちろん、この計算された左上の点から 70 x 70 を取得するときは、50 x 50 の親指の新しいスケーリングされたサイズを考慮する必要があります。

(ちなみに) この 2D 配列の差分値を格納する必要はありません。最初にテストされた場所の値で初期化された最小位置を保持し、現在の位置が現在の最小値より小さい場合にのみ更新することができます。これにより、アレイの追加ストレージが回避されます。

[オリジナル] アバター画像のサイズが変更されると、補間も行われます。これは、すべての集中的な目的のために、元のピクセル情報が数学的に不可逆的に変更されたことを意味します。

元のサムネイル コードを使用して、70 x 70 ピクセルのサブイメージを取得するようにサムネイル コードを変更し、両側からさらに 10 ピクセルを切り取って 50 x 50 を作成すると、運が良くなるかもしれません!!! これは、50 x 50 と 70 x 70 の両方のサムネイルが必要であることを前提としています。

于 2012-06-25T16:34:44.323 に答える