1

現在、画像内の各ピクセルの RGB 値を取得する Java プログラムがあります。また、値の 2 次元行列で Haar ウェーブレットを計算する方法もあります。しかし、Haar ウェーブレットを計算するメソッドにどの値を指定すればよいかわかりません。各ピクセルの RGB 値を平均し、その上で haar ウェーブレットを計算する必要がありますか? または、r、g、b のいずれかを使用することもできます。画像の一意のフィンガープリントを作成しようとしています。2 つのウェーブレットの内積をとって画像が互いにどの程度類似しているかを確認できるため、これは良い方法であると他の場所で読みました。

Haar ウェーブレットを計算する必要がある値を教えてください。ありがとうジェス

4

2 に答える 2

2

R/G/B コンポーネントを異なるイメージと見なす必要があります。R、G、および B ごとに 1 つのマトリックスを作成し、ウェーブレットをそれらの部分に個別に適用します。

次に、3 つのウェーブレット圧縮チャネルから R/G/B イメージを再構築し、最終的にそれらを 3 チャネル ビットマップに結合します。

于 2011-03-03T16:23:05.790 に答える
1

eznme はあなたの質問に答えなかったので (あなたは指紋が欲しい、彼は圧縮と再構築について説明しています)、ここによく出くわす方法があります:

色と明るさの情報 (クロミナンスと輝度) を分離し、異なる重み付けをします。場合によっては、クロミナンスを捨てて輝度部分だけを使用することさえあります。これにより、指紋のサイズが大幅に縮小され (最大 3 倍)、絶対的な色ではなく、主に局所的な明るさによって画像を認識する方法が考慮されます。おまけとして、画像の色操作に関する堅牢性が得られます。

分離は、RGB 画像をYUVまたはYIQ色空間に変換するなど、さまざまな方法で行うことができます。輝度コンポーネントのみを保持したい場合、これら 2 つの色空間は同等です。ただし、クロミナンスのエンコード方法は異なります。RGB からの輝度 Y の線形変換は次のとおりです。Y = 0.299*R + 0.587*G + 0.114*B

数学を見ると、グレースケール画像を作成する以外に何もしていないことがわかります。数値的にすべてが等しい場合、緑は赤よりも明るく、赤は青よりも明るく知覚されることを考慮してください.

少しのクロミナンス情報を保持したい場合は、指紋をできるだけ簡潔に保つために、2 つの U、V コンポーネント (実際にはそれぞれ 8 ビット) の解像度を下げることができます。したがって、それらの情報を 4 ビットに減らし、シフト演算子と組み合わせることで、両方を 1 つの 8 ビット値に結合できます (Java でどのように機能するかはわかりません)。最終的な指紋距離の計算(あなたが言及した内積)では、クロミナンスは輝度と比較して重みが少なくなるはずです。

于 2012-03-21T14:12:32.157 に答える