MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB图像处理] 颜色量化,求高手求解 (https://www.labfans.com/bbs/showthread.php?t=14167)

z47883177 2011-12-11 13:47

颜色量化,求高手求解
 
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);
请问错哪,怎么改?

民大matlab求知者 2012-03-17 22:49

回复: 颜色量化,求高手求解
 
路过,我是个新手,看不懂。小弟有个难解请求您帮帮忙,希望您可以帮我,谢谢。将车牌转换成HSV颜色空间后,怎样提取出蓝底白字车牌的蓝色和白色的H、S、V三个分量的范围???小弟在此感激涕零,可以直接回复,或者联系QQ:534136830


所有时间均为北京时间。现在的时间是 03:30

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.