2016-06-30 3 views
0

いくつかのピクセル処理を行うためにDICOMファイルを解析する必要があります。私はDCMTKライブラリを試みましたが、それは私のために働いていません。 DICOMファイルを読みたいので、C++の軽量クロスプラットフォームライブラリのように、非常にシンプルなものがほしいです。cicでdicomピクセルを読み取る方法

ご意見をいただければ幸いです。

+1

あなたは「それは働いていない」よりも具体的なことができれば、いくつかの助けを得ることができるかもしれません。 (私の限られたDICOM知識に基づいて、「軽量」はあなたが見つけられないものです.DIMTTKだけでも標準の「大きな部分」を実装すると主張しています)。 – molbdnilo

+0

私が働かないということは、それを使用するには、私はubuntuにdcmtk.3.6.0をインストールしましたが、どこで起動するのかわかりませんでした。どうすればdcmファイルを読むことができますか? –

+0

DCMTKのドキュメント(http:// supportなど)はどうですか? dcmtk.org/docs-snapshot/mod_dcmdata.html#Examples)および/または多数のサンプルツール(ソースコードパッケージの "apps"サブディレクトリ)に追加することができます。 –

答えて

0

ImageMagickを使用してDICOMファイルを読み取ることができます.DICOMファイルはフリーでクロスプラットフォームで、一般にLinuxディストリビューションにインストールされ、OSXおよびWindowsで使用できます。あなたはバージョン7.xを使用したい場合はバージョン6.xのサンプルは以下の

...

//////////////////////////////////////////////////////////////////////////////// 
// sample.cpp 
// Mark Setchell 
// 
// ImageMagick Magick++ sample code 
// 
// Compile with: 
// g++ sample.cpp -o sample $(Magick++-config --cppflags --cxxflags --ldflags --libs) 
//////////////////////////////////////////////////////////////////////////////// 
#include <Magick++.h> 
#include <iostream> 

using namespace std; 
using namespace Magick; 

int main(int argc,char **argv) 
{ 
    // Initialise ImageMagick library 
    InitializeMagick(*argv); 

    // Create Image object and read in DICOM image 
    Image image("sample.dcm"); 

    // Get dimensions 
    int w = image.columns(); 
    int h = image.rows(); 
    cout << "Dimensions: " << w << "x" << h << endl; 

    PixelPacket *pixels = image.getPixels(0, 0, w, h); 

    for(int y=0; y<h; y++){ 
     for(int x=0; x<w; x++){ 
     Color color = pixels[w * y + x]; 
     cout << x << "," << y << ":" << color.redQuantum() << "/" << color.greenQuantum() << "/" << color.blueQuantum() << endl; 
     } 
    } 
} 

サンプル出力は

Dimensions: 512x512 
0,0:0/0/0 
1,0:0/0/0 
2,0:0/0/0 
3,0:0/0/0 
4,0:0/0/0 
5,0:0/0/0 
6,0:0/0/0 
7,0:0/0/0 
8,0:0/0/0 
9,0:0/0/0 
10,0:0/0/0 
11,0:0/0/0 
12,0:0/0/0 
13,0:0/0/0 
14,0:0/0/0 
15,0:0/0/0 
16,0:0/0/0 
17,0:0/0/0 
18,0:0/0/0 
19,0:0/0/0 
20,0:0/0/0 
21,0:0/0/0 
22,0:0/0/0 
23,0:0/0/0 
24,0:0/0/0 
25,0:0/0/0 
... 
... 
260,18:80/80/80 
261,18:144/144/144 
262,18:192/192/192 
263,18:80/80/80 
264,18:32/32/32 
265,18:144/144/144 
... 
... 

、エリックの技術hereを参照してください。

または、ターミナルでコマンドラインで、次のような生の8ビットのRGBのバイナリデータにファイルを変換することができます

# Convert 512x512 image to 8-bit RGB binary file 
convert sample.dcm -depth 8 rgb:image.bin 

ls -l image.bin 
-rw-r--r-- 1 mark staff 786432 30 Jun 15:29 image.bin 

あなたがうまくいけば、画像が今786432であることをファイルサイズから見ることができますあなたが取得します知って512×512ピクセルのそれぞれについて、3バイトですので、あなたが直接あなたのCにデータを読み取ることができ++プログラムのバイト、:

RGB RGB RGB RGB ... RGB 

または、ターミナルでコマンドラインで、あなたがイメージをダンプすることができますデータは16進数として:

convert sample.dcm -depth 8 txt: | more 

サンプル出力

# ImageMagick pixel enumeration: 512,512,65535,gray 
0,0: (0,0,0) #000000 gray(0) 
1,0: (0,0,0) #000000 gray(0) 
2,0: (0,0,0) #000000 gray(0) 
関連する問題