MATLAB比較圖像的相似度---圖像搜索演算法

一、圖像相似度計算相關原理

通過圖片進行搜索相似圖標的演算法實現是:利用感知「感知哈希演算法」,就是每一張圖片都按照某種桂林生成唯一的「標識」,通過對「標識」進 比較,那麼可以判斷兩張照片是相似以及相似程度。

相似度計算用到的演算法:

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);

三、結果展示

推薦閱讀:

TAG:MATLAB | 圖像處理 | 演算法 |