2016-04-04 22 views
1

現在、C++でDCMTKを使用しています。私はこのツールキットにはかなり新しいですが、理解しているように、正規化のためにウィンドウの中心と幅を読み取ることができます。Dicom Toolkit(DCMTK) - ウィンドウの中央と幅を取得する方法

私は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); 

何か助けていただければ幸いです。ありがとう

答えて

0

ウィンドウの中央と幅の読み取りは難しくありませんが、別のコンストラクタを使用して、画像に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); 

実際には、ロード時に画像にウインドウを適用することはお勧めできません。ウィンドウ処理は、ユーザーが調整可能なものです。ウインドウ中心とウインドウ幅の属性は、ウインドウを関心のあるグレースケール範囲(「VOI」、関心値)に調整するために適用できる複数の値を可能にします。

ウィンドウイメージを作成したい場合は、コードを使用してファイルの内容からイメージを構築し、DicomImageが提供するcreateXXXImageメソッドの1つを使用できます。

HTH

+0

が表示されます。上記のコードで見つかったwindowcentreとwindowwidthを使ってDicomイメージを作成したいのですが?それはできますか? – user3126802

+0

DicomImageにsetWindowメソッドがある場合、createMonochromeImage()を使用して結果を取得できます。あなたはdcm2pnmのソースコードを見てみたいかもしれません –

+0

ありがとう@kritzel_sw、あなたの提案で問題を解決! – user3126802

関連する問題