我想显示具有光度解释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但是当我显示该文件时,它是这样显示的。

但原始图像是这样的..

所以有人可以帮助我如何加载和显示MONOCHROME2 dicom图像。
发布于 2017-06-06 15:12:50
免责声明:我从未使用过有问题的工具包。基于我对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-06 15:17:48
您真的应该在代码中使用vtkGDCMImageReader2。vtkGDCMImageReader2精确封装了gdcm::RegionReader,以便与VTK绑定。
如果由于某种原因不能直接使用这个类,只需将main函数中的C++代码复制/粘贴到C#代码中即可。
请参见:
https://stackoverflow.com/questions/44322287
复制相似问题