其實,simpleITK並不是使用最方便的.mex編譯,可以直接呼叫。而是透過 java的使用來implement。當然,也可以透過c++,c#,那不如直接去呼叫原始的 ITK,不必使用精簡版本的simpleITK。另外,simpleITK也有python版本,matlab也可以執行python腳本,但是效能並沒有java來得好。
只是,matlab並不能像執行.m file,或是呼叫.mexmaci64一般的直接執行 java code,必需經過一些處理。接下來就把小弟不才我胡搞瞎搞兩天的功力,全放在這兒了。
- 要先把simpleITK的java版本下載好。
- java必需要先放在 java class path裏去: 要被呼叫的 .jar檔案,必需要先放在 java class path裏。一般是使用 javaaddpath,將其置入Dynamic segment裏就好了。但是我一直沒辦法成功呼叫java,所以只好置入static segment中。在matlab,要把java class置入static segment,必需把該 .jar檔案包括絕對路徑寫在 "javaclasspath.txt" 之中。並將之放在 matlab的根目錄中
- 處理 JNI所造成的問題: 上次說過,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"。
- 重開matlab,剛剛的修改才會起作用。
- 接下來就可以用methods, methodview, javaMethod等來使用java的功能了。
沒有留言:
張貼留言