0

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

コードに何か抜けているのでしょうか、それとも関数の機能を理解していませんでしたか? 誰でも私を啓発してもらえますか?どうもありがとうございました!

4

1 に答える 1

1

DicomImageクラスの API ドキュメントで読めるように、モノクロ DICOM 画像をレンダリングする場合、デフォルトでは VOI 変換は有効になっていません。あなたの場合、これは不適切と思われるので、より適切な VOI 設定 (例: min-max window ) を指定するか、DICOM データセットに保存されている VOI ウィンドウの 1 つ(存在する場合) を使用する必要があります。

ちなみに、コンストラクターでイメージをロードした後、getStatus() メソッドを使用してこのプロセスのステータスも確認する必要があります。

于 2015-07-23T12:54:12.857 に答える