3D Slicer Programmatically Set Slice Offset and Intersections 用代碼修改Slicer中的切片偏移和交叉點顯示
阿新 • • 發佈:2017-05-31
cnblogs 們的 int mod call eof col all mha
在3D Slicer中,當我們導入.mha/.mhd等格式的volume文件後,那麽我們就可以在Axial, Sagittal, Coronal三個方向來觀察我們的MRI或者CT的圖像了。3D Slicer界面提供了很多交互的功能,比如正上方就有一個滑動條slider,可以用來滑動切片觀察,如果我們不想手動來滑動slider,而是通過事件觸發,或者其他功能來觸發時,那麽我們就是要通過代碼來對切片進行交互。Slicer的用戶界面是Qt寫的,所有我們能通過用戶交互觸發的功能,都可以通過代碼來觸發。我們首先要獲取slicer的層管理器,然後獲得三個窗口的控件,然後通過窗口控件來獲得Logic類。因為Slicer使用的是典型的MVC框架,模型,視圖和控制器都分離開了。Slicer的模型就是各種節點Node,視圖就是各種窗口控件Widget,而控制器就是這些Logic類,所有的算法部分都可以放到Logic類裏頭,而跟用戶界面相關的控件都在Wdiget類裏。那麽我們通過代碼來設置切片偏移如下所示:
lm = slicer.app.layoutManager() redLogic = lm.sliceWidget(‘Red‘).sliceLogic() yellowLogic = lm.sliceWidget(‘Yellow‘).sliceLogic() greenLogic = lm.sliceWidget(‘Green‘).sliceLogic() # Set offset redLogic.SetSliceOffset(10) yellowLogic.SetSliceOffset(20) greenLogic.SetSliceOffset(30)
我們在工具欄中的Crosshair按鈕下點擊最後一個項Slice Intersections可以打開Slice的交叉十字標,如果我們不想手動點擊,而是加載我們的插件的時候就自動打開,可以使用如下代碼:
# Set intersection visible redLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1) yellowLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1) greenLogic.GetSliceCompositeNode().SetSliceIntersectionVisibility(1)
如果我們想在建立模型的時候,自動打開Slice Intersections Visible的話,可以添加下面這行代碼:
# Set slice intersections visible slicer.util.getNode(‘YourModelNode‘).GetDisplayNode(). SetSliceIntersectionVisibility(1)
3D Slicer Programmatically Set Slice Offset and Intersections 用代碼修改Slicer中的切片偏移和交叉點顯示