【问题标题】:Image similarity by Euclidean distance in hsv color space in MATLABMATLAB中hsv颜色空间中欧几里得距离的图像相似度
【发布时间】:2013-08-14 22:50:38
【问题描述】:

下面包含的代码计算 hsv 颜色空间中两幅图像之间的欧几里德距离,如果结果低于阈值(此处设置为 0.5),则两幅图像相似,并将它们分组到一个集群中。

这将针对一组图像(实际上是视频帧)完成。

它在一组示例图像上运行良好,但是当我更改示例时,它开始变得奇怪,例如,两个不同图像的结果较低,而两个相似图像的结果较高(如 1.2)。

例如,这两张非常相似的图像的结果相对较高: first picsecond pic 实际上应该低于 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

【问题讨论】:

标签: matlab image-processing hsv euclidean-distance


【解决方案1】:

这两行:

hn1=hist(hn1,16);
hn1=norm(hn1);

将您的 2D 图像转换为标量。我怀疑这不是你有兴趣做的......

编辑:

可能更好的方法是:

hn1 = hist(hn1(:),16) / numel(hn1(:));

但是,你并没有给我们太多关于数学的信息,所以这只是一个猜测。

【讨论】:

  • 我已经用这个更改了代码,我认为它会变得更好,对吗?我将 hn1=norm(hn1) 更改为 hn1 = hn1/norm(hn1);然后 f=norm(hn1-hn2)
猜你喜欢
  • 2013-07-20
  • 2018-04-20
  • 2014-01-17
  • 2023-03-12
  • 2013-10-24
  • 2016-01-01
  • 2016-09-11
  • 2013-01-09
相关资源
最近更新 更多