資源簡介
基于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);
?
- 上一篇:hough變換的MATLAB程序
- 下一篇:wave_vorticity.m
評論
共有 條評論