2.1.2 画像・3次元ボリュームデータ・医用画像(DICOM/NIfTI)の表示


目次へのリンク

MATLABによる画像処理・コンピュータービジョン入門目次

概要

MATLABには画像表示に便利な関数が複数用意されています。

  • 単一画像の表示(imshow)
  • 2つの画像の表示(imshowpair)
  • 複数画像の表示(montage)
  • イメージビューワー(imtool)
  • ボリュームビューワー(volumeViewer)
  • DICOMブラウザー(dicomBrowser)
  • スライスビューワー(sliceViewer)
  • オルソスライスビューワー(orthosliceViewer)

表示対象に合わせて適切なツールを活用しましょう。

対応ファイル

画像の表示(imshow)

画像の表示はimshow関数が利用できます。

code
A=imread('peppers.png');
imshow(A);

2つの画像を並べて表示(imshowpair)

2つの画像を並部手表示できます。

code
B=imread('street1.jpg');
imshowpair(A,B,'montage');

2つの画像を重ねて表示することもできます。

code
imshowpair(A,B);

モンタージュ表示

code
load mri;                   % MATファイルから、データの読込み
montage(D,map);truesize;shg % モンタージュ表示

イメージビューアー:各種調査用ツール

code
imtool(A)              % 画像ビューアー アプリケーション

イメージブラウザ:フォルダ内の様々なサイズ・データ型の画像を一覧表示

code
imageBrowser(fullfile(matlabroot,'toolbox','images','imdata'));

ボリュームビューアー

code
load mri           % 128x128x1x27    画像の取込み
D1 = squeeze(D);   % 128x128x27      27枚のスライス画像
volumeViewer(D1)   % ボリュームビューワーの起動
   % ボリュームの読込み
     % 立方体にアップサンプリング
     % 表示: ボリューム <=> スライス平面

テクスチャマッピング

code
load clown                % MATファイルから、画像データ'X'の読込み
figure;imshow(X,map);     % 画像表示

code
[x,y,z]=cylinder;         % 円柱座標生成
figure;mesh(x,y,z,'edgecolor',[0 0 0]);axis square;  %座標表示

code
warp(x,y,z,flipud(X),map);axis square;shg  %テクスチャマッピング

DICOMブラウザーによるファイルの確認

code
dicomBrowser(fullfile(matlabroot,'toolbox','images','imdata'))

スライスビューワー

code
sliceViewer(D1);

オルソスライスビューワー

code
orthosliceViewer(D1);

任意の切断面の作成と可視化

code
point = [73 50 15.5]; % 切断平面上の点
normal = [0 15 20]; % 法線ベクトル
[B,x,y,z] = obliqueslice(D1,point,normal);
figure;
surf(x,y,z,B,'EdgeColor','None');

DICOM-RTの読み込みと可視化

code
info = dicominfo('rtstruct.dcm')
output
info = 
                              Filename: 'C:\Program Files\MATLAB\R2020a\toolbox\images\imdata\rtstruct.dcm'
                           FileModDate: '03-6-2019 13:27:31'
                              FileSize: 1910148
                                Format: 'DICOM'
                         FormatVersion: 3
                                 Width: []
                                Height: []
                              BitDepth: []
                             ColorType: ''
        FileMetaInformationGroupLength: 214
            FileMetaInformationVersion: [2x1 uint8]
               MediaStorageSOPClassUID: '1.2.840.10008.5.1.4.1.1.481.3'
            MediaStorageSOPInstanceUID: '1.3.6.1.4.1.9590.100.1.2.19011082236500333523568627692152273876'
                     TransferSyntaxUID: '1.2.840.10008.1.2.1'
                ImplementationClassUID: '1.3.6.1.4.1.9590.100.1.3.100.9.4'
             ImplementationVersionName: 'MATLAB IPT 9.4'
                           SOPClassUID: '1.2.840.10008.5.1.4.1.1.481.3'
                        SOPInstanceUID: '1.3.6.1.4.1.9590.100.1.2.19011082236500333523568627692152273876'
                             StudyDate: ''
                             StudyTime: ''
                       AccessionNumber: ''
                              Modality: 'RTSTRUCT'
                          Manufacturer: 'MathWorks'
                       InstitutionName: ''
                ReferringPhysicianName: [1x1 struct]
                           StationName: ''
                     SeriesDescription: ''
                 ManufacturerModelName: 'MATLAB'
                           PatientName: [1x1 struct]
                             PatientID: ''
                      PatientBirthDate: ''
                            PatientSex: ''
                      StudyInstanceUID: '1.2.826.0.1.3680043.8.274.1.1.2729954696.96242.3632970675.507'
                     SeriesInstanceUID: '1.2.826.0.1.3680043.8.274.1.1.7145442384.75872.7982248107.258'
                               StudyID: ''
                          SeriesNumber: []
                        InstanceNumber: []
                     StructureSetLabel: ''
                      StructureSetName: ''
                      StructureSetDate: ''
                      StructureSetTime: ''
    ReferencedFrameOfReferenceSequence: [1x1 struct]
               StructureSetROISequence: [1x1 struct]
                    ROIContourSequence: [1x1 struct]
             RTROIObservationsSequence: [1x1 struct]

ROI情報を抽出

code
contour = dicomContours(info)
output
contour = 
  dicomContours のプロパティ:

    ROIs: [2x5 table]

可視化

code
figure;
plotContour(contour);

参考

謝辞

本記事は @eigs さんのlivescript2markdownを使わせていただいてます。

目次へのリンク

MATLABによる画像処理・コンピュータービジョン入門目次