5

我想显示具有光度解释 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

我正在使用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

但是当我显示该文件时,它会像这样显示..当我使用 gdcmRegionReader 显示时 MONOCHROME2 dicom

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

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

4

2 回答 2

1

你真的应该vtkGDCMImageReader2在你的代码中使用。vtkGDCMImageReader2精确封装gdcm::RegionReader以与VTK绑定。

如果由于某种原因您不能直接使用此类,只需将主函数中的 C++ 代码复制/粘贴到您的 C# 代码中即可。

看:

于 2017-06-06T07:17:47.813 回答
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

于 2017-06-06T07:12:49.960 回答