看板java
标 题Re: [问题] 关於灰阶影像处理..
发信站月光海洋BBS (Wed Dec 13 18:01:54 2006)
转信站ptt!ctu-reader!news.nctu!mobbs
※ [email protected] (浅水中) wrote:
> ※ 引述《[email protected] ()》之铭言:
> : 转灰阶公式Gray = 0.299 * R + 0.587 * G + 0.114 * B
> : 以下就是在做转灰阶不是吗?
> : for(int j=y;j<h;j++){
> : for(int i=x;i<w;i++){
> : X3=i*3;
> : gray=(int)(0.299*da[j][X3]+0.587*da[j][X3+1]+0.114*da[j][X3+2]);
> : da[j][X3]=da[j][X3+1]=da[j][X3+2]=gray;
> : }
> : }
> : 是先转成二维 再做灰阶
> : 我之前在做影像处理 需要详细的Pixel值 才会想要先转成二维
> : 不然转灰阶 我记得有现成的方法可以用吧= =?
> 好吧,後来想想Y(亮度)当灰阶来看也没啥不对
> 但也没必要用二维
> int r,g,b,Y;
> for (int i =0 ; i<pixels.length;i++){
> r = (pixels[i]>>16) & 0xff;
> g = (pixels[i]>>8) & 0xff;
> b = (pixels[i]) & 0xff;
> Y = (int) 0.299 * r + 0.587 * g + 0.114 * b;
> gray[i] = (Y << 16)| (Y << 8)| Y | 0xff000000;
> }
> 然後利用BufferedImage.setRGB(0,0,w,h,gray,0,w);
> 这样就可以很轻易的得到新的BufferedImage
> : 至於第二个问题 我记得java对於物件是传参照吧
> : 如果直接对传进来的图片修改 那原图也会被更改到
> 你图都画出去了,没有理由画出去的图会被改变
> 除非你很care原使资料
> 就算如此
> 开一个一样大的BufferedImage然後利用setRGB把算出来的Gray设上去也不困难吧
^^^
我实作是是这样做没错啊= =a
之前是想用来做人脸辨识..
可是做一做发现速度比用BCB慢很多
就放弃了Orz
写成二维阵列是因为还要做其它复杂的处理
可能是只截取一部分程式码下来 所以看起来怪怪的...
--
だれかとだれかつなぐ
赤い糸
--
◣ ███ ███ ☆ Post by Pistachi
◢█ ▉▉█ █▇█ ★ From 220-134-160-26.HINET-IP.hinet.net
◥█◤ ﹉ ﹍ ﹋ 月光海洋BBS 《mobbs.stut.edu.tw》 163.26.220.130