Main Content

Image のプロパティ

イメージの外観と動作

Image プロパティは Image オブジェクトの外観と動作を制御します。プロパティの値を変更することによって、イメージの特定の要素を変更できます。プロパティのクエリと設定にはドット表記を使用します。

im = image(rand(20));
C = im.CData;
im.CDataMapping = 'scaled';

イメージ データと画質

すべて展開する

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

  • ベクトルまたは行列 — この形式はインデックス付きイメージ データを定義します。各要素は、イメージの 1 ピクセルの色を定義します。要素はカラーマップの色にマップされます。CDataMapping プロパティはマッピング方法を制御します。

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

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

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

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

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

CData as indexed colors and CData as an m-by-n-by-3 array of red, green, and blue component intensities

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

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

カラー データのマッピング方法。'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 番目の要素にマッピングされます。

内挿法。'nearest' または 'bilinear' として指定します。MATLAB は内挿を使用して、スケーリングまたは回転を行ったイメージのバージョンを画面に表示します。選択した値はイメージ配列に影響しません。ただし、Figure を保存したり、座標軸の内容をエクスポートしたりする場合、MATLAB は内挿されたイメージの視覚的表現を保存します。

イメージの内容と実施する効果に基づいて、内挿法を選択します。

  • 'nearest' — この方法は、異なるカテゴリを表すピクセルの値が少ない場合、またはビュー内の各ピクセルを高い拡大率で表示する場合に最適です。(x, y) にあるピクセルの値は、元のイメージの (x, y) に最も近いピクセルの値です。

  • 'bilinear' — この方法は、その他のほぼすべての状況に最適です。(x, y) にあるピクセルの値は、元のイメージの周囲にあるピクセルの加重平均です。表示のアーティファクトを最小限にするために、イメージの縮小時に追加の平滑化が適用されます。MATLAB セッションまたは Figure で Painters レンダラーが使用されている場合、イメージの縮小時に追加の平滑化は行われません。レンダラーを調べるには、関数 rendererinfo を呼び出します。

R2022b 以降

最大レンダリング解像度。"none" または正の整数値として指定します。このプロパティは、イメージの大きい方の次元を表示するために MATLAB が使用する最大解像度を制御するのに使用します。小さい方の次元は、縦横比を保持するために調整されます。指定する値は画面上の表示に影響しますが、イメージの CData プロパティに格納されているイメージ データには影響しません。

イメージをフル解像度で表示するには、"none" を指定します。表示されるイメージのサイズを制限するには、数値を指定します。より大きい数値 (および "none") を指定すると画質は向上しますが、初期イメージのレンダリングに時間がかかる可能性があります。より小さい数値を指定するとイメージがダウンサンプリングされますが、より高速にレンダリングされます。

通常、元のイメージの最大イメージ次元より小さい値を指定すると、イメージのレンダリングが高速になります。ただし、1 ピクセルまたは数ピクセル分のみ小さい値を指定すると、そのイメージの初期レンダリングはフル解像度でのレンダリングより長時間かかる場合があります。

例: ダウンサンプリングされたイメージの表示

384 行 512 列の RGB イメージ peppers.png を読み取ります。次に、関数 imagesc を呼び出して、大きい方の次元に沿って 128 ピクセルを使用してイメージを表示します。元の縦横比を保持するため、小さい方の次元は 96 ピクセルにスケール ダウンされます。

imdata = imread("peppers.png");
imagesc(imdata,"MaxRenderedResolution",128)

peppers.png displayed at a resolution of 96-by-128 pixels

位置

すべて展開する

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

  • 2 要素ベクトル — 最初の要素を CData(1,1) の中心の位置として使用し、2 番目の要素を CData(m,n) の中心の位置として使用します。ここで、[m,n] = size(CData) です。CData の残りの要素の中心は、これら 2 つの点の間で等間隔に分布させます。

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

    (XData(2)-XData(1))/(size(CData,2)-1)

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

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

メモ

XData に 2 つを超える要素をもつベクトルが含まれている場合、MATLAB は最初と最後の要素を使用し、他の要素は無視します。

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

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

  • 2 要素ベクトル — 最初の要素を CData(1,1) の中心の位置として使用し、2 番目の要素を CData(m,n) の中心の位置として使用します。ここで、[m,n] = size(CData) です。CData の残りの要素の中心は、これら 2 つの点の間で等間隔に分布させます。

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

    (YData(2)-YData(1))/(size(CData,1)-1)

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

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

メモ

YData に 2 つを超える要素をもつベクトルが含まれている場合、MATLAB は最初と最後の要素を使用し、他の要素は無視します。

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

対話機能

すべて展開する

可視性の状態。"on" または "off"、もしくは数値または logical 1 (true) または 0 (false) として指定します。"on" の値は true と等価であり、"off"false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • "on" — オブジェクトを表示します。

  • "off" — オブジェクトを削除せずに非表示にします。非表示のオブジェクトのプロパティには引き続きアクセスできます。

データ ヒントの内容。DataTipTemplate オブジェクトとして指定します。基となる DataTipTemplate オブジェクトのプロパティを変更することにより、データ ヒントに表示される内容を制御できます。プロパティの一覧については、DataTipTemplate のプロパティ を参照してください。

データ ヒントの変更の例については、カスタム データ ヒントの作成を参照してください。

このプロパティは、データ ヒントがピン留めされているイメージにのみ適用されます。

メモ

DataTipTemplate オブジェクトは findobj または findall によって返されず、copyobj によってコピーされません。

コンテキスト メニュー。ContextMenu オブジェクトとして指定します。このプロパティは、オブジェクトを右クリックしたときにコンテキスト メニューを表示するために使用します。関数 uicontextmenu を使用して、コンテキスト メニューを作成します。

メモ

PickableParts プロパティが 'none' に設定されている場合または HitTest プロパティが 'off' に設定されている場合には、このコンテキスト メニューは表示されません。

選択状態。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' — 選択されています。プロット編集モードでオブジェクトをクリックした場合、MATLAB は Selected プロパティを 'on' に設定します。SelectionHighlight プロパティも 'on' に設定されている場合、MATLAB はオブジェクトの周囲に選択ハンドルを表示します。

  • 'off' — 選択されていません。

選択時の選択ハンドルの表示。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on'Selected プロパティが 'on' に設定されているときに選択ハンドルを表示します。

  • 'off'Selected プロパティが 'on' に設定されている場合でも選択ハンドルを表示しません。

座標軸の範囲でのオブジェクトのクリップ。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on' の値は座標軸の範囲外になるオブジェクトの部分をクリップします。

  • 'off' の値は座標軸の範囲外に表示される部分があってもオブジェクト全体を表示します。プロットの作成、hold on の設定、座標軸のスケーリングの固定を行ってから、元のプロットよりも大きくなるようにオブジェクトを作成した場合、オブジェクトの一部が座標軸の範囲の外に表示されることがあります。

オブジェクトを含む座標軸の Clipping プロパティは 'on' に設定しなければなりません。そうしない場合、このプロパティの効果はありません。クリップ動作の詳細については、座標軸の Clipping プロパティを参照してください。

コールバック

すべて展開する

マウスクリック コールバック。次の値のいずれかとして指定します。

  • 関数ハンドル

  • 関数ハンドルと追加の引数を含む cell 配列

  • ベース ワークスペース内で評価される有効な MATLAB コマンドまたは MATLAB 関数の文字ベクトル (非推奨)

このプロパティは、オブジェクトをクリックしたときにコードを実行するために使用します。関数ハンドルを使用してこのプロパティを指定した場合、MATLAB はコールバックを実行するときに次の 2 つの引数をコールバック関数に渡します。

  • クリックしたオブジェクト — コールバック関数内から、クリックしたオブジェクトのプロパティにアクセスします。

  • イベント データ — 空の引数です。この引数が使用されないことを示すために、関数定義の中でこの引数をチルダ文字 (~) に置換します。

関数ハンドルを使用してコールバック関数を定義する方法についての詳細は、グラフィックス オブジェクトのコールバックの作成を参照してください。

メモ

PickableParts プロパティが 'none' に設定されている場合または HitTest プロパティが 'off' に設定されている場合には、このコールバックは実行されません。

オブジェクト作成関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、グラフィックス オブジェクトのコールバックの作成を参照してください。

このプロパティは、MATLAB がオブジェクトを作成するときに実行されるコールバック関数を指定します。MATLAB は CreateFcn コールバックを実行する前に、すべてのプロパティ値を初期化します。CreateFcn プロパティを指定しない場合、MATLAB は既定の作成関数を実行します。

既存のコンポーネントに CreateFcn プロパティを設定しても効果はありません。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、作成中のオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

オブジェクト削除関数。次の値のいずれかとして指定します。

  • 関数ハンドル。

  • 最初の要素が関数ハンドルである cell 配列。cell 配列内のその後の要素はコールバック関数に渡される引数です。

  • 有効な MATLAB 式を含む文字ベクトル (非推奨)。MATLAB は、この式をベース ワークスペースで評価します。

コールバックを関数ハンドル、cell 配列、または文字ベクトルとして指定する方法の詳細については、グラフィックス オブジェクトのコールバックの作成を参照してください。

このプロパティは、MATLAB がオブジェクトを削除するときに実行されるコールバック関数を指定します。MATLAB は、オブジェクトのプロパティを破棄する前に DeleteFcn コールバックを実行します。DeleteFcn プロパティを指定しない場合、MATLAB は既定の削除関数を実行します。

このプロパティを関数ハンドルまたは cell 配列として指定した場合、コールバック関数の最初の引数を使用して、削除されるオブジェクトにアクセスできます。それ以外の場合は、関数 gcbo を使用してオブジェクトにアクセスします。

コールバック実行制御

すべて展開する

コールバックの割り込み。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティは実行中のコールバックが割り込み可能かどうかを決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

MATLAB は、コールバック キューを処理するコマンドを実行するたびにコールバックの割り込み動作を判別します。これらのコマンドには、drawnowfigureuifiguregetframewaitforpause があります。

実行中コールバックにこれらのコマンドが含まれていない場合、割り込みは発生しません。MATLAB は、実行中コールバックの実行を先に終了させ、その後に割り込みコールバックを実行します。

実行中コールバックにこれらのいずれかのコマンドが含まれている場合、実行中コールバックを所有するオブジェクトの Interruptible プロパティに応じて割り込みが発生するかどうかが決まります。

  • Interruptible の値が 'off' の場合、割り込みは発生しません。代わりに、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて、割り込みコールバックが破棄されるかコールバック キューに追加されるかが決まります。

  • Interruptible の値が 'on' の場合、割り込みが発生します。MATLAB は、コールバック キューの次回処理時に、実行中コールバックの実行を停止し、割り込みコールバックを実行します。割り込みコールバックが完了した後、MATLAB は実行中だったコールバックの実行を再開します。

メモ

コールバックの割り込みと実行は、以下の状況では動作が異なります。

  • 割り込みコールバックが DeleteFcnCloseRequestFcn または SizeChangedFcn コールバックの場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 実行中のコールバックが関数 waitfor を現在実行している場合、Interruptible プロパティの値にかかわらず割り込みが発生します。

  • 割り込みコールバックが Timer オブジェクトで所有されている場合、Interruptible プロパティの値にかかわらずスケジュールに従ってコールバックが実行されます。

メモ

MATLAB は、割り込みが発生したときにプロパティの状態や表示を保存しません。たとえば、gca コマンドや gcf コマンドから返されたオブジェクトは、別のコールバックを実行するときに変更されている可能性があります。

コールバック キューイング。'queue' または 'cancel' として指定します。BusyAction プロパティは MATLAB による割り込みコールバックの実行の処理方法を決定します。次の 2 つのコールバックの状態について考慮する必要があります。

  • "実行中" コールバックは、現在実行しているコールバックです。

  • "割り込み" コールバックは、実行中のコールバックに割り込もうとするコールバックです。

BusyAction プロパティによってコールバック キューイングの動作が決まるのは、次の両方の条件を満たす場合のみです。

  • 実行中コールバックに drawnowfigureuifiguregetframewaitforpause などのコールバック キューを処理するコマンドが含まれている。

  • 実行中コールバックを所有するオブジェクトの Interruptible プロパティの値が 'off' である。

これらの条件に当てはまる場合、割り込みコールバックを所有するオブジェクトの BusyAction プロパティに応じて MATLAB による割り込みコールバックの処理方法が決まります。BusyAction プロパティは次の値を取ることができます。

  • 'queue' — 割り込みコールバックをキューに入れ、実行中のコールバックが終了した後に処理されるようにします。

  • 'cancel' — 割り込みコールバックを実行しません。

マウス クリック キャプチャ機能。次の値の 1 つとして指定します。

  • 'visible' — 表示されている場合にのみマウス クリックをキャプチャします。Visible プロパティは、'on' に設定しなければなりません。Image オブジェクトがクリックに応答するか、先祖がクリックに応答するかは、HitTest プロパティが決定します。

  • 'none' — マウス クリックをキャプチャしません。Image オブジェクトをクリックすると、Figure ウィンドウの現在のビュー内でその後ろにあるオブジェクトにクリックが渡されます。Image オブジェクトの HitTest プロパティの効果はありません。

キャプチャしたマウス クリックへの応答。'on' または 'off'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

  • 'on'Image オブジェクトの ButtonDownFcn コールバックをトリガーします。ContextMenu プロパティが定義されている場合は、コンテキスト メニューを呼び出します。

  • 'off'Image オブジェクトの先祖のうち、次のいずれかの条件を満たす最も近い先祖のコールバックをトリガーします。

    • HitTest プロパティが 'on' に設定されている

    • PickableParts プロパティが、先祖によるマウス クリックのキャプチャを有効にする値に設定されている

メモ

PickableParts プロパティは、Image オブジェクトがマウス クリックをキャプチャできるかどうかを決定します。キャプチャできない場合、HitTest プロパティは無効です。

この プロパティ は読み取り専用です。

削除状態。matlab.lang.OnOffSwitchState 型の on/off logical 値として返されます。

MATLAB は、DeleteFcn コールバックが実行を開始すると、BeingDeleted プロパティを 'on' に設定します。コンポーネント オブジェクトが存在しなくなるまで BeingDeleted プロパティは 'on' に設定されたままです。

クエリや変更の前にオブジェクトが削除されようとしていないか確認するために BeingDeleted プロパティの値をチェックします。

親/子

すべて展開する

親。AxesGroup または Transform オブジェクトとして指定します。

子。空の GraphicsPlaceholder 配列、または DataTip オブジェクト配列として返されます。このプロパティを使用して、チャートにプロットされるデータ ヒントのリストを表示します。

Children プロパティを使用して子の追加や削除を行うことはできません。このリストに子を追加するには、DataTip オブジェクトの Parent プロパティをチャート オブジェクトに設定します。

親の Children プロパティ内でのオブジェクト ハンドルの可視性。次の値のいずれかとして指定します。

  • "on" — オブジェクト ハンドルは常に表示されます。

  • "off" — オブジェクト ハンドルは常に非表示です。このオプションは、他の関数による意図しない変更を防止するために役立ちます。HandleVisibility"off" に設定すると、その関数の実行中にハンドルが一時的に非表示になります。

  • "callback" — オブジェクト ハンドルはコールバック内から、あるいはコールバックにより呼び出される関数から参照できます。しかし、コマンド ラインから呼び出される関数からは参照できません。このオプションを使用すると、コマンド ラインからのオブジェクトへのアクセスがブロックされますが、コールバック関数からのアクセスは許可されます。

オブジェクトが親の Children プロパティ内にリストされない場合、オブジェクト階層の検索またはハンドル プロパティのクエリによってオブジェクト ハンドルを取得する関数は、そのオブジェクト ハンドルを返しません。こうした関数の例としては、関数 getfindobjgcagcfgconewplotclaclf、および close などが挙げられます。

非表示のオブジェクト ハンドルは有効なままです。ルートの ShowHiddenHandles プロパティを "on" に設定すると、HandleVisibility プロパティの設定にかかわらず、すべてのオブジェクト ハンドルがリストされます。

識別子

すべて展開する

この プロパティ は読み取り専用です。

グラフィックス オブジェクトのタイプ。'image' として返されます。

オブジェクト識別子。文字ベクトルまたは string スカラーとして指定します。オブジェクトの識別子として機能する一意の Tag 値を指定できます。コードの他の部分からオブジェクトにアクセスする必要がある場合、関数 findobj を使用して Tag 値に基づいてオブジェクトを検索できます。

ユーザー データ。任意の MATLAB 配列として指定します。たとえば、スカラー、ベクトル、行列、cell 配列、文字配列、table、または構造体を指定できます。このプロパティを使用して、任意のデータをオブジェクトに保存します。

App Designer を使用している場合は、UserData プロパティを使用する代わりに、アプリでパブリック プロパティまたはプライベート プロパティを作成してデータを共有します。詳細については、App Designer アプリ内でのデータの共有を参照してください。

バージョン履歴

R2006a より前に導入

すべて展開する