VTK虛擬切片提取

2021-07-02 05:13:03 字數 1485 閱讀 7325

計算機系統:win8.1( 64 bit )

vtk版本:6.2.0

1 說明

關於三維資料的重切主要通過vtkimagereslice實現(例項:imageslicing),而更加方便的是通過vtkimageplanewidget類來實現( 例項:fourpaneviewer,或者testimageplanewidget.py)。在例子imageslicing中,實現的是對體數資料整體切割,而在例fourpaneviewer中,可以實現對對體資料的區域性切割。例項fourpaneviewer比較複雜,參考資料[5]中簡單說明了vtkimageplanewidget的用法。在實際過程中,發現快捷鍵無效,根據參考資料[6]的說明可知,這是vtk本身的bug,因此為了避免使用快捷鍵,要自行設計button。

2 2d座標-->3d座標

使用上述方法獲得切片後,切片的座標是2d的,如何將其轉換為對應的3d座標呢?這是乙個問題。從2d座標到3d座標的轉換,其實是從乙個座標系到另外乙個座標系的轉換(《座標系轉換》)。

vtkimageplanewidget函式getresliceaxes()可以獲得乙個轉換矩陣(vtkmatrix4x4),根據《座標系轉換》第3章的公式,將虛擬切片的2d座標拓展到4d,其第3維和第4維分為別為0和1,然後使用轉換矩陣乘以這拓展後的座標,即可得到乙個新的4d座標(齊次座標)。這個新的4d座標的最前3維就是虛擬切片的2d座標所對應的3d座標。

具體實現**如下:

double in[4], *out;

in[0] = 274; % 將2d座標(274,363)拓展為(274,363,0,1)

in[1] = 363;

in[2] = 0;

in[3] = 1;

vtkmatrix4x4 *mat = imageplanewidget->getreslice()->getresliceaxes(); % 獲取轉換矩陣

out = mat->multiplydoublepoint(in); % out中的前3個元素即是對應的3d座標

參考資料

[1]vtk學習筆記-2-tiff影象資料的重切片

[2]基於vtk的任意平面切割

[3]vtk複習筆記——切割(一)——切割模型

[4]vtk滑鼠互動三例

[5] 胡戰利. 基於vtk的醫學影象三維重建及互動研究. 哈爾濱工業大學. 2023年1月

[6]keypressactivation for vtkimageplanewidget not working

[7]顯示dicom序列檔案的例項

搭建區塊鏈虛擬幣充提介面

一 幣聯錢包 幣聯是什麼?二 數字貨幣充提介面 幣聯錢包,至今未出現盜幣的安全便捷的數字資產api對接平台,提供btc eth usdt eos tron等主流節點的對接充提幣,生成位址歸集的api,支援多種語言。三 usdt介面四 數字貨幣安全管家 1 什麼是充提幣介面的8維度使用效能?8維度 安...

kvm虛擬機器SSH登入虛擬機器等待很久才提示輸入密碼

現狀 轉殖kvm虛擬機器在ssh登入時,要等待很久才提示輸入使用者 收集及嘗試方法 在server上 etc hosts檔案中把你本機的ip和hostname加入 在server上 etc ssh sshd config檔案中修改或加入usedns no 注釋掉server上 etc resolv....

虛擬主機的提權兩個小技巧

從別人那裡看到了 對虛擬主機的提權很有幫助 就收藏了 0x01 是否大家會想到呼叫遠端路徑去執行cmd,比如 x.x.x.x test cmd.exe 經過我的測試是可以成功的,而且就算你exp不免殺,殺軟也不會提示!當時記得我有個t00ls的朋友找提權,也是這種情況,當時幫他解決了。呼叫遠端路徑的...