這個作業其實早該交出去了,
只是因為老師給的期限比較寬鬆(期末前繳交即可),
所以一直沒放在心上,
直到最近才發現...嗯...快要期末了,
而且期末還有其他作業要忙,
是該開始寫寫影像處理的程式作業了,

當初一直在想到底要自己寫一個framwork出來?
還是直接用老師提供的範本去修改,
自己寫framework可以用Java/C++或是C#等語言,
但如果要用C++就要稍微摸一下MFC,
偏偏目前沒有那麼多時間摸MFC,
那更別說C#囉!
那本裝訂好的C#電子書現在還停留在第二章,
最後還是回到最熟悉的Java來寫,

寫了一整天發現,
其實影像處理的作業還蠻有趣的,
雖然Java在影像套件上面花了不少功夫,
但...沒有提供有效率的像素存取機制到是一大缺點,
通常在C/C++中這樣存取像素是比較快的...直接做指標的重新定位,
byte gray = image[x][y];
在Java中就必須寫成這樣:
int pixel = image.getRGB(x, y);
用function call是蠻沒效率的...雖然OO精神中delegate的概念大多靠function call來實現,
假設一張1024 * 768的圖片,
做最簡單的灰階化(彩色變成黑白),
就至少要呼叫786432次的getRGB(x, y),
天啊~每次呼叫function,
都是要做一些準備動作例如儲存進入function前的暫存器...JVM也是有暫存器的設計,
786432次的function call意味著786432次的準備動作,
但...我只是想取得在(x, y)位置上的像素值罷了...
難怪每處理一張圖都需要一點時間,
複雜一點的filter就要更多時間了...

寫了一整天,
已經完成三、四個filter...有一個還有bug,
進度已經比我預期的要好很多了

p.s. Adobe Photoshop明明不是Java寫的,
怎麼感覺像是Java寫的...內行人應該知道我說的是甚麼意思><
創作者介紹

Spirit的異想世界

dbi1463 發表在 痞客邦 PIXNET 留言(0) 人氣()