http://blog.sina.com.cn/s/blog_62ccbb810100hven.html
真正投入到ITK中的時間不多,學習過程中主要在體會registration的架構,熟悉各種變換,準則,最佳化器和插值。今天因為老師布置的任務進行了調整,我後面的工作主要不在這塊,就前段時間對基於ITK的registration的認識做下總結,不能浪費之前所花的時間啊!
配準的過程主要包括四個模組,即:變換,插值,準則,最佳化。整個配準的實現過程實際上可以認為是一個最佳化過程。在確定變換方式後,待配准映像變換到參考映像的座標系中,由於經過變換後的位置可能不在網格點上,這時通過插值擷取變換後的點的亮度值,如線性插值,鄰域插值等等。
metric(準則),如均方差,互資訊準則等等。用於將變化後映像的差異數學化,它的輸入包括:參考映像和待配准映像,變換函數和interpolator(插值器)。用準則對資料進行計算後的值將用最佳化器進行最佳化,最佳化後的參數將返回迭代再進行配准,一直到達到要求。
最佳化器有兩種類型:1.singalvalue,即最佳化器返回單值的cost function,2.返回多值的,即muti-value。
配准就是在基於上述四個部分,針對不同的圖形情況,如單模,多模,去用不同的準則,變換,最佳化器和插值方法。在這個配准架構下,不同的部分在設定參數時有變換,這個也是痛點。不同的最佳化器,往往參數設定不同,這個就需要瞭解最佳化器和配准方法的演算法。如放射變換有旋轉變換的矩陣,平移量。muti-solution registration(多解析度配准)要改變步長等等。
配准步驟,設定待配准映像和參考映像的像素類型,維數。執行個體化上述四個部分,並將其組合到registration中,設定各部分的參數,並觸發配准開始。通過最終得到的參數重採樣帶配准映像,得到配准結果。比較配准前後和配准過程後的差異。執行個體化往往先定義——tyoedef,再指向智能指標,然後通過指標調用set*()函數設定參數。
在配准過程中,有時會根據具體情況先用*filter對映像進行處理。如在配准中對精度要求高的話,先用cast*filter將映像轉化為float型,配准後再轉化為char,或int型儲存。如果映像雜訊比較明顯,也可以先用*filter除噪在配准。有的也用filter保留邊緣,在配准。
ITK的參數輸入是在工程的屬性dubug中輸入,如:配准映像的檔案名稱,最佳化器的某些參數,變化後映像配准地區外的亮度,輸出映像的名字等等。具體代碼較多這裡不附上,只要理解上述過程,代碼是比較好看的。
任務換了,接下來應該針對任務做出新的打算,有近遠期計劃。最大的對手往往是自己,天行健,君子以自強不息,君子以厚德載物!