2017-06-02 77 views
5

我想顯示具有光度測量解釋MONOCHROME2的DICOM文件。顯示DICOM單色2,其位數少於存儲位數

一些圖像的規格爲─

Rows:   1024 
Columns:  1024 
No of Frames: 622 
Bits Allocated: 16 
Bits Stored: 10 
High Bit:  9 
Pixel Representation: 0 
Sample per pixel: 1 

我使用gdcmRegionReader以提取在下面的方式單個幀字節數組。

gdcm.ImageRegionReader _regionReader = new gdcm.ImageRegionReader(); 
_regionReader.SetRegion(_boxRegion); // _boxRegion is some region 
_regionReader.ReadIntoBuffer(Result, (uint)Result.Length); 
Marshal.Copy(Result.ToArray(), 0, _imageData.GetScalarPointer(), 
Result.ToArray().Length); 
_viewer.SetInput(_imageData); // _viewer = vtkImageViewer 

但是,當我顯示文件時,它顯示這樣的.. MONOCHROME2 dicom when I display using gdcmRegionReader

但原始圖像是這樣的.. Original Image

所以有人可以幫我如何加載和顯示MONOCHROME2 dicom圖像。

+0

你使用任何工具來顯示圖像?或者你只是想使用C#從字節數組中顯示一些控件(WinForm,Panal等)上的圖像? –

+0

我在使用VTK的面板中顯示該圖像。 – Namrata

+0

那麼究竟是什麼問題呢?編輯您的問題以添加更多信息。它是目前的形式,問題太廣泛而且難以回答。使其具體。 –

回答

1

聲明:我從來沒有使用過有問題的工具箱。我試圖根據我對DICOM的理解來回答。在我關於DICOM的經驗中,語法很少是問題。真正的問題是概念和術語。

我在輸出中看到兩個問題。

一個是關於渲染圖像的一部分。請注意,整個數據不會在您的輸出中呈現。檢查工具箱文檔以瞭解如何在渲染圖像時設置尺寸/邊界。

其他問題是關於輸出質量。最初,我懷疑傳輸語法可能是問題。我不認爲它是,但只是確保你在渲染前不妥協的圖像。我不確定你的工具包在渲染時如何處理壓縮。

還有其他方法可以在工具包中渲染像素數據。

_ImageViewer.SetRenderWindow(renderWindow); 
_ImageViewer.GetRenderer().AddActor2D(sliceStatusActor); 
_ImageViewer.GetRenderer().AddActor2D(usageTextActor); 
_ImageViewer.SetSlice(_MinSlice); 
_ImageViewer.Render(); 

上述代碼複製自「http://www.vtk.org/Wiki/VTK/Examples/CSharp/IO/ReadDICOMSeries」。這裏有詳細的代碼。

以下鏈接也可能會有所幫助:
http://vtk.1045678.n5.nabble.com/How-to-map-negative-grayscale-to-color-td5737080.html

https://www.codeproject.com/Articles/31581/Displaying-bit-Images-Using-C

+0

謝謝阿米特!我將標量類型的圖像數據更改爲簡短,現在問題已解決。 – Namrata

1

你真的應該在代碼中使用vtkGDCMImageReader2來代替。 vtkGDCMImageReader2精確封裝爲gdcm::RegionReader與VTK綁定。

如果由於某種原因,您不能直接使用此類,只需將C++代碼從主函數內複製/粘貼到您的C#代碼中即可。

請參見:

+0

感謝Malat快速回復!我使用vtkImageViewer2進行渲染,並解決了問題。 ImageData的標量類型應該很短。 – Namrata