C#開發PACS醫學影像三維重建(十三):基於人體CT值從皮膚漸變到骨骼的梯度透明思路

喬克灬叔叔發表於2022-05-05

當我們將CT切片重建為三維體之後,通常會消除一些不必要的外部組織來觀察內部病灶,

一般思路是根據人體常見CT值範圍來使得部分組織透明來達到效果,

但這是非黑即白的,即,要麼顯示皮膚,要麼顯示神經,要麼顯示骨骼…

然而,當病灶介於兩個CT值範圍中間或重合時,要觀察病灶這將是一個非常困難的工作,需要手動旋轉、切割等一系列操作,

嚴重降低判斷準確性和工作效率,故此採用梯度透明思想來展現漸變過程。

 

準備一張人體CT值範圍表參考:

 

當我們對三維體使用滑鼠操作時,將CT值從最小值到最大值對映到三維體上面,並將透明度從0到100漸變,

如果能自己用程式碼實現效果最好,否則也可以用VTK進行梯度透明,部分C++程式碼如下:

vtkSmartPointer<vtkPiecewiseFunction> GradualOp = vtkSmartPointer<vtkPiecewiseFunction>::New();
GradualOp->AddPoint(10, 0.0);
GradualOp->AddPoint(20, 0.5);
GradualOp->AddPoint(30, 1.0);
volumeProperty->SetGradientOpacity(GradualOp);

梯度小於10點的不透明度乘子設為0,完全透明。

梯度大小為10時,不透明度為0;

梯度大小為20時,不透明度乘子為0.5;

梯度大小在10-20時,不透明度乘子通過線性對映至0-0.5之間的數值;

當梯度大小在20-30之間時,不透明度乘子通過線性對映至0.5-1.0之間;

梯度值大於30時,不透明度乘子為1

同樣最後還是用觀察者模式展現體重建

        //設定相機
            vtkCamera aCamera = new vtkCamera();

            aCamera.SetViewUp(0, 0, -1);

            aCamera.SetPosition(0, 1, 0);

            aCamera.SetFocalPoint(0, 0, 0);

            aCamera.ComputeViewPlaneNormal();


            //設定Actor
            vtkActor coneActor = new vtkActor();

            coneActor.SetMapper(skinMapper);

            coneActor.GetProperty().SetAmbient(0.5);

            coneActor.GetProperty().SetDiffuse(1);

            coneActor.GetProperty().SetSpecular(0.6);

            //顯示類
            vtkRenderer renderer = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();

            renderer.AddActor(coneActor);//新增coneActor物件

            //renderer.AddActor2D(new vtkProp());//新增textActor物件

            renderer.SetBackground(0, 0, 0);

            renderer.SetActiveCamera(aCamera);//新增相機

            renderer.ResetCamera();

            vtkRenderWindow renWin = renderWindowControl1.RenderWindow;//設定繪圖視窗renWin->AddRenderer(renderer);//裝載繪圖類

            vtkWin32RenderWindowInteractor iren = new vtkWin32RenderWindowInteractor();

            iren.SetRenderWindow(renWin);//裝載繪圖視窗

  

依照上述思想,實現最終效果,

案例①:從面部重建漸變到口腔牙齒,顯露出牙床鋼釘:

 

 

更為直觀、方便的觀察牙床鋼釘及口腔其他情況:

 

案例②:顱腦及上胸腔平掃,從皮膚漸變到肌肉、神經、骨骼

 

 

漸變過程中觀察骨骼、神經、血管等病灶:

 

 

相關文章