2016-07-08 6 views
0

私はDCMTKをC++プロジェクトに使用しており、dicomファイルからピクセルを取得したいと考えています。 ピクセルを持っているあなたをすでに:どのように私は、画素DCMTK C++:dicomファイルからデータピクセルを取得する方法

にすべての
+0

を維持する唯一の方法はありますか?私は、DICOMファイルからピクセルデータを読み取る完全な例を見つけることができません。誰か助けてもらえますか? – Ruchir

+0

OK、それを得ました。それはdcmimlement.h – Ruchir

答えて

1

まず取得するピクセルデータの変数を使用することができ、セクション「画素データに有益な何かを行う」に

  DicomImage *image = new DicomImage("test.dcm"); 
      if (image != NULL) 
      { 
      if (image->getStatus() == EIS_Normal) 
      { 
      if (image->isMonochrome()) 
       { 
        image->setMinMaxWindow(); 
        Uint8 *pixelData = (Uint8 *)(image->getOutputData(8 /* bits */)); 
        if (pixelData != NULL) 
        { 
        /* do something useful with the pixel data */ 
        } 
         } 
        } else 
      cerr << "Error: cannot load DICOM image (" <<  DicomImage::getString(image->getStatus()) << ")" << endl; 
      } 
      delete image; 

: 私はTHID基本的な例を使用しましたデータを符号なしの文字の配列として返します。たとえば、それらを8ビットのモノクロビットマップに転送し、それらを画面に表示することができます。ビットマップを構築するのに必要な高さと幅は、DicomImageオブジェクトから取得できます。

しかし、getOutputData()があなたが選んだメソッドであるかどうかは、何か有用かどうかによって大きく異なります。これは、getOutputData()が実際にレンダリング方法の種類であるためです。あなたが典型的なCT、MR、またはCRイメージを持っていると仮定すると、グレースケールの範囲は8ビットに再調整されています。

完全なグレースケール範囲でピクセルデータを抽出し、独自のレンダリング方法と処理方法を使用することをお勧めします。この場合、getInterData()を使用して内部的に格納されたピクセルデータをフルグレースケール範囲で返すことをお勧めします。モダリティLUTは中間データに適用されているので、デバイスによって測定されたグレースケール値を符号化する値の配列のカプセル化(クラスDiPixel)が得られます(CTの場合はHounsfield Unitsなど)。

DiPixelは、これらのグレースケールを無効ポインタとして返します。値を正しく処理するには、その表現(例えば、Uint8、Sint16、...)を決定する必要があります。このアプローチを使用

は明らかに多くの労力ですが、ピクセルデータをレンダリングを超えて何のために、それは上記のコード用のファイルが含まれているか、元のグレー値

+0

あなたの説明のためにありがとう、私はちょうどもう1つの質問があります、私はどのように私はDcmElementにアクセスすることができますknwoたい、私はこの例では、イメージの高さを取得したいと言ってみましょう:DcmElement要素; MyDataset-> findAndGetElement(tagOfRows、element);要素変数を使用して、タグ、VR、VM ..を取得できますが、要素の値を取得する方法はわかりません。 –

+0

DcmDatasetの属性値にアクセスするための型セーフなメソッドがあります。あなたのケースでは、パターンfindAndGet の名前が付けられています:MyDataset-> findAndGetUint16(tagOfRows、&lt;符号なし整数変数>)。彼らはいつも期待通りに動作しません。 findAndGetStringはほぼすべてのデータ型で機能しますが、文字列を便利な型に変換する負担があります。 –

+0

@kritzel_sw「期待どおりに動作するとは限りません。私はDCMTK開発者の一人であるので、私は予期せぬことに興味があります。 –

関連する問題