mcpField
M
matlab-read-medical-data

matlab-read-medical-data

github.com/matlabデータ・データベース1.2k45 回インストール1 日前に更新
リポジトリ

matlab-read-medical-data について

DICOM、NIfTI、NRRD の医用画像データを MATLAB で読み書き・操作するためのスキルです。利用可能なツールボックスを先に確認し、Medical Imaging Toolbox の API を優先します。

主な機能

  1. 01医用画像ファイルの読み書き
  2. 02DICOM シリーズの一覧表示と選択
  3. 03空間参照と座標変換の取得
  4. 04ボリュームの向き変更とスライス抽出
  5. 05DICOM RT 構造と匿名化の処理

活用シーン

  1. 01DICOM フォルダーや NIfTI ボリュームの読み込み
  2. 02複数シリーズのディレクトリから対象を選択
  3. 03指定した向きで医用画像スライスを抽出
  4. 04DICOM の匿名化や RT 構造の編集

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-read-medical-data

インストール後、Claude Code で/matlab-read-medical-dataを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
references/
dicom-anonymization.md
dicom-rt-workflows.md
ipt-reading-writing.md
mit-medical-volume.md
mit-spatial-referencing.md

詳細

医療画像データの読み取りと書き込み

MATLAB で医療画像データを読み取り、書き込み、操作します。このスキルでは、Image Processing Toolbox(IPT)の関数と Medical Imaging Toolbox(MIT)の拡張 API の両方を扱います。

使用する場面

  • DICOM、NIfTI、または NRRD ファイルの読み取りや書き込み
  • dicomCollection を使用した DICOM シリーズの一覧表示
  • 空間参照または座標変換の抽出
  • ボリュームの向きの変更や、向きを指定したスライスの抽出
  • DICOM RT 構造(輪郭、マスク、変更/書き込み)の操作
  • DICOM データの匿名化

使用しない場面

  • ボリュームの表示や可視化(matlab-display-volume スキルを使用)
  • 注釈付き 2-D 医療画像の表示(matlab-display-image スキルを使用)
  • 医療用ではない画像形式(PNG、TIFF、JPEG)の読み取り — imread を使用

ツールボックスの検出 — 最初に必ず実行

方法を選択する前に、必ず利用可能なツールボックスを確認してください。 Medical Imaging Toolbox がインストールされている場合は、その API を優先してください。Image Processing Toolbox のみが利用可能な場合は、IPT のパターンを使用してください。

タスク → 関数のクイックリファレンス

タスクIPT のみMedical Imaging Toolbox を使用(推奨)
単一の DICOM ファイルを読み取るdicomread + dicominfomedicalImage
DICOM フォルダーを読み取るdicomreadVolumemedicalVolume
NIfTI を読み取るniftiread + niftiinfomedicalVolume
NRRD を読み取る—(MIT が必要)medicalVolume または nrrdread + nrrdinfo
DICOM シリーズを一覧表示するdicomCollectiondicomCollection
空間参照imref3dmedicalref3d
向きを指定したスライスを抽出する手動インデックス指定extractSlice
向きを変更する手動で permuteupdateOrientation
DICOM RT 構造を読み取るdicomContours(dicominfo(file))同左
DICOM を匿名化するdicomanon + dicomuid同左
ボリュームを可視化するvolumeViewermedicalVolumeViewer または volshow(medVol)

代表的な 4 つのパターン

1. DICOM フォルダーを読み取る

DICOM フォルダーのパスを直接 medicalVolume または dicomreadVolume に渡します。単一シリーズのフォルダーを読み取る場合、先に dicomCollection を呼び出してはいけません。これは不要です。

% WITH Medical Imaging Toolbox (preferred):
medVol = medicalVolume("path/to/dicom/folder");
V = medVol.Voxels;               % Auto-rescaled (e.g., HU for CT)
spacing = medVol.VoxelSpacing;   % [dx dy dz] in mm
orientation = medVol.Orientation; % "transverse", "coronal", "sagittal"
modality = medVol.Modality;       % "CT", "MR"

% Access spatial referencing via VolumeGeometry (medicalref3d object)
geom = medVol.VolumeGeometry;
geom.VolumeSize;                  % [rows cols slices]
geom.PatientCoordinateSystem;     % "LPS+" or "RAS+"
geom.Position;                    % [slices×3] slice positions in patient coords
geom.VoxelDistances;              % {[slices×3] [slices×3] [slices×3]} per-axis distances
geom.PixelSpacing;                % [slices×2] in-plane pixel spacing per slice
geom.IsAffine;                    % true if uniform spacing (affine transform)
geom.IsAxesAligned;               % true if volume axes align with patient axes
geom.IsMixed;                     % true if slices have varying pixel spacing

% IPT only:
[V, spatial, dim] = dicomreadVolume("path/to/dicom/folder");
V = squeeze(V);  % Remove singleton 4th dimension
2. NIfTI ファイルを読み取る
% WITH Medical Imaging Toolbox (preferred):
medVol = medicalVolume("path/to/file.nii.gz");

% IPT only:
V = niftiread("path/to/file.nii.gz");
info = niftiinfo("path/to/file.nii.gz");
voxelSize = info.PixelDimensions(1:3);
3. DICOM シリーズを一覧表示して、1 つを読み取る

次の場合に限り、dicomCollection を使用してください。

  • フォルダーに複数のシリーズまたはボリュームが含まれているとユーザーが伝えている場合
  • medicalVolume または dicomreadVolume がエラーで失敗する場合(例:「not a DICOM file」や「multiple volumes detected」)
  • 読み取るシリーズを決める前に、存在するシリーズを特定する必要がある場合

dicomCollection はディレクトリをスキャンし、DICOM 以外のファイルを除外して、各行が 1 つのシリーズを表すテーブルを返します。ピクセルデータは読み取りません。

collection = dicomCollection("path/to/directory");
disp(collection);  % Table with Modality, SeriesDescription, Rows, Columns, Frames

% WITH Medical Imaging Toolbox:
medVol = medicalVolume(collection, "s1");

% IPT only:
[V, spatial] = dicomreadVolume(collection, "s1");
4. スライスの抽出/向きの変更(Medical Imaging Toolbox が必要)
medVol = medicalVolume("path/to/file.nii");

% Extract slices — works for any orientation
[axialSlice, position, spacings] = extractSlice(medVol, 50, "transverse");
[coronalSlice, ~, ~] = extractSlice(medVol, 30, "coronal");
[sagittalSlice, ~, ~] = extractSlice(medVol, 45, "sagittal");

% If medVol.Orientation is not empty, use it as the third input
[sliceData, position, spacings] = extractSlice(medVol, 50, medVol.Orientation);

% Change orientation — do NOT use permute
medVolCoronal = updateOrientation(medVol, "coronal");  % Returns NEW object

updateOrientation は R2025a で導入されました。

詳細リファレンスファイル

重要:以下のタスクのコードを生成する前に、対応するリファレンスファイルを必ず読んでください。

タスクのトリガーリファレンス作成前に読む内容
IPT を使用した DICOM または NIfTI の読み取り/書き込みreferences/ipt-reading-writing.mddicomreadVolume、niftiread、imref3d、またはリスケール処理を書く前
medicalVolume、medicalImage、スライス、または向きの使用references/mit-medical-volume.mdmedicalImage、medicalVolume、extractSlice、または updateOrientation の呼び出しを書く前
空間参照または座標変換references/mit-spatial-referencing.mdmedicalref3d、intrinsicToWorld、または worldToIntrinsic の呼び出しを書く前
RT 構造(輪郭、ラベルマップ、RTSTRUCT)references/dicom-rt-workflows.md輪郭/RTSTRUCT ファイルの読み取り、編集、表示、プロット、または dicomContours、plotContour、createMask、addContour、deleteContour の呼び出しを書く前
DICOM ファイルの匿名化references/dicom-anonymization.mddicomanon または dicomuid の呼び出しを書く前

避けるべきレガシーパターン

使用しないでください代わりに使用理由
単一ファイルに対する dicomread + dicominfomedicalImage(MIT)統一されたアクセス、自動再スケーリング
DICOM フォルダーに対する dicomreadVolumemedicalVolume(MIT)空間参照を保持します
niftiread + niftiinfomedicalVolume(MIT)統一されたコンテナー
スライス抽出に V.Voxels(:,:,n) または V(:,:,n) を使用extractSlice(medVol, n, medVol.Orientation)(MIT)向きと空間メタデータを処理し、保存順序に関係なく動作します
向きの変更に手動で permute を使用updateOrientation(medVol, orient)(MIT)空間メタデータを更新します
RT に対する手動の構造体解析dicomContours(info)見やすい表形式の出力
volumeViewermedicalVolumeViewer(MIT、R2026a)医療用の機能
医療画像に imshow を使用imageshow医療データに適したデフォルト設定

規約

  • 関数を選択する前に、使用可能なツールボックスを必ず確認してください
  • Medical Imaging Toolbox の API(medicalVolume、medicalImage)が使用可能な場合は、そちらを優先してください
  • 不変メソッド(deleteContour、updateOrientation)の出力は必ず取得してください
  • RT Structure DICOM ファイルを書き込む場合は、必ず CreateMode="Copy" を使用してください
  • デフォルトでは、medicalVolume/dicomreadVolume の前に dicomCollection を呼び出さないでください。読み取り関数をフォルダーのパスに直接適用してください
  • dicomCollection は、フォルダーに複数のシリーズが含まれている場合、medicalVolume がエラーで失敗する場合、またはピクセルデータを読み込まずに存在するシリーズを特定する必要がある場合にのみ使用してください
  • グレースケールデータでは、dicomreadVolume の出力に必ず squeeze を適用してください
  • medicalVolume からスライスを取得するには、必ず extractSlice を使用してください。手動インデックス指定の V.Voxels(:,:,n) は使用しないでください。extractSlice は向きと空間メタデータを処理し、ボリュームがディスク上にどのように保存されているかに関係なく正しく動作します
  • ネストされた DICOM 構造体を手動で解析しないでください。dicomContours を使用してください
  • extractSlice の引数順序:(vol, sliceIndex, direction) — 数値を文字列より前に指定します
  • intrinsicToWorld は、1 つのベクトルではなく、3 つの個別の出力 [x, y, z] を返します

Copyright 2026 The MathWorks, Inc.


コメント