资源简介

matlab实现的基于颜色直方图的特征匹配,RGB转换成hsv, 量化颜色,计算两幅图像特征向量之间的距离,实现颜色特征匹配。同时,二值化之后,计算zernike矩和hu不变矩,可以作为第二个特征匹配量。

资源截图

代码片段和文件信息

%**************************************************************************
%                 图像检索——提取颜色特征
%HSV空间颜色直方图(将RGB空间转化为HSV空间并进行非等间隔量化,
%将三个颜色分量表示成一维矢量,再计算其直方图作为颜色特征
%function : Hist = ColorHistogram(Image)
%Image    : 输入图像数据
%Hist     : 返回颜色直方图特征向量36维
%**************************************************************************
function Hist = ColorHistogram(Image)
%Image=imread(‘09.bmp‘);
[MNO]=size(Image);
[hsv]=rgb2hsv(Image);
H = h; S = s; V = v;
h=h*360;
%when v<0.2it is a black area;when s<0.2&0.2=for i=1:M
    for j=1:N
        if v(ij)<0.2
           L(ij)=0;
         end
        if s(ij)<0.2&&v(ij)>0.2&&v(ij)<=0.8
            L(ij)=(v(ij)-0.2)*10+1;
        end
        if s(ij)<0.2&&v(ij)>0.8&&v(ij)<=1 
                    L(ij)=7; %white area
        end
     end
end
%*************************************************

%将hsv空间非等间隔量化:color area
%  h量化成7级;Similar to the vision model
%  s量化成2级;
%  v量化成2级;
for i = 1:M
    for j = 1:N
        if h(ij)>330&&h(ij)<=360||h(ij)<=22
                H(ij) = 0;
         end
        if h(ij)>22&&h(ij)<=45
            H(ij)=1;
        end
        if h(ij)>45&&h(ij)<=70
            H(ij)=2;
        end 
         if h(ij)>70&&h(ij)<=155
            H(ij)=3;
        end
         if h(ij)>155&&h(ij)<=186
            H(ij)=4;
        end
         if h(ij)>186&&h(ij)<=278
            H(ij)=5;
        end
         if h(ij)>278&&h(ij)<=330
            H(ij)=6;
        end
    end
end
 for i = 1:M
      for j = 1:N  
            if s(ij)>0.2&&s(ij)<=0.65
                S(ij)=0;
            end
            if s(ij)>0.65&&s(ij)<=1
                S(ij)=1;
          end
   end
end
  for i=1:M
      for j=1:N
          if v(ij)>0.2&&v(ij)<=0.7
              V(ij)=0;
          end
          if v(ij)>0.7&&v(ij)<=1
              V(ij)=1;
          end
      end
  end
 %将三个颜色分量合成为一维特征向量:L=4*H+2*S+V+8
 for i=1:M
     for j=1:N
         if s(ij)>0.2&&s(ij)<=1&&v(ij)>0.2&&v(ij)<=1
             L(ij)=4*H(ij)+2*S(ij)+V(ij)+8;
         end
     end
 end
 %计算L的直方图
for i=0:35
    Hist(i+1)=size(find(L==i)1);
end
Hist = Hist/sum(Hist);
i=0:1:35;
figurestem(i+1Hist(i+1));
%黑、灰、白三种色像素点的和
%HH(1)=Hist(1);
%for i=1:7
  %  HH(i+1)=HH(1)+Hist(i+1);
  %end
%UncolorHist=HH(8)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      24016  2009-05-12 17:42  颜色形状匹配\color.jpg

     文件      19966  2009-05-12 17:41  颜色形状匹配\color2.jpg

     文件      23916  2009-05-02 13:50  颜色形状匹配\color3.jpg

     文件      23782  2009-05-02 13:51  颜色形状匹配\color31.jpg

     文件       2562  2009-05-12 15:45  颜色形状匹配\ColorHistogram.m

     文件       1619  2012-07-23 14:17  颜色形状匹配\feturematch.m

     文件       1820  2009-05-02 16:06  颜色形状匹配\HuNoment.m

     文件       1039  2010-05-04 01:37  颜色形状匹配\zernike.m

    ..AD...         0  2012-07-23 14:17  颜色形状匹配

----------- ---------  ---------- -----  ----

                98720                    9


评论

共有 条评论