Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 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); 请问错哪,怎么改? |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2011-12-28
帖子: 4
声望力: 0 ![]() |
![]()
路过,我是个新手,看不懂。小弟有个难解请求您帮帮忙,希望您可以帮我,谢谢。将车牌转换成HSV颜色空间后,怎样提取出蓝底白字车牌的蓝色和白色的H、S、V三个分量的范围???小弟在此感激涕零,可以直接回复,或者联系QQ:534136830
|
![]() |
![]() |