我想显示具有光度解释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)
那么有人可以帮助我如何加载和显示MONOCHROME2 dicom图像.
免责声明:我从未使用过相关工具包。我试图根据我对 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