直方图特征

图像搜索现实的一般过程:

                         提取图像特征值→对特征值进行处理→匹配特征值

图像的特征值有很多,基于颜色特征纹理特征形状特征等,下面是基于图像颜色直方图特征的图像搜索。

利用直方图特征可以实现图像的目标搜索,通过计算两直方图之间的巴氏系数来匹配直方图。

巴氏系数:

1363668551_8706

其中,p,p’(归一化后)代表候选图像与待选图像的直方图特征,可以是16^2个或者16^3个特征区间。该值范围[0 1],z值越大,相似度越高。

简单的程序:

clc;close all;clear all;
%%直方图匹配示意
img=imread('0329.jpg');
img1=imread('0332.jpg');
% imshow(img,[])
[~,initstate]=imcrop(img);%截取目标框 车
initstate=fix(initstate); init=initstate;

temp=imcrop(img,initstate);%获取目标模板
temp = temp(:,:,1);
rectangle('Position',initstate,'LineWidth',2,'EdgeColor','g');

hist=imhist(temp);%灰度直方图
hist=hist/sum(hist);%归一化
k=0;
%% 下一帧中 在上一帧目标附近一定范围内搜索
 x=[-50:5:50];y=[-50:5:50];initstate1=[0 0 0 0];
for i=1:length(y)
    for j=1:length(x)
        k=k+1;
initstate1=[initstate(1)+x(i),initstate(2)+y(j),initstate(3),initstate(4)];
temp1=imcrop(img1,initstate1);
temp1 = temp1(:,:,1);
hist1=imhist(temp1);
hist1=hist1/sum(hist1);
q=0;
%计算巴氏系数
for f=1:256 
q=q+sqrt(hist(f)*hist1(f));
end
 p(j,i)=q;
    end
end
%系数最大的即为最优匹配
[rows,cols]=find(p==max(max(p)));

initstate1=[initstate(1)+x(cols),initstate(2)+y(rows),initstate(3),initstate(4)];
figure
imshow(img1,[])
 rectangle('Position',initstate1,'LineWidth',3,'EdgeColor','r');

前后帧的相似度图如下,我们要找出其中的最大相似度,为0.9827。

直方图特征作为一种颜色特征,其具有一定的尺度与旋转不变性。其可以应用在图像检索中,如下连接:

http://blog.csdn.net/luoweifu/article/details/8690835

http://blog.csdn.net/jia20003/article/details/7771651#comments

其亦可,在后续跟踪方法中作为一个判断准则,来选择合适的目标patch。

posted @ 2014-09-16 09:51  rose_琨  阅读(1141)  评论(0编辑  收藏  举报