Dicom 工具包 (DCMTK) - 如何获得 Window 中心和宽度
Dicom Toolkit (DCMTK) - How to get Window Centre and Width
我目前正在使用 C++ 中的 DCMTK。我对这个工具包很陌生,但据我了解,我应该能够读取 window 中心和宽度以进行标准化。
我有一个包含我的 Dicom 数据的 DicomImage DCM_image 对象。
我将值读取到 opencv Mat 对象。但是,我现在想将它们标准化。
下面显示了我如何读取数据并将数据传输到 opencv Mat。
DicomImage DCM_image("test.dcm");
uchar *pixelData = (uchar *)(DCM_image.getOutputData(8));
cv::Mat image(int(DCM_image.getHeight()), int(DCM_image.getWidth()), CV_8U, pixelData);
感谢任何帮助。谢谢
读取 window 中心和宽度并不困难,但是您需要使用不同的构造函数并将 DcmDataset 传递给图像。
DcmFileFormat file;
file.loadFile("test.dcm");
DcmDataset* dataset = file.getDataset()
DicomImage image(dataset);
double windowCenter, windowWidth;
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1050), windowCenter);
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1051), windowWidth);
但实际上我认为在加载图像时应用 windowing 不是一个好主意。 Windowing 应该由用户调整。属性 Window Center 和 Window Width 允许多个值,这些值可用于将 window 调整到感兴趣的灰度范围("VOI",感兴趣的值)。
如果您真的只想创建一个 windowed 图像,您可以使用您的代码从文件内容构建图像并使用 DicomImage 提供的 createXXXImage 方法之一。
HTH
我目前正在使用 C++ 中的 DCMTK。我对这个工具包很陌生,但据我了解,我应该能够读取 window 中心和宽度以进行标准化。
我有一个包含我的 Dicom 数据的 DicomImage DCM_image 对象。 我将值读取到 opencv Mat 对象。但是,我现在想将它们标准化。 下面显示了我如何读取数据并将数据传输到 opencv Mat。
DicomImage DCM_image("test.dcm");
uchar *pixelData = (uchar *)(DCM_image.getOutputData(8));
cv::Mat image(int(DCM_image.getHeight()), int(DCM_image.getWidth()), CV_8U, pixelData);
感谢任何帮助。谢谢
读取 window 中心和宽度并不困难,但是您需要使用不同的构造函数并将 DcmDataset 传递给图像。
DcmFileFormat file;
file.loadFile("test.dcm");
DcmDataset* dataset = file.getDataset()
DicomImage image(dataset);
double windowCenter, windowWidth;
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1050), windowCenter);
dataset->findAndGetFloat64(DcmTagKey(0x0010, 0x1051), windowWidth);
但实际上我认为在加载图像时应用 windowing 不是一个好主意。 Windowing 应该由用户调整。属性 Window Center 和 Window Width 允许多个值,这些值可用于将 window 调整到感兴趣的灰度范围("VOI",感兴趣的值)。
如果您真的只想创建一个 windowed 图像,您可以使用您的代码从文件内容构建图像并使用 DicomImage 提供的 createXXXImage 方法之一。
HTH