星期二, 2月 25, 2014

如何給強大的 Matlab,再外加 ITK 的大力丸咧?(裝機篇)

上次稍稍和大家提過,醫學影像的處理,有一大部份是使用insight toolkit (ITK)了。而ITK和matlab的互通,也有不少人努力過,包括有matitk, simitk以及現在要提的 simpleITK

其實,simpleITK並不是使用最方便的.mex編譯,可以直接呼叫。而是透過 java的使用來implement。當然,也可以透過c++,c#,那不如直接去呼叫原始的 ITK,不必使用精簡版本的simpleITK。另外,simpleITK也有python版本,matlab也可以執行python腳本,但是效能並沒有java來得好。

只是,matlab並不能像執行.m file,或是呼叫.mexmaci64一般的直接執行 java code,必需經過一些處理。接下來就把小弟不才我胡搞瞎搞兩天的功力,全放在這兒了。

  1. 要先把simpleITK的java版本下載好。
  2. java必需要先放在 java class path裏去:
  3. 要被呼叫的 .jar檔案,必需要先放在 java class path裏。一般是使用 javaaddpath,將其置入Dynamic segment裏就好了。但是我一直沒辦法成功呼叫java,所以只好置入static segment中。
    在matlab,要把java class置入static segment,必需把該 .jar檔案包括絕對路徑寫在 "javaclasspath.txt" 之中。並將之放在 matlab的根目錄中
  4. 處理 JNI所造成的問題:
  5. 上次說過,simpleITK其實是用 java包裝的c語言(java warp),所以真正的code其實是藏在Java Native Interphase中。上面的步驟只能讓matlab叫到java,是叫不到JNI檔案的。在參考這一篇,還有這個討論串,以及這本書之後,發現解決方法有二。其一是寫另一個java程式把它load進來,其二是把路徑寫到matlab的"librarypath.txt"中。
    以上兩步都可以直接在matlab的command window打 "edit javaclasspath.txt""edit librarypath.txt"
  6. 重開matlab,剛剛的修改才會起作用。
  7. 接下來就可以用methods, methodview, javaMethod等來使用java的功能了。
這邊有一些些範例,雖然不是用matlab寫的,但是檔案load好了,幾乎就可以直接套用了。下次我們再來看看要怎麼使用。

沒有留言:

//for syntaxhighlighter 3 //看一下載入的JS模組有哪些,不要的就刪掉 //end syntaxhighlighter 3