Main Content

image

配列のイメージ表示

説明

image(C) は、配列 C 内のデータをイメージとして表示します。C の各要素は、イメージの 1 ピクセルの色を指定します。結果のイメージは mn 列のピクセルからなるグリッドです。ここで、mC の行数、n は列数です。要素の行と列のインデックスにより、対応するピクセルの中心が決まります。

image(x,y,C) は、イメージの位置を指定します。xy を使用して、C(1,1)C(m,n) に対応する角の位置を指定します。両方の角を指定するには、xy を 2 要素ベクトルとして設定します。一方の角を指定し、他方の角を image で決定するには、xy をスカラー値として設定します。イメージが伸張し、適切に方向付けされます。

image('CData',C) は、既存のプロットを置き換えずに、現在の座標軸にイメージを追加します。この構文は、image(C) の低水準版です。詳細については、イメージの高水準版と低水準版の違いを参照してください。

image('XData',x,'YData',y,'CData',C) は、イメージの位置を指定します。この構文は、image(x,y,C) の低水準版です。

image(___,Name,Value) は、名前と値のペアの引数を 1 つ以上使用して、イメージのプロパティを指定します。イメージのプロパティは、前述の構文に示した任意の入力引数の組み合わせを使用して指定できます。

image(ax,___) は、現在の座標軸 (gca) ではなく ax で指定された座標軸にイメージを作成します。オプションの ax は、前述の構文のすべての入力引数の組み合わせより前に指定できます。

im = image(___) は、作成された Image オブジェクトを返します。イメージの作成後にプロパティを設定するには、im を使用します。この出力は、前述の構文に示した任意の入力引数の組み合わせを使用して指定できます。イメージのプロパティと説明の一覧については、Image のプロパティ を参照してください。

すべて折りたたむ

行列 C を作成します。C 内のデータのイメージを表示します。現在のカラーマップを示すカラー バーをグラフに追加します。

C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
image(C)
colorbar

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

既定では、イメージの CDataMapping プロパティは 'direct' に設定され、imageC 内の値をカラーマップのインデックスとして解釈します。たとえば、右下のピクセルは C の最後の要素 22 に対応し、カラーマップの 22 番目の色を使用します。

イメージの作成時に CDataMapping プロパティを 'scaled' に設定して、現在のカラーマップの全範囲に値をスケーリングします。

image(C,'CDataMapping','scaled')
colorbar

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

または、image(C,'CDataMapping','scaled') の代わりに関数 imagesc を使用して値をスケーリングすることもできます。たとえば、imagesc(C) を使用します。

x 軸の 5 ~ 8、y 軸の 3 ~ 6 の範囲を占めるようにイメージを配置します。

x = [5 8];
y = [3 6];
C = [0 2 4 6; 8 10 12 14; 16 18 20 22];
image(x,y,C)

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

C(1,1) に対応するピクセルの中心は点 (5,3) になります。C(3,4) に対応するピクセルの中心は点 (8,6) になります。image は、この 2 点間の残りのイメージを配置し、方向を設定します。

C をトゥルーカラーの 3 次元配列として作成します。配列の最後の 2 ページをゼロに設定して、赤の色のみを使用します。

C = zeros(3,3,3);
C(:,:,1) = [.1 .2 .3; .4 .5 .6; .7 .8 .9]
C = 
C(:,:,1) =

    0.1000    0.2000    0.3000
    0.4000    0.5000    0.6000
    0.7000    0.8000    0.9000


C(:,:,2) =

     0     0     0
     0     0     0
     0     0     0


C(:,:,3) =

     0     0     0
     0     0     0
     0     0     0

C 内のデータのイメージを表示します。

image(C)

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

ラインをプロットし、そのラインの上にイメージを作成します。image オブジェクトを返します。

plot(1:3)
hold on
C = [1 2 3; 4 5 6; 7 8 9];
im = image(C);

Figure contains an axes object. The axes object contains 2 objects of type line, image.

イメージの奥にあるラインが見えるよう、イメージを半透明にします。

im.AlphaData = 0.5;

Figure contains an axes object. The axes object contains 2 objects of type line, image.

JPEG イメージ ファイルを読み取ります。

C = imread('ngc6543a.jpg');

imread は、650×600×3 の配列 C を返します。

イメージを表示します。

image(C)

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

表面プロットを作成します。次に、表面の下方にイメージを追加します。image はイメージを xy 平面に表示します。

Z = 10 + peaks;
surf(Z)
hold on 
image(Z,'CDataMapping','scaled')

Figure contains an axes object. The axes object contains 2 objects of type surface, image.

入力引数

すべて折りたたむ

イメージのカラー データ。次のいずれかの形式で指定します。

  • ベクトルまたは行列 — この形式はインデックス付きイメージ データを定義します。C の各要素がイメージの 1 ピクセルの色を定義します。たとえば、C = [1 2 3; 4 5 6; 7 8 9]; のようになります。C の要素は、関連付けられている座標軸のカラーマップの色にマッピングされます。CDataMapping プロパティはマッピング方法を制御します。

  • RGB 3 成分の 3 次元配列 — この形式は、RGB 3 成分の値を使用してトゥルーカラー イメージ データを定義します。各RGB 3 成分が、イメージの 1 ピクセルの色を定義します。RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 要素のベクトルです。3 次元配列の最初のページは赤成分を、2 番目のページは緑成分を、3 番目のページは青成分を含みます。このイメージはカラーマップの色ではなくトゥルーカラーを使用するため、CDataMapping プロパティは効果がありません。

    • Cdouble 型の場合、RGB 3 成分の値 [0 0 0] は黒に対応し、[1 1 1] は白に対応します。

    • C が整数型の場合、イメージはデータのすべての範囲を使用して色を決定します。たとえば Cuint8 型の場合、[0 0 0] は黒に対応し、[255 255 255] は白に対応します。CDataint8 型の場合、[-128 -128 -128] は黒に対応し、[127 127 127] は白に対応します。

    • Clogical 型の場合、[0 0 0] は黒に対応し、[1 1 1] は白に対応します。

次の図に、2 つのカラー モデルについて C の関連する次元を示します。

Diagram of the color image data, or CData, for indexed colors and true colors. The CData for indexed colors is an m-by-n array. The CData for true colors is an m-by-n-by-3 array.

NaN 要素の動作は定義されていません。

代わりに関数 image の低水準版を使用するには、CData プロパティを名前と値のペアとして設定します。たとえば、image('CData',C) のようになります。

double データ型と整数データ型の変換

ベクトルまたは 2 次元行列を指定して関数 image を呼び出し、既定の CDataMapping 値を使用する場合、double 値と整数型の間で変換するときに、データ値を 1 ずつオフセットしなければなりません。CDataMapping'scaled' に設定されている場合、このオフセットは必要ありません。

たとえば、U8uint8 型のインデックス付きイメージ データが含まれている場合、次を使用して double 型に変換できます。

D = double(U8) + 1;

インデックス付きイメージ データを double 型から整数型に変換するには、1 を減算して round を使用し、すべての値が整数になるようにします。たとえば、Ddouble 型のインデックス付きイメージ データが含まれている場合、uint8 型に変換するには次のようにします。

U8 = uint8(round(D - 1));

正規化された double とトゥルーカラー値の変換

トゥルーカラー イメージ データを整数型から double 型に変換するには、データを再スケーリングします。たとえば、RGB8uint8 型のトゥルーカラー イメージ データである場合、double 型に変換するには次のようにします。

RGB = double(RGB8)/255;

トゥルーカラー イメージ データを double 型から整数型に変換するには、データを再スケーリングして round を使用し、すべての値が整数になるようにします。たとえば、RGBdouble 型のイメージ データである場合、uint8 型に変換するには次のようにします。

RGB8 = uint8(round(RGB*255));

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

x 軸に沿った配置。次のいずれかの形式で指定します。

  • 2 要素ベクトル — 最初の要素を C(1,1) の中心の位置として使用し、2 番目の要素を C(m,n) の中心の位置として使用します。ここで、[m,n] = size(C) です。C が 3 次元配列である場合、mn は最初の 2 つの次元です。C の残りの要素の中心は、これら 2 点間に等間隔に分布されます。

    各ピクセルの幅は次の式で決定されます。

    (x(2)-x(1))/(size(C,2)-1)

    x(1) > x(2) の場合、イメージが左右反転されます。

  • スカラー — この位置に C(1,1) の中心を配置し、それに続く要素はそれぞれ 1 単位ずつ離します。

メモ

  • x に 2 つを超える要素がある場合、image は最初と最後の要素を使用し、他の要素は無視します。

  • 代わりに関数 image の低水準版を使用するには、名前と値の引数を使用して XData プロパティを設定します。たとえば、image('XData',x,'YData',y,'CData',C) のようになります。

  • 範囲がもともとイメージ境界の外側に設定されていない限り、x 軸や y 軸の範囲外へのイメージの移動やズームを対話的に実行することはできません。範囲がもともと境界の外側にある場合、そのような制限はありません。他のオブジェクト (ラインなど) が座標軸を占有し、イメージの境界を越えている場合、他のオブジェクトの境界まで移動またはズームを実行できます。ただし、そのオブジェクトの境界を越えることはできません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime (R2023b 以降) | duration (R2023b 以降) | categorical (R2023b 以降)

y 軸に沿った配置。次のいずれかの形式で指定します。

  • 2 要素ベクトル — 最初の要素を C(1,1) の中心の位置として使用し、2 番目の要素を C(m,n) の中心の位置として使用します。ここで、[m,n] = size(C) です。C が 3 次元配列である場合、mn は最初の 2 つの次元です。C の残りの要素の中心は、これら 2 点間に等間隔に分布されます。

    各ピクセルの高さは次の式で決定されます。

    (y(2)-y(1))/(size(C,1)-1)

    y(1) > y(2) の場合、イメージが上下反転されます。

  • スカラー — この位置に C(1,1) の中心を配置し、それに続く要素はそれぞれ 1 単位ずつ離します。

メモ

  • y に 2 つを超える要素がある場合、image は最初と最後の要素を使用し、他の要素は無視します。

  • 代わりに関数 image の低水準版を使用するには、名前と値の引数を使用して YData プロパティを設定します。たとえば、image('XData',x,'YData',y,'CData',C) のようになります。

  • 範囲がもともとイメージ境界の外側に設定されていない限り、x 軸や y 軸の範囲外へのイメージの移動やズームを対話的に実行することはできません。範囲がもともと境界の外側にある場合、そのような制限はありません。他のオブジェクト (ラインなど) が座標軸を占有し、イメージの境界を越えている場合、他のオブジェクトの境界まで移動またはズームを実行できます。ただし、そのオブジェクトの境界を越えることはできません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | datetime (R2023b 以降) | duration (R2023b 以降) | categorical (R2023b 以降)

Axes オブジェクト。Axes オブジェクトを指定しない場合、image は現在の座標軸を使用します。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: image([1 2 3],'AlphaData',0.5) は、半透明のイメージを表示します。

以下にリストするプロパティは、イメージ プロパティの一部です。完全な一覧については、Image のプロパティ を参照してください。

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

それぞれの方法には次の効果があります。

  • 'direct' — 現在のカラーマップのインデックスとして値を解釈します。小数部分の値は、最近傍値の小さい方の整数に丸められます。

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

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

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

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

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

  • スカラー — イメージ全体で同じ透明度を使用します。

  • CData と同じサイズの配列 — イメージの要素ごとに異なる透明度の値を使用します。

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 の最後の要素 (またはその型の範囲の上限) にマッピングされます。整数型は uint8uint16uint32uint64int8int16int32int64 です。

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

出力引数

すべて折りたたむ

Image オブジェクト。スカラーとして返されます。イメージの作成後にプロパティを設定するには、im を使用します。一覧については、Image のプロパティ を参照してください。

詳細

すべて折りたたむ

イメージの高水準版と低水準版の違い

関数 image には、高水準版と低水準版の 2 つがあります。image の入力引数として 'CData' を使用した場合、低水準版が使用されます。それ以外の場合、高水準版が使用されます。

高水準版の image は、プロットの前に newplot を呼び出し、この座標軸のプロパティを次のように設定します。

  • Layer'top' に。イメージは、目盛りやグリッド ラインの手前に表示されます。

  • YDir'reverse' に。y 軸の値は、上から下に増加します。上から下に値を減少するには、YDir'normal' に設定します。この設定は、y 軸とイメージの両方を反転します。

  • View[0 90] に。

低水準版の関数 imagenewplot を呼び出さず、座標軸のプロパティを設定しません。

ヒント

  • TIFF などのさまざまな標準形式のグラフィックス ファイルから、イメージ データを MATLAB に読み込むには、imread を使用します。MATLAB のイメージ データをグラフィックス ファイルに書き込むには、imwrite を使用します。関数 imread および imwrite は、さまざまなグラフィックス ファイル形式と圧縮方式をサポートしています。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する