天天看點

【Matlab】彩色圖像的相似性比較

基于灰階直方圖比對(直方圖的交),設計并程式設計實作一種彩色圖像的相似性計算方法。

一、基本思路:

将彩色圖分為三通道(RGB),并計算各自的直方圖,對兩幅圖的RGB三通道分别進行直方圖比對,最終對三個比對結果求平均值。

二、算法及算法流程:

1.應用的算法:

【Matlab】彩色圖像的相似性比較

2.算法流程:

【Matlab】彩色圖像的相似性比較

硬體實作也比較簡單,也是用同樣的算法。

3.Matlab程式代碼:

//**matlab代碼**//
[file1,path1]=uigetfile({'*.jpg';'*.png'},'選擇圖檔');%取原圖
r1=imread([path1,file1]);
[file2,path2] = uigetfile({'*.jpg';'*.png'},'選擇圖檔');%取比較圖
r2=imread([path2,file2]);
r1 = mat2gray(r1);
r2 = mat2gray(r2);
 
x=0:1:255;
 
R1 = r1(:,:,1);%原圖的通道分離
G1 = r1(:,:,2);  
B1 = r1(:,:,3);
H_R1=imhist(R1);%對原圖的每個通道計算直方圖
H_G1=imhist(G1);
H_B1=imhist(B1);
 
R2 = r2(:,:,1);  %比較圖的通道分離
G2 = r2(:,:,2);  
B2 = r2(:,:,3);  
H_R2=imhist(R2);% 對比較圖的每個通道計算直方圖
H_G2=imhist(G2);
H_B2=imhist(B2);
 
subplot(231);imshow(r1);title('原圖');
subplot(232);imshow(r2);title('比較圖');
subplot(233);text(0.5,.5,{'相似度為',num2str(fin)},'FontSize',24,'HorizontalAlignment','center');
subplot(234);plot(x,H_R1,'b',x,H_R2,'r:');title('R直方圖比較');legend('原圖','比較圖');
subplot(235);plot(x,H_G1,'b',x,H_G2,'r:');title('G直方圖比較');legend('原圖','比較圖');
subplot(236);plot(x,H_B1,'b',x,H_B2,'r:');title('B直方圖比較');legend('原圖','比較圖');
 
t1=0;n1=0;m1=0;%賦初始值
t2=0;n2=0;m2=0;
t3=0;n3=0;m3=0;
for i=1:length(H_R1)
    y1=[];                %對R通道的算法分析
    if H_R1(i)~=H_R2(i)
        y1=min([H_R1(i),H_R2(i)]);
    else
        y1=H_R1(i);
    end
    L1(i)=y1;
    t1=t1+L1(i);
    n1=n1+H_R1(i);
    m1=m1+H_R2(i);
    
     y2=[];                %對G通道的算法分析
    if H_G1(i)~=H_G2(i)
        y2=min([H_G1(i),H_G2(i)]);
    else
        y2=H_G1(i);
    end
    L2(i)=y2;
    t2=t2+L2(i);
    n2=n2+H_G1(i);
    m2=m2+H_G2(i);
    
    y3=[];                %對B通道的算法分析
    if H_B1(i)~=H_B2(i)
        y3=min([H_B1(i),H_B2(i)]);
    else
        y3=H_B1(i);
    end
    L3(i)=y3;
    t3=t3+L2(i);
    n3=n3+H_B1(i);
    m3=m3+H_B2(i);
    
end
s1=min([n1,m1]);
fin1=(t1/s1);%R通道的相似度
 
s2=min([n2,m2]);
fin2=(t2/s2);%G通道的相似度
 
s3=min([n3,m3]);
fin3=(t3/s3);%B通道的相似度
 
fin=mean([fin1,fin2,fin3])%最終的圖像相似度

           

4.計算結果:

【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較
【Matlab】彩色圖像的相似性比較

繼續閱讀