Main Content

bigimageshow

2 次元 blockedImage オブジェクトの表示

説明

bigimageshow オブジェクトは blockedImage オブジェクトのデータを表示します。bigimageshow オブジェクトは、イメージの範囲と画面解像度に基づいてイメージ データを連続的に読み込みます。

作成

説明

bigimageshow(bim) は、ブロック化された 2 次元イメージ bim を表示します。

categorical データの場合、bigimageshow は軸のカラーマップを parula に設定します。数値データの場合、既定のカラーマップは gray です。

bigimageshow(hax,bim) は、hax で指定された座標軸に、ブロック化されたイメージ bim を表示します。

b = bigimageshow(___)bigimageshow オブジェクト b を返します。ブロック化されたイメージを表示した後、b を使用して表示設定を変更します。

b = bigimageshow(___,Name,Value) は、名前と値のペアを使用して初期表示プロパティを設定します。複数の名前と値のペアを指定できます。各引数またはプロパティ名は引用符で囲みます。

たとえば、bigimageshow(bim,'GridVisible','on','GridLineStyle',':') はブロック化されたイメージ bim を表示し、点線のグリッド ラインを重ね合わせます。

入力引数

すべて展開する

ブロック化されたイメージ。blockedImage オブジェクトとして指定します。

bigimageshow オブジェクトの親の座標軸。axes オブジェクトとして指定します。

プロパティ

すべて展開する

bigimageshow オブジェクトの親の座標軸。axes オブジェクトとして指定します。親を指定しない場合、bigimageshow は現在の Figure のハンドル gca を使用します。Figure が存在しない場合、bigimageshow は新しい Figure を作成します。

表示する 2 次元 blockedImage オブジェクト。blockedImage オブジェクトとして指定します。

カラー データのマッピング方法。'direct' または 'scaled' として指定します。このプロパティを使用して、カラーマップへの CData 内のカラー データ値のマッピングを制御します。CData は、インデックス付きの色を定義するベクトルまたは行列でなければなりません。CData が RGB カラーを定義する 3 次元配列である場合、このプロパティは効果がありません。

これらの方法には以下の効果があります。

  • 'direct' — 値を現在のカラーマップのインデックスとして解釈します。小数点以下の部分がある値は、その値より小さく、その値に最も近い整数に調整されます。

    • 値が double 型または single 型の場合、1 以下の値はカラーマップの最初の色にマッピングされます。カラーマップの長さ以上の値は、カラーマップの最後の色にマッピングされます。

    • 値が uint8 型、uint16 型、uint32 型、uint64 型、int8 型、int16 型、int32 型、または int64 型の場合、0 以下の値はカラーマップの最初の色にマッピングされます。カラーマップの長さ以上の値は、カラーマップの最後の色に (または、その型の範囲限界値まで) マッピングされます。

    • 値が logical 型の場合、値 0 はカラーマップの最初の色にマッピングされ、値 1 はカラーマップの 2 番目の色にマッピングされます。

  • 'scaled' — 色の範囲の最小値と最大値の間の範囲になるように値をスケーリングします。座標軸の CLim プロパティには色の範囲が含まれています。

透明度データ。次のいずれかの形式で指定します。

  • 数値スカラー — イメージ全体で一貫した透明度を使用します。

  • 2 次元 blockedImage オブジェクト — 透明度データの行数と列数は、CData の 2 次元 blockedImage オブジェクトと同じでなければなりません。ブロック化されたイメージには複数の解像度レベルを指定できます。その場合、bigimageshow は、現在の ResolutionLevel に最も近いレベルを表示用に選択します。

AlphaDataMapping プロパティは、MATLAB® がアルファ データの透明度値をどのように解釈するかを制御します。

例: 0.5

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

AlphaData 値の解釈。次のいずれかの値を指定します。

  • 'none' — 値を透明度値として解釈します。1 以上の値は完全に不透明、0 以下の値は完全に透明、0 ~ 1 の間の値は半透明です。

  • 'scaled' — 値を Figure の alphamap にマッピングします。座標軸のアルファ範囲の最小値と最大値によって、alphamap の最初の要素と最後の要素にマッピングされるアルファ データ値がそれぞれ決まります。たとえば、アルファ範囲が [3 5] の場合、3 以下のアルファ データ値は alphamap の最初の要素にマッピングされます。5 以上のアルファ データ値は alphamap の最後の要素にマッピングされます。座標軸の ALim プロパティにはアルファ範囲が含まれています。Figure の Alphamap プロパティには alphamap が含まれています。

  • 'direct' — 値を Figure の alphamap のインデックスとして解釈します。小数点以下の部分がある値は、その値より小さく、その値に最も近い整数に調整されます。

    • 値が double 型または single 型の場合、1 以下の値は alphamap の最初の要素にマッピングされます。alphamap の長さ以上の値は、alphamap の最後の要素にマッピングされます。

    • 値が整数型の場合、0 以下の値は alphamap の最初の要素にマッピングされます。alphamap の長さ以上の値は、alphamap の最後の要素に (または、その型の範囲限界値まで) マッピングされます。整数型は uint8uint16uint32uint64int8int16int32、および int64 です。

    • 値が logical 型の場合、値 0 は alphamap の最初の要素にマッピングされ、値 1 は alphamap の 2 番目の要素にマッピングされます。

表示する 2 次元 blockedImage オブジェクトの解像度レベル。CData プロパティの 2 次元 blockedImage オブジェクトの解像度レベルを指定する正の整数として指定します。解像度レベルは、解像度レベルの 2 つの範囲に対応した 'fine' または 'coarse' として指定することもできます。既定値は、利用可能な画面スペースと解像度に基づいて計算されます。

解像度レベルの選択モード。次のいずれかの値を指定します。

  • 'auto' — 親の座標軸と使用可能な画面サイズに基づいて自動的に解像度レベルを選択します。

  • 'manual'ResolutionLevel プロパティを設定することにより、手動で解像度レベルを指定します。

グリッドの可視性。'off' または 'on' として指定します。bigimageshow は、現在の GridResolutionLevel において、CData.BlockSize で指定された数のピクセルが含まれるように、グリッドの間隔をワールド単位で設定します。

グリッドを表示するブロック化されたイメージの解像度レベル。次のいずれかの値として指定します。

  • 正の整数 — グリッドを表示する解像度レベル。CData プロパティの 2 次元 blockedImage オブジェクトの解像度レベルを指定する数値スカラーとして指定します。最小値は 1 です。最大値は、bigimageshow CData プロパティに含まれるブロック化されたイメージの NumLevels プロパティの値です。

  • 'fine' — 最も細かい解像度レベルでグリッドを表示します。

  • 'coarse' — 最も粗い解像度レベルでグリッドを表示します。

既定では、GridLevelResolutionLevel プロパティと同じ値です。

グリッド レベルの選択モード。次のいずれかの値として指定します。

  • 'auto' — イメージ データの解像度レベル ResolutionLevel と一致するようにグリッドの解像度レベルを選択します。

  • 'manual'GridLevel プロパティを設定することにより、手動でグリッドの解像度レベルを指定します。

グリッド ラインの色。RGB 3 成分、16 進数カラー コード、色の名前、または色の省略名として指定します。グリッド ラインを表示するには、GridVisible プロパティを 'on' に設定します。

カスタム色の場合、RGB 3 成分または 16 進数カラー コードを指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度は範囲 [0,1] に含まれていなければなりません。たとえば [0.4 0.6 0.7] のようになります。

  • 16 進数カラー コードは、ハッシュ記号 (#) で始まり、その後に 16 進数 (0 から F までの範囲) が 3 桁または 6 桁続く、文字ベクトルまたは string スカラーです。値の大文字と小文字は区別されません。そのため、カラー コード、'#FF8800''#ff8800''#F80'、および '#f80' は等価です。

あるいは、一部の一般的な色を名前で指定できます。次の表に、名前付きの色のオプション、等価な RGB 3 成分、および 16 進数カラー コードを示します。

色の名前省略名RGB 3 成分16 進数カラー コード外観
'red''r'[1 0 0]'#FF0000'

Sample of the color red

'green''g'[0 1 0]'#00FF00'

Sample of the color green

'blue''b'[0 0 1]'#0000FF'

Sample of the color blue

'cyan' 'c'[0 1 1]'#00FFFF'

Sample of the color cyan

'magenta''m'[1 0 1]'#FF00FF'

Sample of the color magenta

'yellow''y'[1 1 0]'#FFFF00'

Sample of the color yellow

'black''k'[0 0 0]'#000000'

Sample of the color black

'white''w'[1 1 1]'#FFFFFF'

Sample of the color white

以下に、MATLAB がさまざまなタイプのプロットで使用する既定の色の RGB 3 成分と 16 進数カラー コードを示します。

RGB 3 成分16 進数カラー コード外観
[0 0.4470 0.7410]'#0072BD'

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980]'#D95319'

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250]'#EDB120'

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560]'#7E2F8E'

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880]'#77AC30'

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330]'#4DBEEE'

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840]'#A2142F'

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

例: b.GridColor = [1 0 0]

例: b.GridColor = 'r'

例: b.GridColor = 'red'

例: b.GridColor = '#FF0000'

グリッド ラインの透明度。[0, 1] の範囲の値として指定します。1 の値は完全な不透明を意味し、0 の値は完全な透明を意味します。グリッド ラインを表示するには、GridVisible プロパティを 'on' に設定します。

グリッド ラインの幅。ポイント単位で測定された正の数値として指定します。グリッド ラインを表示するには、GridVisible プロパティを 'on' に設定します。

グリッド ラインのスタイル。次の表のいずれかのライン スタイルを指定します。

ライン スタイル説明結果として得られるライン
'-'実線

Solid line

'--'破線

Dashed line

':'点線

Dotted line

'-.'一点鎖線

Line with alternating dashes and dots

グリッド ラインを表示するには、GridVisible プロパティを 'on' に設定します。

ピクセルのリサンプルに使用する内挿法。双一次内挿では 'linear'、最近傍内挿では 'nearest' を指定します。

categorical データの場合、bigimageshow は最近傍内挿のみをサポートしています。logical データの場合、既定値は 'nearest' です。

Windows システムで OpenGL のソフトウェア バージョンを使用する場合、サポートされる内挿オプションは 'nearest' のみです。

イメージの可視性の制御。次のいずれかの値として指定します。

  • 'on'bigimageshow オブジェクトを表示します。

  • 'off' — オブジェクトを削除せずに非表示にします。ただし、非表示のオブジェクトのプロパティにアクセスすることはできます。

オブジェクト関数

showmask指定した包含しきい値でのマスク オーバーレイの表示
hidemaskbigimageshow オブジェクトのマスク オーバーレイの非表示
showlabelsDisplay label overlay on bigimageshow object
hidelabelsHide label overlay on bigimageshow object

すべて折りたたむ

この例では、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージ (tumor_091.tif) を変更したバージョンを使用します。変更されたイメージには 3 つの粗い解像度レベルが含まれています。また、このイメージは、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

サンプル イメージから、ブロック化されたイメージを作成します。

bim = blockedImage('tumor_091R.tif');

ブロック化されたイメージを表示します。

h = bigimageshow(bim);

イメージ内の領域を拡大します。

xlim([2100, 2600])
ylim([1800 2300])

3 つの解像度レベルでイメージを表示するため、ResolutionLevel プロパティに新しい値を指定します。各解像度レベルを見ると、軸の範囲は変わりませんが、bigimageshow によって他のレベルのイメージのサイズが必ず正しく調整されていることがわかります。ResolutionLevel を設定した場合、ResolutionLevelMode の値は自動的に 'manual' に変更されます。

h.ResolutionLevel = 3;
pause(1);
h.ResolutionLevel = 2;
pause(1);
h.ResolutionLevel = 1;
pause(1);

サンプル イメージ tumor_091R.tif から、ブロック化されたイメージを作成します。このサンプル イメージは、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージです。このイメージは、3 つの粗い解像度レベルが含まれ、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = blockedImage('tumor_091R.tif','BlockSize', [128 128]);

bigimageshow を使用して、ブロック化されたイメージを表示します。最も細かい解像度レベル (レベル 1) でグリッドを表示するように指定します。また、グリッド ラインの色、幅、透明度を指定します。

 h = bigimageshow(bim,...
      'GridVisible','on','GridLevel',1,...
      'GridLineWidth', 2,'GridColor','k','GridAlpha',0.3);

Figure contains an axes object. The axes object contains an object of type bigimageshow.

サンプル イメージ tumor_091R.tif から、ブロック化されたイメージを作成します。このサンプル イメージは、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージです。このイメージは、3 つの粗い解像度レベルが含まれ、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = blockedImage('tumor_091R.tif');

blockedImage のオブジェクト関数 apply を使用して、粗いマスクを作成します。

bmask = apply(bim, @(bs)im2gray(bs.Data)<120, "Level", 3);

アルファ層としてマスクを重ね合わせます。

ha1 = subplot(1,2,1);
h = bigimageshow(bim);
h.AlphaData = bmask;
h.AlphaDataMapping = 'direct';
alphamap([0.4 1])
h.Parent.Color = 'r';

マスクを単独で可視化します。

ha2 = subplot(1,2,2);
bigimageshow(bmask);
linkaxes([ha1, ha2]);
%

サンプル イメージ tumor_091R.tif から、ブロック化されたイメージを作成します。このサンプル イメージは、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージです。このイメージは、3 つの粗い解像度レベルが含まれ、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = blockedImage('tumor_091R.tif');

最も粗い解像度レベルのブロック化されたイメージを使用してマスクを作成します。

bmask = apply(bim, @(im)im2gray(im.Data)<120, "Level", 3);

ブロック化されたイメージをマスクと共に表示します。

h = bigimageshow(bim);
showmask(h, bmask);

異なる包含しきい値を使用して実験を行い、染色された領域に最も良く当てはまるマスクを取得します。既定では、包含しきい値は 0.5 です。

showmask(h, bmask, 'InclusionThreshold', 0.2);
showmask(h, bmask, 'InclusionThreshold', 0);
showmask(h, bmask, 'InclusionThreshold', 0.06);

異なるブロック サイズと異なる包含しきい値を組み合わせて実験を行い、染色された領域に最も良く当てはまるマスクを取得します。既定では、最も粗い解像度レベルのブロック サイズは 625 x 670 です。

showmask(h, bmask, 'InclusionThreshold', 0.06, 'BlockSize', [256 256]);
showmask(h, bmask, 'InclusionThreshold', 0.14, 'BlockSize', [256 256]);

マスクが満足のいく状態になったら、そのマスクを使用してリンパ節をセグメント化します。

bls = selectBlockLocations(bim,'BlockSize', [256 256],...
                                'Mask', bmask, 'InclusionThreshold', 0.14);
bregion = apply(bim, @(bs)bs.Data, 'BlockLocationSet', bls);
figure
bigimageshow(bregion);
%

サンプル イメージ tumor_091R.tif から、ブロック化されたイメージを作成します。このサンプル イメージは、CAMELYON16 データ セットの腫瘍組織が含まれるリンパ節の学習イメージです。このイメージは、3 つの粗い解像度レベルが含まれ、縦横比が一定に維持され、各レベルで特徴がレジストレーションされるように調整されています。

bim = blockedImage("tumor_091R.tif");

粗い解像度レベルでラベル イメージを作成します。

まず、単一解像度イメージを取得します。gather は既定で最も粗い解像度レベルからデータを取得します。

cim = gather(bim);

イメージをグレースケールに変換します。multithresh を使用して 3 つのしきい値を計算し、イメージを 4 レベル イメージに変換します。

cgim = im2gray(cim);
numClasses = 4;
thresh = multithresh(cgim,numClasses-1);

multithresh から返されたしきい値レベルを指定し、imquantize を使用してイメージを 4 つの領域にセグメント化します。

labels = imquantize(cgim,thresh);
imagesc(labels)
axis square
title("Coarse Label Image")

最も粗い解像度レベルの元のイメージと同じ空間参照を使用して、labels イメージを blockedImage オブジェクトに逆変換します。

blabels = blockedImage(labels,WorldStart=bim.WorldStart(3,1:2),...
    WorldEnd=bim.WorldEnd(3,1:2));

元のブロック化されたイメージを表示します。

figure
hB = bigimageshow(bim);

labels イメージを元のブロック化されたイメージに重ね合わせます。

showlabels(hB,blabels)

参照

[1] Bejnordi, Babak Ehteshami, Mitko Veta, Paul Johannes van Diest, Bram van Ginneken, Nico Karssemeijer, Geert Litjens, Jeroen A. W. M. van der Laak, et al. “Diagnostic Assessment of Deep Learning Algorithms for Detection of Lymph Node Metastases in Women With Breast Cancer.” JAMA 318, no. 22 (December 12, 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.

バージョン履歴

R2019b で導入