【问题标题】:DicomImage's writeBMP function produces unclear gray imageDicomImage 的 writeBMP 函数产生不清晰的灰度图像
【发布时间】:2015-07-23 20:54:12
【问题描述】:

我正在使用 DCMTK 读取并希望修改 DICOM 图像。我有以下代码:

#include <iostream>
#include <opencv\cv.h>
#include <dcmtk\dcmimgle\dcmimage.h>

int main() {
    try {
        DicomImage* dicomImage = new DicomImage("C:/Users/Kriselle/Documents/000004.dcm");
        if ((dicomImage != NULL) && (dicomImage->isMonochrome())) {
            dicomImage->writeBMP("C:/Users/Kriselle/Documents/z.bmp", 8);
            std::cout << "z.bmp is created" << std::endl;
        }
        else {
            std::cout << "dicomImage is null or not monochrome" << std::endl;
        }
    }
    catch (cv::Exception e) {
        std::cerr << e.what() << std::endl;
    }
    return 0;
}

我所做的只是创建一个 DicomImage 并将其像素数据写入具有我指定的文件名的 BMP 文件,但该图像仅返回一个灰色图像,原始图像的轮廓几乎无法识别。

它应该是这样的:https://www.dropbox.com/s/6dw8nlae8hfvqf6/000004.jpg?dl=0 这是代码产生的结果:https://www.dropbox.com/s/fff2kch124bzjqy/z.bmp?dl=0

我是否在代码中遗漏了某些内容,或者我不明白该函数的作用?任何人都可以请赐教吗?非常感谢!

【问题讨论】:

    标签: dicom dcmtk


    【解决方案1】:

    正如您在DicomImage 类的 API 文档中看到的那样,默认设置是在渲染单色 DICOM 图像时不启用 VOI 转换。在您的情况下,这似乎不合适,因此您应该指定更合适的 VOI 设置(例如 min-max window)或使用 VOI windows stored in the DICOM dataset 之一(如果有)。

    顺便说一下,在构造函数中加载图片后,还应该使用 getStatus() 方法检查此进程的状态。

    【讨论】:

    • 哇!非常感谢!那成功了!我必须阅读有关 VOI 转换的更多信息才能了解它是如何工作的。
    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 2015-04-27
    • 2013-07-27
    • 2023-03-23
    • 2021-08-15
    • 1970-01-01
    • 2023-02-25
    • 2012-12-07
    相关资源
    最近更新 更多