2015-07-28 52 views
2

我正在使用Kitware.VTK工具包以3d形式顯示2d圖像。在vtk中使用c#byte []圖像數據

我在byte []中有圖像。我想使用vtkImageviewer在Kitware.VTK的renderviewcontrol中顯示它。我對VTK沒有太多的想法。

有沒有其他方式來執行任務? 有人可以幫我嗎?

回答

2

您可以將您的字節數組複製到VTK世界中,並創建一個vktImageData對象以將它用作InputConnection

vtkUnsignedCharArray myCharArray = vtkUnsignedCharArray.New(); 
GCHandle myPinnedArray = GCHandle.Alloc(myByteArray, GCHandleType.Pinned); 
myCharArray.SetArray(myPinnedArray.AddrOfPinnedObject(), myData.Width * myData.Height * myData.Depth, 1); 

vtkImageData myVtkImageData = vtkImageData.New(); 
myVtkImageData.GetPointData().SetScalars(myCharArray); 
myVtkImageData.SetScalarTypeToUnsignedChar(); 

myVtkImageData.SetExtent(0, myData.Width - 1, 0, myData.Height - 1, myData.Depth -1); 

myVtkImageData.Update(); 

myData只是一個關於你的字節數組的圖像尺寸信息。您還應該確保GCHandlevtkImageData對象未被GC清除。

根據您的數據,可能需要設置OriginSpacing

+0

謝謝JohnnyQ!它有幫助。我需要更多幫助。我有多個圖像的字節數組,我想將它們轉換成3D vtkimage。 它可以通過將字節數據存儲爲jpg或bmp圖像來完成,並且它們將這些圖像系列作爲3d加載到vtk中,但我不想存儲圖像,而只是想直接將它們轉換爲數組中的3d vtkimage。 – Finisher001

+0

您可以將數組合併到一個數組中,並將其用作輸入數組,從而獲得一個3D卷作爲輸出。 – JohnnyQ

+0

嗨JohnnyQ,我正在使用kitware vtk版本5.6。 SetScalarTypeToUnsignedByte()方法不可用。通過使用其他類似的方法,我無法創建圖像。我也沒有得到,如何合併圖像數據數組。 – Finisher001