Matlab)实现HSV非等间隔量化--相似判断:欧式距离--输出图片-
来源:互联网 发布:linux mv 编辑:程序博客网 时间:2024/04/28 02:40
%**************************************************************************
% 图像检索——提取颜色特征
%HSV空间颜色直方图(将RGB空间转化为HSV空间并进行非等间隔量化,
%将三个颜色分量表示成一维矢量,再计算其直方图作为颜色特征
%function : Hist = ColorHistogram(Image)
%Image : 输入图像数据
%Hist : 返回颜色直方图特征向量256维
%**************************************************************************
function Hist = ColorHistogram(Image)
Image = imread('D:\matlab\work\image_0007.jpg');
[M,N,O] = size(Image);
[h,s,v] = 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(i,j)<=15||h(i,j)>345
H(i,j) = 0;
end
if h(i,j)<=25&&h(i,j)>15
H(i,j) = 1;
end
if h(i,j)<=45&&h(i,j)>25
H(i,j) = 2;
end
if h(i,j)<=55&&h(i,j)>45
H(i,j) = 3;
end
if h(i,j)<=80&&h(i,j)>55
H(i,j) = 4;
end
if h(i,j)<=108&&h(i,j)>80
H(i,j) = 5;
end
if h(i,j)<=140&&h(i,j)>108
H(i,j) = 6;
end
if h(i,j)<=165&&h(i,j)>140
H(i,j) = 7;
end
if h(i,j)<=190&&h(i,j)>165
H(i,j) = 8;
%
%HSV空间颜色直方图(将RGB空间转化为HSV空间并进行非等间隔量化,
%将三个颜色分量表示成一维矢量,再计算其直方图作为颜色特征
%function : Hist = ColorHistogram(Image)
%Image
%Hist
%**************************************************************************
function Hist = ColorHistogram(Image)
Image = imread('D:\matlab\work\image_0007.jpg');
[M,N,O] = size(Image);
[h,s,v] = rgb2hsv(Image);
H = h; S = s; V = v;
h = h*360;
%将hsv空间非等间隔量化:
%
%
%
for i = 1:M