Re: [問題] 關於灰階影像處理..
※ calais007.bbs@ptt.cc (淺水中) wrote:
> ※ 引述《Pistachi.bbs@mobbs.stut.edu.tw ()》之銘言:
> : 轉灰階公式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
討論串 (同標題文章)
完整討論串 (本文為第 12 之 12 篇):