日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

VTK读取rawdata

發布時間:2023/12/31 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VTK读取rawdata 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VTK 讀取本地rawdata數據

  • 體渲染rawdata讀取
  • IntPtr傳入rawData數據

最近項目中要求將設備采集的數據以三維的形式顯示出來,經過檢索發現VTK的體渲染能夠滿足項目需求。
現在先對設備采集的數據做一些描述:設備每幀采集320根線,每根線由1024個點組成,每個點保存為無符號字符型(unsigned char),每次采集320幀。也即每次采集320 x 1024 x 320 x sizeof(unsigned char)數據量的rawdata。

體渲染rawdata讀取

VTK 提供了很多的圖像讀取類以讀取相應的圖像格式(如 vtkPNGReader),經過檢索,要讀取項目中的這種數據我用到了vtkImageReader,下面代碼展示了讀取方式(C#):

vtkImageReader reader = vtkImageReader.New();reader.SetFileName("rawdata_path.bin");reader.SetNumberOfScalarComponents(1);reader.SetDataScalarTypeToUnsignedChar();//將數據設定為unsigned char型 reader.SetFileDimensionality(3);//設置顯示圖像的維數 reader.SetDataExtent(0, 319, 0, 1023, 0, 319);//圖片屬性圖片像素320*1024,最后兩參數表示有320張圖//故x方向索引為0~319,y:0~1023,z:0~319reader.SetDataSpacing(1, 0.5, 1); //設置x,y,z像素間間距,為了不讓生成的模型太長,把y方向做了壓縮reader.update();

之后就可以將reader.GetOutputPort()加入到后續處理管線當中。但此種方法在嘗試后發現即便調用reader.Dispose();釋放,程序仍然占有rawdata_path.bin文件,在后續程序其他位置繼續讀取該文件時就會導致讀取失敗。不知道是什么原因。。。

IntPtr傳入rawData數據

為了解決上面提到的文件占用問題,我決定不直接調用VTK的vtkImageReader,改為先將數據讀到內存中,再將數據傳給VTK,以下為相應C#代碼( 其中:rawDataIntPtr 為上面rawdata_path.bin文件讀取到內存的句柄,具體讀取方法略):

vtkImageImport imageImport = vtkImageImport.New();imageImport.SetImportVoidPointer(rawDataIntPtr);imageImport.SetDataScalarTypeToUnsignedChar();imageImport.SetWholeExtent(0, 319, 0, 1023, 0, 319);imageImport.SetDataSpacing(1, 0.5, 1); imageImport.SetDataExtentToWholeExtent(); imageImport.Update();

之后就可以將 imageImport.GetOutputPort() 加入到后續處理管線當中。

總結

以上是生活随笔為你收集整理的VTK读取rawdata的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。