Re: [問題] 關於灰階影像處理..

看板java作者時間19年前 (2006/12/13 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串12/12 (看更多)
※ 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
文章代碼(AID): #15VzQb00 (java)
討論串 (同標題文章)
文章代碼(AID): #15VzQb00 (java)