HSV颜色空间计算累加直方图 java源码

oukatu81 2008-09-12 06:46:51
在HSV颜色空间计算累计直方图,怎么用java实现?请高手赐教,感谢!
...全文
1278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oukatu81 2008-09-22
  • 打赏
  • 举报
回复 1
L*a*b怎么量化最好呀?
oukatu81 2008-09-19
  • 打赏
  • 举报
回复 1
再顶一下,
如何用Java做HSV或L*a*b的颜色直方图?
高手赐教
oukatu81 2008-09-18
  • 打赏
  • 举报
回复
您说的对,问过专家了,一般HSV空间可量化为(8,3,3),(18,3,3)、(12,5,5)和(6,2,2)等,相应的特征维数分别为72,162、300和24。实验表明,HSV的量化等级数分别为8、3、3,得到72维的特征矢量的时候,效果是最好的.
谢谢大家!

另外,在L*a*b*颜色空间统计直方图的时候,L*a*b*的量化最优方法是什么呢? 有一篇论文把L*分为3份,a,b各分为5分,效果不好把,还有什么分法?




seatree 2008-09-16
  • 打赏
  • 举报
回复
即使这样,HSV的直方图每个通道也是单独的,怎么可能合起来生成一维的,除非三个通道的直方图连接在一起,或者这样做有什么实际的背景
rover___ 2008-09-16
  • 打赏
  • 举报
回复
把H分成8份,s分成3份,v分成3份,之所以这样的比例(H大)是因为H相对重要,有决定性。分析颜色时这样不等比例处理才是合理的,平均化没有必要,也不科学。
oukatu81 2008-09-15
  • 打赏
  • 举报
回复
上面的朋友,我看了很多资料,一把都是把HSV空间非均匀量化,比如说把H分成8份,s分成3份,v分成3份,这样HSV空间变成72维的,即L=9H+3S+V (0<=L<=71)

我想把HSV空间均匀量化,得到一个192维的一维直方图,这样不把H,S,V各分量分为64维的话,怎么实现? 一定要均匀量化,得到192维的.(注:三个通道各自独立,即64+64+64, 而不是64*64*64)

不知道我表达的清不清楚,望解答谢谢.
seatree 2008-09-15
  • 打赏
  • 举报
回复
H是色相轮,单位是度,范围是0-360
S是饱和度,值为0-100%
V,有多种名称,一般为明度,也是0-100%
不知量化64级的想法从何而来,变换会有零头(不是线性的)
要做直方图就按照取值范围来做把取值范围平均分成几等份,然后分别计算落入区间的数值的量即可
oukatu81 2008-09-13
  • 打赏
  • 举报
回复
我查了很多资料,总结一下---1.先把RGB色空间转为HSV空间, 2.再把HSV空间的三个分量量化(本人想把H,S,V,都量化64级)
3.再计算HSV空间的颜色直方图 4.最后在把颜色直方图累加,变为累加直方图.

不知道我的想法有没有问题,请赐教!

另外,RGB to HSV的JAVA源码如下:

public static double[] RGB2HSV(int[] rgb)
{
double[] hsv = new double[rgb.length*3];
float[] temp = new float[3];
int i = 0;

for (i = 0; i < rgb.length; i++)
{
Color.RGBtoHSB(rgb[i]>>24&0xff, rgb[i]>>16&0xff, rgb[i]&0xff, temp);
hsv[3*i] = (double)temp[0];
hsv[3*i+1] = (double)temp[1];
hsv[3*i+2] = (double)temp[2];
}

return (hsv);
}

接下来,怎么办才好?高手帮忙呀,急!!
oukatu81 2008-09-13
  • 打赏
  • 举报
回复
顶一下
oukatu81 2008-09-12
  • 打赏
  • 举报
回复
高手帮帮忙

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧