日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像

發(fā)布時間:2023/11/27 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

VTK簡介:

VTK是一個開源的免費軟件系統(tǒng),主要用于三維計算機圖形學、圖像處理和可視化。Vtk是在面向?qū)ο笤淼幕A上設計和實現(xiàn)的,它的內(nèi)核是用C++構(gòu)建的。

因為使用C#語言開發(fā),而VTK是C++的,所以推薦使用VTK的.Net開發(fā)庫:ActiViz。

本系列文章主要以技術(shù)和代碼講解為主,ActiViz的安裝和環(huán)境配置可以參考:

ActiViz(VTK的C#庫)學習使用心得之二:Activiz.NET的下載和安裝

官網(wǎng)資料:https://www.kitware.eu/product/activiz

三維重建技術(shù)介紹:

對于一些復雜的圖像,醫(yī)生希望用三維重建來觀察病灶點來輔助診斷,一般在醫(yī)學領(lǐng)域內(nèi)的三維重建類型分為以下六種:

多層面重建(MPR)

最大密度投影(MIP)

表面陰影遮蓋(SSD)

容積漫游技術(shù)(VR)

曲面重建(CPR)

虛擬內(nèi)鏡技術(shù)(VE)

本系列教程最終效果(實際效果受顯卡能力決定):

當我們下載并安裝好ActiViz之后,準備好要三維重建的Dcm文件,在VS2017中新建一個桌面應用程序項目:

引用相關(guān)的動態(tài)庫:

在Form1的Load事件中:

        private void Form1_Load(object sender, EventArgs e)        {        //創(chuàng)建數(shù)據(jù)讀取對象            vtkDICOMImageReader reader = new vtkDICOMImageReader();            //小端字節(jié)            reader.SetDataByteOrderToLittleEndian();            //設置切片數(shù)據(jù)路徑            reader.SetDirectoryName(@"C:甥敳獲AdministratorDesktopvtk801");            vtkImageShrink3D shrink = new vtkImageShrink3D();            shrink.SetShrinkFactors(4, 4, 1);            shrink.AveragingOn();            shrink.SetInput((vtkDataObject)(reader.GetOutput()));            //提取等值面            vtkMarchingCubes skinExtractor = new vtkMarchingCubes();            //建立算法對象,從CT切片數(shù)據(jù)中提取出皮膚            skinExtractor.SetValue(0, 50); //提取出CT值為50的組織            skinExtractor.SetInputConnection(shrink.GetOutputPort());            vtkDecimatePro deci = new vtkDecimatePro();             deci.SetTargetReduction(0.3);            deci.SetInputConnection(skinExtractor.GetOutputPort());            vtkSmoothPolyDataFilter smooth = new vtkSmoothPolyDataFilter();  //光滑圖像            smooth.SetInputConnection(deci.GetOutputPort());            smooth.SetNumberOfIterations(200);            vtkPolyDataNormals skinNormals = new vtkPolyDataNormals();  //法線            skinNormals.SetInputConnection(smooth.GetOutputPort());            skinNormals.SetFeatureAngle(60.0);            vtkStripper stripper = new vtkStripper();              stripper.SetInputConnection(skinNormals.GetOutputPort());            vtkDataSetMapper skinMapper = new vtkDataSetMapper();             skinMapper.SetInput(stripper.GetOutput());            skinMapper.ScalarVisibilityOff();            //設置相機            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);//裝載繪圖窗口        }

這里我用的是頭顱的CT影像切片,運行后就得到了一個未上色的三維模型:

修改上面的代碼,嘗試提取腦部血管模型:

 //建立算法對象,從CT切片數(shù)據(jù)中提取出皮膚skinExtractor.SetValue(0, 250); //血管CT值為200-300左右

C#開發(fā)PACS、RIS醫(yī)學影像處理系統(tǒng)

總結(jié)

以上是生活随笔為你收集整理的vtk相机_C#开发PACS医学影像三维重建(一)使用VTK重建3D影像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。