Re: [問題] 關於灰階影像處理..
※ 引述《devlish (灰色地帶)》之銘言:
: ※ 引述《Pistachi.bbs@mobbs.stut.edu.tw ()》之銘言:
: : 提供一個方法 很久以前寫的
: : 變數的命名實在是...自已都要看不懂嚕
: : 總之把這當黑盒子用就好..
: : 不要管裡面寫什麼了XD
: : BufferedImage -> double[][]
: : -----------------------------------------------------
: : double[][] transfer(BufferedImage img){
: : int w=img.getWidth();
: : int h=img.getHeight();
: : int X3_1=0;
: : int X3_2=0;
: : double[][] temp = new double[h][w*3];
: : double[] a=img.getRaster().getPixels(0, 0, w, h, a);
: : for(int j=0;j<h;j++){
: : for(int i=0;i<w;i++){
: : X3_1=(j*w+i)*3;
: : X3_2=i*3;
: : temp[j][X3_2]=a[X3_1];
: : temp[j][X3_2+1]=a[X3_1+1];
: : temp[j][X3_2+2]=a[X3_1+2];
: : }
: : }
: : return temp;
: : }
: : m*[1;37;40m-----------------------------------------------------*[m*[mm
: : m*[1;37;40m-----------------------------------------------------*[m*[mm
: : 轉灰階
: : void doGray(double[][] da,int x ,int y,int w,int h){
: : int X3=0;
: : int gray=0;
: : 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;
: : }
: : }
: : }
: : m*[1;37;40m-----------------------------------------------------*[m*[mm
: 請問,如果以用BufferImage來做處理為概念,要將小弟所寫的上面的程式碼繼續往下寫
: 先將Load的圖片轉為灰階,然後再將其中的影像轉為二維的灰階陣列,並且將結果與原先
: 的圖片一同顯示於兩個不同的window,也就是說,除了原先顯示的圖片之外,還要多顯示
: 一個處理過的灰階影像圖片(已抓到Pixel值的)
: 小弟在書上看到一個Utilities的方法,但試下來的結果就只有
: image=Utilities.makeBufferedImage(image);
: 這一條成功而已,而且原先會顯示的Pixel值也不再顯示了.......= "=
: 上面的敘述有點亂,可能因為我的腦袋也是一團亂....
: 想請教,以這樣的敘述下來,有什麼好的方法可以呈現出來....
基本上我有幾點覺得很困惑
1.為什麼一定要轉成二維的來做灰階?
你的演算法真的是做灰階嗎?我看起來覺得不像
我的感覺是在做矩陣運算
是在做RGB轉成Y,Cb,Cr的運算吧!
gray應該是RGB三個值要相等
你的怎麼算也不會相等
2.你要畫兩張圖
為什麼不一開始先把原圖就直接畫出來
做完圖型運算後再把結果畫出來
這樣就會很完美的顯示兩張圖了阿
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.36
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 8 之 12 篇):