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

# 目次へのリンク


[MATLABによる画像処理・コンピュータービジョン入門目次](https://qiita.com/tohruk/items/e5f7939b622bcf2e3c4c)

# 概要


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



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



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




対応ファイル



   -  [I2_01_2_display_investigation.m](https://github.com/mathworks/MATLAB-IPCV-Eval-Kit-JP/blob/master/demo_files/I2_01_2_display_investigation.m) 



# 画像の表示(`imshow`)


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


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

![figure_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/3fcedf88-a01c-53f8-26bd-fcd08cf2698e.png)


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


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


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

![figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/fdf4f102-2739-1a16-aafd-43358a9d2a6e.png)


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


```matlab:code
imshowpair(A,B);
```

![figure_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/928c690b-e8a4-aaa0-ead8-910210aad163.png)


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


![figure_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/3e9efd1d-3f20-1e80-3d1f-396fa7aee444.png)


# イメージビューアー：各種調査用ツール
```matlab:code
imtool(A)              % 画像ビューアー アプリケーション
```


![figure_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/2677a2b2-67aa-ebc2-d738-399910e0956f.png)


# イメージブラウザ：フォルダ内の様々なサイズ・データ型の画像を一覧表示
```matlab:code
imageBrowser(fullfile(matlabroot,'toolbox','images','imdata'));
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/e609eeee-aa63-c364-d8aa-5c1e2c50e9cb.png)



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


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/7e2e6d5d-1609-c3c6-07dd-a6a525ac69c9.png)


# テクスチャマッピング
```matlab:code
load clown                % MATファイルから、画像データ'X'の読込み
figure;imshow(X,map);     % 画像表示
```

![figure_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/f0be91a6-14a4-0ed8-4f92-333352d39d12.png)


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

![figure_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/ce65cc78-132b-aca8-2b6c-22eef017207f.png)



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

![figure_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/bd64224e-780a-3861-bc6c-e2a30fbc89b8.png)


# DICOMブラウザーによるファイルの確認
```matlab:code
dicomBrowser(fullfile(matlabroot,'toolbox','images','imdata'))
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/c05d58db-c9bc-71e3-640b-e2b109563d4e.png)


# スライスビューワー
```matlab:code
sliceViewer(D1);
```

![figure_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/3a39377a-365d-a6a9-1e84-0f8ba0905ce6.png)



# オルソスライスビューワー
```matlab:code
orthosliceViewer(D1);
```

![figure_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/7638645e-5417-ddf8-febf-4aa97dcc19c3.png)



# 任意の切断面の作成と可視化
```matlab: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');
```


![figure_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/4fa42d6c-aaf5-7150-ae4d-7b093e89c1fb.png)

# DICOM-RTの読み込みと可視化
```matlab:code
info = dicominfo('rtstruct.dcm')
```
```text: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情報を抽出


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

    ROIs: [2x5 table]

```


可視化


```matlab:code
figure;
plotContour(contour);
```


![figure_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14336/08634306-74cb-d740-6e19-bb03bc0e6a64.png)

# 参考

   -  [Image Processing Toolbox - 表示と調査](https://jp.mathworks.com/help/images/display-and-exploration.html) 


# 謝辞


本記事は @eigs さんの[livescript2markdown](https://github.com/minoue-xx/livescript2markdown)を使わせていただいてます。



# 目次へのリンク


[MATLABによる画像処理・コンピュータービジョン入門目次](https://qiita.com/tohruk/items/e5f7939b622bcf2e3c4c)