MATLAB 逆カラーマップ

Ammar Ali 2024年2月15日
MATLAB 逆カラーマップ

このチュートリアルでは、MATLAB で flipud() 関数を使用してカラーマップを反転する方法について説明します。

MATLAB 逆カラーマップ

カラーマップは、画像などのグラフィックス オブジェクトの色を設定します。 カラーマップは、RGB 3 成分の値を使用して色を行列または配列の値に割り当てる値の行列です。

Matlab では、画像はマトリックス形式で保存され、その色を定義する数値が含まれています。 imshow() のような関数を使用して行列を画像として表示する場合、関数はカラーマップを使用して画像に色の値を割り当てます。

カラーマップを反転するには、flipud() 関数を使用して行列または配列の値を反転できます。 カラーマップは色の値を含む行列でもあるため、flipud() 関数を使用してカラーマップに存在する色を逆にすることができます。

カラーマップを反転すると、Matlab が現在表示している画像やその他のオブジェクトに存在する色が反転します。 たとえば、バイナリ イメージを作成し、flipud() 関数を使用してそのカラーマップを反転させてみましょう。

以下のコードを参照してください。

clc
clear

v = [0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 0];
figure(1)
imshow(v,'InitialMagnification','fit')
colorbar
figure(2)
imshow(v,'InitialMagnification','fit')
colorbar
colormap(flipud(gray))

出力:

逆カラーマップ

上記のコードでは、imshow() 関数を使用してバイナリ イメージの 2つの図を作成しました。 最初の図は、元のイメージと元のカラーマップを含むカラー バーを示しています。

2 番目の図では、最初の図のカラーマップを反転しています。 出力では、左の図は元のカラーマップを使用したイメージを示し、右の図は逆のカラーマップを使用したイメージを示しています。

出力で、色が反転していることがわかります。 白は黒に変換され、黒は白に変換されます。

上記のコードでは、imshow() 関数の倍率プロパティを使用して、画像が非常に小さいため、指定された画像を Figure に合わせました。 与えられた画像を拡大すると、無視できます。

上記の例では、2 色のみのバイナリ イメージを使用しましたが、カラー イメージでもこの操作を実行できます。

色付きの画像のカラーマップを反転したい場合は、グレーのカラーマップを反転している上記のコードの最後の行を変更する必要がありますが、グレーの代わりにカラーマップを使用する必要があります。

たとえば、imagesc() 関数を使用してマトリックスからカラー画像を作成し、flipud() 関数を使用してそのカラーマップを反転させてみましょう。

以下のコードを参照してください。

clc
clear

v = [0 0 0 0;0 1 0 0;0 0 1 0;0 0 0 0];
figure(1)
imagesc(v)
colorbar
figure(2)
imagesc(v)
colorbar
colormap(flipud(colormap))

出力:

カラー画像の逆カラーマップ

imagesc() 関数は、スケーリングされた色で画像を表示します。 この関数の入力が行列の場合、関数は各値にカラーマップから異なる色を割り当てて表示します。

上記のコードでは、前のカラーマップを反転し、新しい値を新しいカラーマップに割り当てています。

上記の出力では、左の図は元のカラーマップを使用したイメージを示し、右の図は逆のカラーマップを使用したイメージを示しています。 上記の出力では、画像の色とカラー バーが変更されていることがわかります。

カラーマップの詳細については、この リンク(https://www.mathworks.com/help/matlab/ref/colormap.html) を確認してください。 flipud() 関数の詳細については、この リンク(https://www.mathworks.com/help/matlab/ref/colormap.html) を確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

関連記事 - MATLAB Colormap