以下に含まれるコードは、hsv 色空間の 2 つの画像間のユークリッド距離を計算し、結果がしきい値 (ここでは 0.5 に設定) を下回る場合、2 つの画像は類似しており、それらを 1 つのクラスターにグループ化します。
これは、画像のグループ (実際にはビデオ フレーム) に対して行われます。
サンプル画像のグループではうまく機能しましたが、サンプルを変更すると、結果が奇妙になり始めます。たとえば、2 つの異なる画像では結果が低く、2 つの類似した画像では結果が高くなります (1.2 など)。
たとえば、これら 2 つの非常によく似た画像の結果は比較的高く、 最初の写真と2 番目の写真は実際には 0.5 未満である必要があります。
なにが問題ですか?
以下のコードでf
は、 を で割って、100
に近い値と比較できるようにしています0.5
。
Im1 = imread('1.jpeg');
Im2 = imread('2.jpeg');
hsv = rgb2hsv(Im1);
hn1 = hsv(:,:,1);
hn1=hist(hn1,16);
hn1=norm(hn1);
hsv = rgb2hsv(Im2);
hn2 = hsv(:,:,1);
hn2=hist(hn2,16);
hn2=norm(hn2);
f = norm(hn1-hn2,1)
f=f/100