C#でDICOMファイルを読む | C#でのDCMファイルビューア

私たちの last post では、Aspose.Medical for .NET を使用して、C# で DICOM ファイルを作成し保存する方法を示しました。次のステップは、C# でプログラム的に保存された DICOM ファイルを読み取ることです。このブログ投稿では、C# を使用して DICOM ファイルをロード、オープン、読み取る方法を学びます。このガイドを出発点として、自分自身の DCM ファイルビューアアプリケーションを作成することができます。

この記事では、以下のトピックについて扱います:

Aspose.Medical—DCM ファイル ビューア

DICOMファイルの読み込み、表示、および読み取りには、Aspose.Medical for .NETを使用します。これにより、開発者に優しいAPIを提供し、DICOMデータを簡単に読み取り、分析し、抽出できます。APIのDicomFileクラス内にあるDatasetオブジェクトは、医療メタデータを扱いやすくします。

始める前に、次のことを確認してください:

  • SDKをreleasesからダウンロードするか、次のコマンドを使用してNuGetパッケージマネージャーを介してパッケージをインストールします:
Install-Package Aspose.Medical
  • 以前のチュートリアルから保存されたDICOMファイル(例:sample.dcm)を既に持っています。

DICOMファイルを読む方法:ステップバイステップガイド

DICOMファイルを読み込む

.dcmファイルをDicomFileオブジェクトにロードし、そのデータセットにアクセスできます。以下に示します:

// Load an existing DICOM file
DicomFile dicomFile = new DicomFile("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

DICOMファイルから値を読み取る

ファイルがロードされると、DICOMタグを使用して主要なメタデータにアクセスできます:

string patientName = dataset.GetSingleValue<string>(Tag.PatientName);
Console.WriteLine($"Patient Name: {patientName}");

この方法で、必要な情報に応じて数百のDICOMタグを読むことができます。

ピクセルデータにアクセスする

DICOMファイルから画像データを取得するには、次のようにします:

byte[] pixelData = dataset.GetValues<byte>(Tag.PixelData).ToArray(); // Use ToArray() for display
Console.WriteLine($"Pixel Data Length: {pixelData.Length} bytes");

このバイト配列を使用して画像をレンダリングするか、さらなる処理アルゴリズムに供給することができます。

タグが欠落している場合のデフォルト値の取得

タグがオプションの場合、フォールバック値を提供することを検討してください。 GetSingleValueOrDefault を使用してデータを取得するか、タグが存在しない場合はデフォルトを返します。

string institutionName = dataset.GetSingleValueOrDefault<string>(Tag.InstitutionName, "Unknown");

Console.WriteLine("Institution Name: " + institutionName);

これは、タグの存在が予測できないシナリオに最適です。

マルチバリュータグから特定の値を取得する

タグが複数の値を含んでいる場合でも、必要なのが1つだけの場合は、インデックスまたは範囲式を使って GetValue を使用してください。

double imagePositionX = dataset.GetValue<double>(Tag.ImagePositionPatient, ^1);

Console.WriteLine("First Image Position X: " + imagePositionX);

注意: このメソッドは、タグが欠落している場合に例外をスローします。

DCMファイルビューア:完全なコード

ここに、DICOMファイルをロードし、利用可能なタグの情報を読み取る方法を示す完全な動作コードがあります:

// 保存されたDICOMファイルをロードします
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

// 患者に関連する情報を読む
string patientID = dataset.GetSingleValue<string>(Tag.PatientID);
string patientName = dataset.GetSingleValue<string>(Tag.PatientName);
string birthDateStr = dataset.GetSingleValue<string>(Tag.PatientBirthDate);
DateTime birthDate = DateTime.ParseExact(birthDateStr, "yyyyMMdd", null);

// 研究情報を読む
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);

// 画像メタデータを読み取る
int rows = dataset.GetSingleValue<int>(Tag.Rows);
int columns = dataset.GetSingleValue<int>(Tag.Columns);
int bitsAllocated = dataset.GetSingleValue<int>(Tag.BitsAllocated);
string modality = dataset.GetSingleValue<string>(Tag.Modality);
byte[] pixelData = dataset.GetValues<byte>(Tag.PixelData).ToArray(); // Use ToArray() for display

// 情報を表示してください
Console.WriteLine($"Patient ID: {patientID}");
Console.WriteLine($"Patient Name: {patientName}");
Console.WriteLine($"Birth Date: {birthDate:yyyy-MM-dd}");
Console.WriteLine($"Study Date: {studyDate:yyyy-MM-dd}");
Console.WriteLine($"Study ID: {studyID}");
Console.WriteLine($"Image Rows: {rows}");
Console.WriteLine($"Image Columns: {columns}");
Console.WriteLine($"Bits Allocated: {bitsAllocated}");
Console.WriteLine($"Modality: {modality}");
Console.WriteLine($"Pixel Data Length: {pixelData.Length} bytes");

Output

Patient ID: JD123456
Patient Name: John Doe
Birth Date: 1985-07-20
Study Date: 2025-07-07
Study ID: Study001
Image Rows: 256
Image Columns: 256
Bits Allocated: 8
Modality: OT
Pixel Data Length: 65536 bytes

自分で試してみてください

任意の .dcm ファイルを使用できます。Aspose を使用して生成されたものであろうと、画像装置から受信されたものであろうと、問題ありません。ファイルを読み込んでタグを読み取るだけで、準備完了です。

無料ライセンスを取得する

あなたは get a free temporary license を取得して、Aspose.Medical for .NET の完全な機能を制限なく探索することができます。すぐに、簡単に、わずか1分で完了します。

DICOMファイルビューア: 無料リソース

これらの貴重なリソースを使用して、開発体験を向上させることができます:

結論

この記事では、C#でDICOMファイルからデータを読み取り、抽出する方法を見てきました。開発者として、Aspose.Medical for .NETを使用してDICOM(.dcm)ファイルを操作し、独自のDCMファイルビューワーアプリケーションを構築できます。

DICOMファイルを扱っている際に質問や問題がある場合は、Aspose Forumsに遠慮なくお問い合わせください。サポートチームは常にお手伝いする準備ができています。

See Also