2009-04-04 10 views
1

DICOMイメージから生のピクセルデータをbyte[]に持っています。 今度はbyte[]Imageオブジェクトに変換したいと思います。DICOMイメージの生データからイメージを作成する方法

私が試した:

Image img = Image.FromStream(new MemoryStream(byteArray)); 

が、これは私のために働いていませんが。他に何を使用するべきですか?

+0

DICOMファイルのピクセルデータからイメージを取得するのに手伝ってもらえますか?私はピクセルデータを取得していますが、y_zyxの答えに記載されているように残りの手順を行う方法はわかりません。事前に感謝 – SharpUrBrain

答えて

1

あなたは、ファイルからの画素データタグを識別し、次の

  1. を行う必要があります。 FileStreamを使用してバイト単位で読み取ることができます。
  2. パネルにビットマップを描画するRGB
  3. 使用Graphicsクラスからビットマップオブジェクトを作成RGB
  4. それを変換した画素データ
  5. をお読みください。
+0

私はピクセルデータを取得していますが、あなたの答えに記載されているように残りの手順を行う方法はわかりません。これを取得する際に私を助けてください、サンプルコードやアイデアをいただければ幸いです。 – SharpUrBrain

3

ジクムの「イメージ」は必ずしもイメージデータではないことに注意してください。 dicomファイル形式には生のイメージデータよりもはるかに多くが含まれています。これはあなたがハングアップしているところかもしれません。 dicomのウィキペディアの記事にリンクされているはずのdicomファイルの標準を調べてみてください。これは実際に興味のある情報を解析する方法を理解する助けになるはずです

+0

あなたの助けをありがとう 実際には、サードパーティのツールから取得している生のピクセルデータ。 そして、ピクセル情報はタグ情報から離れていたものです。 上記のコードをjpegファイルのbyte []で使用すると、すべてが正常ですが、dicomバイト配列では無効なパラメータが表示されています。 hep – prashant

+0

実際にピクセルデータだけを取得していて、データが1つのフレームに対応している場合は、何をしているのが効果的でしょうか。複数のフレームを取得している場合、.Net Imageライブラリがどのように反応するかはわかりません。たぶんhttp://imebra.com/のようなオープンソースのDICOMライブラリを試してみてください – dustyburwell

+0

ちょうど8ビットのシングルフレーム画像を手伝ってください。 いいえ、サードパーティ製のツールのみを使用することはできませんでした。 そして生のピクセルデータを正しく与えています。 – prashant

0

純粋な標準 DICOMファイルで作業していますか?私は2年以上DICOMパーサーを維持してきましたが、標準を完全には満たしていない本当に奇妙なDICOMファイル(彼ら自身のツイストされた標準DICOMファイルを実装している企業)に出くわしました。バイト配列をファイルにフラッシュして、イメージビューア(irfanview、picassaなど)が表示できるかどうかをテストします。あなたのコードが通常のJPEGストリームで動作している場合、99.9999%の確率でファイルが何らかの奇妙な方法で標準を脅かすことになります(そして、私を信じて、医療企業はそれほどです)

また、 DICOM標準では、JPEG標準のいくつかのバリエーションをサポートしています。 BitmapクラスがDICOMファイルから取得したデータをサポートしていない可能性があります。転送構文を書き留めてください。

[email protected]というファイルを私に送信してもよろしいですか?私はそれを調べることができます。私はDICOMファイルを半年編集していました。

1

GDCMを使用する必要があります。

Grassroots DiCoMは、DICOM医療ファイル用のC++ライブラリです。それは自動的にpython/C#/ Java(swigを使用)にラップされます。 RAW、JPEG 8/12/16ビット(ロッシー/ロスレス)、JPEG 2000、JPEG-LS、RLE、およびデフレート(zlib)をサポートしています。

ほとんどのシステム(Win32、Linux、MacOSX)で動作することが知られています。

例えば:

+0

リンクが機能していません正しいリンクを提供してください – SharpUrBrain

1

画素データ通常(常にではない場合)DICOMデータの終わりで終わります。幅、高さ、ストライド、色深度を調べることができる場合は、(7FE0,0010)データ要素の値にスキップして後続のバイトを取得するだけで済みます。これは、DICOM画像を表示する際に、通常の画像ビューアのほとんどが使用するトリックです。

0

DICOMはばかげた仕様であり、近い将来にオーバーホールされることを心から願っています。 Offisには、さまざまな人気の高いエンコーディングでダイコンを変換するのにはかなり優れたソフトウェアスイート「DCMTK」があるとのことです。単にxバイトのファイルをスキップしようとすると、おそらく単一のファイルでは問題ありませんが、ボリュームがある場合や複数のボリュームの場合は、より堅牢な戦略が必要です。私はDCMTKの変換コードを使用し、pnmに入る前にイメージビットを取得しました。 DCMTKで探しているファイルは、エンコーディングスキームによってはdcm2pnm、おそらくdcmj2pnmです。

ランタイムフラグの1つで修正したスケールウィンドウに問題がありました。 DCMTKはオープンソースであり、かなり簡単なビルド手順が付属しています。

1

DICOMファイルから画像を取り出すために使用できるEvilDicom(http://rexcardan.com/evildicom/)というC#ライブラリがあります。それはウェブサイト上でそれを行う方法に関するチュートリアルを持っています。

関連する問題