初级会员
注册日期: 2011-12-11
帖子: 1
声望力: 0
|
颜色量化,求高手求解
function Hist = ColorHistogram3(Image)
[M,N,O] = size(Image);
[h,s,v] = rgb2hsv(Image);
H = h; S = s;V = v;
h = h*360;
%将hsv空间非等间隔量化:
% h量化成8级;
% s量化成3级;
% v量化成3级;
for i = 1:M
for j = 1:N
for k = 1:O
if h(i,j,k)<=20||h(i,j,k)>315
H(i,j,k) = 0;
end
if h(i,j,k)<=40&&h(i,j,k)>20
H(i,j,k) = 1;
end
if h(i,j,k)<=75&&h(i,j,k)>40
H(i,j,k) = 2;
end
if h(i,j,k)<=155&&h(i,j,k)>75
H(i,j,k) = 3;
end
if h(i,j,k)<=190&&h(i,j,k)>155
H(i,j,k) = 4;
end
if h(i,j,k)<=271&&h(i,j,k)>190
H(i,j,k) = 5;
end
if h(i,j,k)<=295&&h(i,j,k)>271
H(i,j) = 6;
end
if h(i,j,k)<=315&&h(i,j,k)>295
H(i,j,k) = 7;
end
end
end
end
for i = 1:M
for j = 1:N
for k = 1:O
if s(i,j,k)<=0.2&&s(i,j,k)>0
S(i,j,k) = 0;
end
if s(i,j,k)<=0.7&&s(i,j,k)>0.2
S(i,j,k) = 1;
end
if s(i,j,k)<=1&&s(i,j,k)>0.7
S(i,j,k) = 2;
end
end
end
end
for i = 1:M
for j = 1:N
for k = 1:O
if v(i,j,k)<=0.2&&v(i,j,k)>0
V(i,j,k) = 0;
end
if v(i,j,k)<=0.7&&v(i,j,k)>0.2
V(i,j,k) = 1;
end
if v(i,j,k)<=1&&v(i,j,k)>0.7
V(i,j,k) = 2;
end
end
end
end
%将三个颜色分量合成为一维特征向量:L = H*Qs*Qv+S*Qv+v;Qs,Qv分别是S和V的量化级数, L取值范围[0,71]
%取Qs = 3; Qv = 3
for i = 1:M
for j = 1:N
for k = 1:O
L(i,j,k) = H(i,j,k)*9+S(i,j,k)*3+V(i,j,k);
end
end
end
%计算L的直方图
for i = 0:71
Hist(i+1) = size(find(L==i),1);
end
Hist = Hist/sum(Hist);
请问错哪,怎么改?
|