matlab实现颜色分布法

本文介绍了一种计算两张图像间余弦相似度的方法。通过将图像颜色量化为8*8*8的颜色区间,利用直方图计算图像的特征向量,并通过归一化和余弦距离计算来实现图像相似度的比较。
clear all;
clc;
Image_1=imread('G:\\壁纸\\高达UC\\gundam_uc-011.jpg');
Image_2=imread('G:\\壁纸\\高达UC\\gundam_uc-019.jpg');

%获得8*8*8的区间
temp_1=uint16(floor(double(Image_1)/32));
temp_2=uint16(floor(double(Image_2)/32));

%获得矩阵大小
[m1,n1,c1]=size(temp_1);
[m2,n2,c2]=size(temp_2);
%申明零矩阵
A=zeros(1,512);
B=zeros(1,512);


%计算向量
for i=1:m1
    for j=1:n1
        a=temp_1(i,j,1)*64+temp_1(i,j,2)*8+temp_1(i,j,3)+1;
        A(a)=A(a)+1;
    end
end

for i=1:m2
    for j=1:n2
        a=temp_2(i,j,1)*64+temp_2(i,j,2)*8+temp_2(i,j,3)+1;
        B(a)=B(a)+1;
    end
end

%进行向量归一化
A=A/sum(A);
B=B/sum(B);

%计算余弦相似度
p=sqrt(sum(A.^2));
q=sqrt(sum(B.^2));
s=(A*B');

%计算余弦相似度
cos1=s/(p*q)

     

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值