2012年7月12日 星期四

Matlab 的批次處理

一般的研究報告不是只有作一次影像處理
可能是不同的參數、不同的影像,作多次的處理
這時就需要電腦來自動處理

 在還沒正式寫程式之前,先來「複習」一下matlab中關於「檔案」及「資料夾」的函數。

其中 dir 就是顯示某個資料夾的內容。



↑ dir 顯示目前資料夾的內容



↑dir 加上萬用字元,篩選顯示的內容



↑dir 加上完整路徑


dir 輸出的結果可以用 length 來判斷檔案的多寡



↑length 的小例子



今天程式輸出的結果希望長得像下表


也就是使用 BTC 來壓縮影像,再解壓縮,並計算誤差值MSE,而且有三種不同的區塊大小。如果不使用批次處理,自己手動慢慢作,也是可以算得出來的。但我們常常會使用好幾十個、甚至好幾百張影像來比較各種不同的演算法,還是用批次的算法比較好!

會用到的程式
MyBTC(img, bsize):輸入值 img 為256階灰度影像、bsize為block大小,它可以是2, 4 或8,輸出值為一經BTC壓縮再解壓縮的256階影像。

由於 MyBTC  以前已經講過了,今天的重點在批次處理,所以不再重複這個自己寫的程式。
現在我們將所有要處理的影像都放在 d:\myimage,而且副檔名都是 bmp。現在我們要寫一個程式,程式名稱為 MybatBTC(dirname),輸入值 dirname為儲存測試影像的資料夾名稱;程式輸出結果就是將dirname內所有副檔名為bmp的影像作處理。

程式如下:



第9-11行:呼叫程式 myBTC,利用不同的區塊大小求取BTC解壓縮的結果

試試看吧!執行這個程式



由上表可知,區塊越大、誤差就越大,而毛髮多的猩猩(baboon)誤差特別大!

利用這樣的程式就可以一次處理整個資料夾內的影像檔,喝個茶再去看看結果,省去不少時間吧!

沒有留言:

張貼留言