显示DICOM monochrome2,其存储位少于分配的位

Nam*_*ata 5 c# dicom vtk gdcm

我想显示具有光度解释MONOCHROME2的DICOM文件.

一些图像规格是 -

Rows:           1024
Columns:        1024
No of Frames:   622
Bits Allocated: 16
Bits Stored:    10
High Bit:       9
Pixel Representation: 0
Sample per pixel: 1
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

但是,当我显示该文件时,它显示如下..使用gdcmRegionReader显示MONOCHROME2 dicom

但原始图像是这样的..原始图像

那么有人可以帮助我如何加载和显示MONOCHROME2 dicom图像.

Ami*_*shi 1

免责声明:我从未使用过相关工具包。我试图根据我对 DICOM 的理解来回答。根据我对 DICOM 的经验,语法很少是问题。真正的问题是概念和术语。

我在输出中看到两个问题。

一是关于渲染图像的一部分。请注意,整个数据不会呈现在您的输出中。检查工具包文档以了解如何在渲染图像时设置尺寸/边界。

另一个问题是关于输出质量。最初,我怀疑传输语法可能是问题所在。我不认为是这样,但只要确保在渲染之前不影响图像即可。我不确定您的工具包如何在渲染时处理压缩。

工具包中还有其他方法可以渲染像素数据。

_ImageViewer.SetRenderWindow(renderWindow);
_ImageViewer.GetRenderer().AddActor2D(sliceStatusActor);
_ImageViewer.GetRenderer().AddActor2D(usageTextActor);
_ImageViewer.SetSlice(_MinSlice);
_ImageViewer.Render();
Run Code Online (Sandbox Code Playgroud)

上面的代码是从“ 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