• 大小: 6KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: Matlab
  • 标签: 图像检索  

资源简介

基于HSV非均匀量化直方图的图像检索算法,采用matlab编程。实验结果较传统颜色直方图要好很多。

资源截图

代码片段和文件信息

%**************************************************************************
%                 图像检索——提取颜色特征
%HSV空间颜色直方图(将RGB空间转化为HSV空间并进行非等间隔量化,
%将三个颜色分量表示成一维矢量,再计算其直方图作为颜色特征
%function : Hist = ColorHistogram(Image)
%Image    : 输入图像数据
%Hist     : 返回颜色直方图特征向量256维
%**************************************************************************
function Hist = ColorHistogram(Image)
Image = imread(‘image.orig\488.jpg‘);
[MNO] = size(Image);
[hsv] = rgb2hsv(Image);
H = h; S = s; V = v;
h = h*360;

%将hsv空间非等间隔量化:
%  h量化成16级;
%  s量化成4级;
%  v量化成4级;
for i = 1:M
    for j = 1:N
        if h(ij)<=15||h(ij)>345
            H(ij) = 0;
        end
        if h(ij)<=25&&h(ij)>15
            H(ij) = 1;
        end
        if h(ij)<=45&&h(ij)>25
            H(ij) = 2;
        end
        if h(ij)<=55&&h(ij)>45
            H(ij) = 3;
        end
        if h(ij)<=80&&h(ij)>55
            H(ij) = 4;
        end
        if h(ij)<=108&&h(ij)>80
            H(ij) = 5;
        end
        if h(ij)<=140&&h(ij)>108
            H(ij) = 6;
        end
        if h(ij)<=165&&h(ij)>140
            H(ij) = 7;
        end
        if h(ij)<=190&&h(ij)>165
            H(ij) = 8;
        end
        if h(ij)<=220&&h(ij)>190
            H(ij) = 9;
        end
        if h(ij)<=255&&h(ij)>220
            H(ij) = 10;
        end
        if h(ij)<=275&&h(ij)>255
            H(ij) = 11;
        end
        if h(ij)<=290&&h(ij)>275
            H(ij) = 12;
        end
        if h(ij)<=316&&h(ij)>290
            H(ij) = 13;
        end
        if h(ij)<=330&&h(ij)>316
            H(ij) = 14;
        end
        if h(ij)<=345&&h(ij)>330
            H(ij) = 15;
        end
    end
end
for i = 1:M
    for j = 1:N
        if s(ij)<=0.15&&s(ij)>0
            S(ij) = 0;
        end
        if s(ij)<=0.4&&s(ij)>0.15
            S(ij) = 1;
        end
        if s(ij)<=0.75&&s(ij)>0.4
            S(ij) = 2;
        end
        if s(ij)<=1&&s(ij)>0.75
            S(ij) = 3;
        end
    end
end
for i = 1:M
    for j = 1:N
        if v(ij)<=0.15&&v(ij)>0
            V(ij) = 0;
        end
        if v(ij)<=0.4&&v(ij)>0.15
            V(ij) = 1;
        end
        if v(ij)<=0.75&&v(ij)>0.4
            V(ij) = 2;
        end
        if v(ij)<=1&&v(ij)>0.75
            V(ij) = 3;
        end
    end
end

%将三个颜色分量合成为一维特征向量:L = H*Qs*Qv+S*Qv+v;QsQv分别是S和V的量化级数 L取值范围[0255]
%取Qs = 4; Qv = 4
for  i = 1:M
    for j = 1:N
        L(ij) = H(ij)*16+S(ij)*4+V(ij);
    end
end
%计算L的直方图
for i = 0:255
    Hist(i+1) = size(find(L==i)1);
end
% Hist = Hist/sum(Hist);
T0=Hist;

% 循环读入图像
A=dir(‘image.orig\*.jpg‘);
for k=1:size(A)
   B=strcat(‘image.orig\‘A(k).name);
 

评论

共有 条评论