Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-12-11, 13:47   #1
z47883177
初级会员
 
注册日期: 2011-12-11
帖子: 1
声望力: 0
z47883177 正向着好的方向发展
问题 颜色量化,求高手求解

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);
请问错哪,怎么改?
z47883177 当前离线   回复时引用此帖
旧 2012-03-17, 22:49   #2
民大matlab求知者
初级会员
 
注册日期: 2011-12-28
帖子: 4
声望力: 0
民大matlab求知者 正向着好的方向发展
默认 回复: 颜色量化,求高手求解

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

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 22:20


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