下面包含的代码计算 hsv 颜色空间中两个图像之间的欧几里德距离,如果结果低于阈值(此处设置为 0.5),则两个图像相似,它将把它们分组到一个集群中。
这将针对一组图像(实际上是视频帧)完成。
它在一组样本图像上运行良好,但是当我更改样本时,它开始变得奇怪,例如,两个不同图像的结果低,两个相似图像的结果高(如 1.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