2364288 发表于 2007-4-27 10:32

如何将图像色彩量化

颜色空间选取HSV颜色空间进行彩色图像检索。
   为了取得检索效果与检索时间的良好平衡,采用如下简单快捷的量化方法:
http://forum.vibunion.com/forum/attachment.php?aid=24895&noupdate=yes http://forum.vibunion.com/forum/images/yesxp_live/attachimg.gif
http://forum.vibunion.com/forum/images/attachicons/image.gif {CDB3352F-2AB3-46FC-B915-7ED17E45972F}.BMP (121.23 KB)
2007-4-25 15:41


         
http://forum.vibunion.com/forum/attachment.php?aid=24894&noupdate=yes http://forum.vibunion.com/forum/images/yesxp_live/attachimg.gif
http://forum.vibunion.com/forum/images/attachicons/image.gif {BAD15294-40F6-42FE-A39B-72780AD78CE2}.BMP (128.35 KB)
2007-4-25 15:41



接下来,将量化后的3个颜色分量H、S、V组合成1维待征颜色分量L,并用于特征提取。
         
http://forum.vibunion.com/forum/attachment.php?aid=24896&noupdate=yes http://forum.vibunion.com/forum/images/yesxp_live/attachimg.gif
http://forum.vibunion.com/forum/images/attachicons/image.gif {DBB89FD2-8A77-4118-B952-9998671D4D10}.BMP (127.67 KB)
2007-4-25 15:41



其中,表示不小于a的的最小整数。

2364288 发表于 2007-4-27 11:16

如何将此程序化啊?

2364288 发表于 2007-5-10 21:26

我发现在图像的H值<1,所以重新定义H的划分范围,做出来的无法通过,请高手帮我一下!
解解小弟的困惑啊
i=imread('kids.tif');
=RGB2HSV(i);
if(h>0&&h<=0.125)H=0;
elseif(h>0.125&&h<0.250)H=1;
elseif(h>0.250&&h<=0.375)H=2;
elseif(h>0.375&&h<=0.500)H=3;
elseif(h>0.500&&h<=0.625)H=4;
elseif(h>0.625&&h<=0.750)H=5;
else H=6;
end

eight 发表于 2007-5-10 21:40

试试:

i=imread('kids.tif');
=RGB2HSV(i);
H = zeros(size(h));
H(h>0&h<=0.125) = 0;


其余情况类似

2364288 发表于 2007-5-12 08:43

感谢,万分感谢,
但是L可不可以像下面一样表示
L=zeros(size(h));
L(v<0.2)=0;
L(s<0.2&v>=0.2)=(V-0.2)*7/0.8;
L(s>=0.2&v>=0.2)=4H+2S+V+8;
这样好像有点错误.

"其中,表示不小于a的的最小整数。"这个又如何表示啊?
请高手帮帮忙啊.解救小弟啊!

[ 本帖最后由 2364288 于 2007-5-12 08:56 编辑 ]

eight 发表于 2007-5-12 10:16

原帖由 2364288 于 2007-5-12 08:43 发表 http://forum.vibunion.com/forum/images/common/back.gif
感谢,万分感谢,
但是L可不可以像下面一样表示
L=zeros(size(h));
L(v=0.2&v>=0.2)=4H+2S+V+8;
这样好像有点错误.

"其中,表示不小于a的的最小整数。"这个又如何表示啊?
请高手帮帮忙啊.解救小弟啊!

1. 不行,请阅读matlab基础书
2. help floor

2364288 发表于 2007-5-12 14:06

L=zeros(size(h));
L(v<0.200)=0;
L(s<0.200&v>=0.200)=floor((V-0.2).*7/0.8);
L(s>=0.200&v>=0.200)=4*H+2*S+V+8;


???In an assignmentA(I) = B, the number of elements in B and
I must be the same.

Error in ==> D:\MATLAB\work\secailianghua.m
On line 23==> L(s<0.200&v>=0.200)=floor((V-0.2).*7/0.8);

eight 发表于 2007-5-12 14:14

原帖由 2364288 于 2007-5-12 14:06 发表 http://forum.vibunion.com/forum/images/common/back.gif
L=zeros(size(h));
L(v=0.200&v>=0.200)=4*H+2*S+V+8;


???In an assignmentA(I) = B, the number of elements in B and
I must be the same.

Error in ==> D:MATLABworksecailianghua.m
On...


我不是跟你说了 不行 吗

2364288 发表于 2007-5-13 16:53

能不能给一些建设性的提议啊,让小弟脱离苦海!

[ 本帖最后由 eight 于 2007-5-13 23:49 编辑 ]

eight 发表于 2007-5-13 23:50

原帖由 2364288 于 2007-5-13 16:53 发表 http://www.chinavib.com/forum/images/common/back.gif
能不能给一些建设性的提议啊,让小弟脱离苦海!

不太明白你的目的,试试如下代码:

ind = s<0.200&v>=0.200;
L(ind)=floor((V(ind)-0.2).*7/0.8);

2364288 发表于 2007-5-14 21:03

多谢,这倒提醒了我,要把V当成函数来对待.
不过,最后得到的L的值都是零,看来最初的量化有问题,或者是图像有问题.

[ 本帖最后由 eight 于 2007-5-14 21:44 编辑 ]
页: [1]
查看完整版本: 如何将图像色彩量化