基于区间统计的颜色直方图图像匹配算法

算法的原理在:

点击打开链接


原理大概意思是:将R,G,B各分量信息 颜色信息划分为 N 区间。

比例如以下图:4X4X4 的区间

 red
0-6364-127128-191192-255
blue0-634378180
64-1274567332
128-19112758258
192-255140474713
在统计 各个区间内的像素数:


... 

MATLAB 代码实现 

就算函数是dhist.m 文件 參数 bins 是须要划分的区间。filename 须要计算 直方图的文件名称。result 为计算的直方图结果。


function result = dhist(bins,filename)
   pic =  imread(filename);
   PR = pic(:,:,1);
   PG = pic(:,:,2);
   PB = pic(:,:,3);
   %%
   dim = bins^3; %%得到总维数
   %%划分的区间为
   step = round(256/bins);
   %%
    resultr = 0;
    resultg = 0;
    resultb = 0;
   GP=zeros(1,dim);
   for r=0:(bins-1)            %r分量
       resultr = 0;
       for s=(step*r):(step*(r+1)-1)
           resultr = resultr + length(find(PR==s));
       end 
       for g=0:(bins-1)        %g分量
           resultg = 0;
           for s=(step*g):(step*(g+1)-1)
               resultg = resultg + length(find(PG==s));
           end 
           %% 正确计算了b的数值
           for b=0:(bins-1)    %b分量
               resultb = 0;
               %% 划分的区间为
               for s=(step*b):(step*(b+1)-1)
                   resultb = resultb + length(find(PB==s));
                   %fprintf(' %d\n',s);   
               end  
                 GP((bins*bins*r)+((bins*g)+(b+1))) =  GP((bins*bins*r)+((bins*g)+(b+1))) + resultb + resultg + resultr;
           end
           %%
       end
   end
   result = GP;
%    [M,N]=size(result);
%    fprintf('%d     %d\n',M,N);
end


 
   

以下是測试文件:一下是 10x10的划分区间

red = dhist(10,'red.bmp');
blue = dhist(10,'blue.bmp');

cov = corrcoef(red,blue);
fprintf('相关系数为 %d\n\n',cov);










转载于:https://www.cnblogs.com/ldxsuanfa/p/9942564.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值