MATLAB での画像のサイズ変更

Ammar Ali 2022年1月20日
MATLAB での画像のサイズ変更

このチュートリアルでは、Matlab の imresize() 関数を使用した画像のサイズ変更について説明します。

MATLAB の imresize() 関数を使用して画像のサイズを変更する

imresize() 関数を使用して、Matlab の画像のサイズを変更できます。この関数は、ピクセルを増減することによって画像のサイズを変更します。たとえば、画像のサイズを 100 x 100 の 2 倍に変更すると、最終的なサイズは 200 x200 になります。この関数は、近傍にすでに存在するピクセル値を使用して、より多くのピクセルを作成します。画像のサイズを小さくしたい場合は、1 未満のサイズ変更スケール値を使用できます。この場合、imresize() 関数は、サイズ変更値に応じて画像からピクセルを削除します。サイズ変更スケールが 0.5 の場合、ピクセルは半分になります。最初の引数は、サイズ変更する画像です。論理型、数値型、およびカテゴリ型にすることができますが、数値は実数である必要があります。2 番目の引数はスケール、つまりサイズ変更係数であり、正の数である必要があります。たとえば、imread() 関数を使用して画像を読み取り、imresize() 関数を使用してサイズを変更してから、imshow() 関数を使用して両方をプロットしてみましょう。以下のコードを参照してください。

clc
RGB = imread('cat.jpg');
RI = imresize(RGB,10);
figure
imshow(RGB)
figure
imshow(RI)

出力:

imresize 関数を使用した画像のサイズ変更

左の画像は出力の元の画像で、右の画像はサイズ変更された画像です。2つの出力画像が保存されている変数のサイズを確認することもできます。これは元のサイズの 10 倍になります。画像に 3つ以上の寸法が含まれている場合、imresize() 関数は最初の 2つの寸法のサイズのみを変更し、他の寸法は同じままです。たとえば、上記のコードの場合、Matlab のワークスペースを見ると、元の画像とサイズ変更された画像の両方で 3 番目の次元が同じであることがわかります。サイズ変更スケール値として整数を使用する代わりに、ベクトルを使用して [100 100]のように出力画像のサイズを定義し、サイズ 100 x100 の出力画像を取得できます。たとえば、上の画像のサイズを 100 x100 の画像に変更してみましょう。以下のコードを参照してください。

clc
RGB = imread('cat.jpg');
RI = imresize(RGB,[100 100]);
figure
imshow(RGB)
figure
imshow(RI)

出力:

画像のサイズを希望のサイズに変更

左の画像は出力の元の画像で、右の画像はサイズ変更された画像です。右側の画像の上に出力画像のサイズ(100 x 100)も表示されます。3 番目の次元は、画像に存在する色の値が含まれているため、変更されません。imresize() 関数を使用して、インデックス付き画像のサイズを変更することもできます。インデックス付き画像は、RGB 画像とは異なり、バイトデータが格納された 2D 配列で構成されています。また、double、int16 などの異なるタイプのデータを格納することもできます。RGB 画像には、3 次元としての色ですが、インデックス付き画像には別のカラーマップとして色が含まれています。インデックス付き画像のサイズを変更するには、imresize() 関数内で 2 番目の変数を使用する必要があります。これは、imread() 関数の 2 番目の出力を使用して取得できる入力画像のカラーマップです。サイズ変更機能により、新しい 2D 配列と新しいカラーマップが提供されます。インデックス付きの画像をプロットするには、2D 配列とマップを使用する必要があります。たとえば、インデックス付きの画像を読み取ってサイズを変更してみましょう。以下のコードを参照してください。

clc
[OI,map] = imread("corn.tif");
[RI,Nmap] = imresize(OI,map,2);
figure
imshow(OI,map)
figure
imshow(RI,Nmap)

出力:

インデックス付き画像のサイズ変更

右の画像は出力の元の画像で、左の画像はサイズ変更された画像です。画像のサイズを変更するために使用される補間の方法を変更することもできます。デフォルトのメソッドはバイキュービックですが、imresize() 関数に新しいメソッドの名前を含む文字列を入力することで、最も近いメソッドまたは双一次メソッドに変更できます。最も近い内挿法では、出力ピクセルには、ポイントが含まれるピクセルの値が割り当てられます。双一次内挿法では、出力ピクセルには、最も近い 2 行 2 列の近傍のピクセルの加重平均である値が割り当てられます。バイキュービック補間法では、出力ピクセルには、最も近い 4 行 4 列の近傍のピクセルの加重平均である値が割り当てられます。

著者: 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 Image