一、图像相似度计算相关原理
通过图片进行搜索相似图标的算法实现是:利用感知“感知哈希算法”,就是每一张图片都按照某种桂林生成唯一的“标识”,通过对“标识”进 比较,那么可以判断两张照片是相似以及相似程度。
相似度计算用到的算法:
1、直方图匹配
例如有图1和图2,分别计算两幅图像的直方图,Hist1,Hist2,然后计算两个直方图的归一化相关系数(巴氏距离,直方图相交距离)等等。
这种思想是基于简单的数学上的向量之间的差异来进行图像相似程度的度量,这种方法是目前用的比较多的一种方法,第一,直方图能够很好的归一化,比如通常的256个bin条的。那么两幅分辨率不同的图像可以直接通过计算直方图来计算相似度很方便。而且计算量比较小。
2、算法思想如下:
1、输入图像
2、灰度化
3、将图像大小归一化
4、简化灰度以减少计算量,例如所有的灰度除以5
5、计算平均灰度值avg
6.比较平均灰度值avg的大小,若大则记为1,小则记为0
7.比较两幅图像的指纹编码,计算相似度。
二、程序
clc;clear;close all;
%set(gcf,'outerposition',get(0,'screensize'));
imag1 = '2.jpg';
imag2 = '23.jpg';
[count1,I1] = GetRgbHist(imag1);
[count2,I2] = GetRgbHist(imag2);
value = imsimilar(count1,count2,2);
subplot(2,2,1);imshow(I1);title('Original Image');
subplot(2,2,2);hold on;imshow(I2);title('Image scale of 80%');
subplot(2,1,2);
plot(count1);
hold on;
plot(count2,'r');
legend('Original Image','Image scale of 80%',2);
str = sprintf('Similarity:%s %%',num2str(value));
title(str);
三、结果展示