Main Content

関数 imresize を使用したイメージのサイズ変更

この例では、関数 imresize を使用してイメージのサイズを変更する方法を説明します。

倍率の値の指定

イメージを読み取って表示します。

I = imread("circuit.tif");
imshow(I)

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

関数 imresize を使用してイメージをサイズ変更します。この例では、倍率係数を指定します。イメージを拡大するには、1 より大きい倍率係数を指定します。

magnificationFactor = 1.25;
J = imresize(I,magnificationFactor);

拡大したイメージを表示します。

imshow(J)

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

出力イメージのサイズの指定

次に、倍率の値ではなく、出力イメージに必要なサイズを指定して再びイメージをサイズ変更します。出力イメージの行数と列数を含むベクトルを imresize に渡します。指定したサイズが入力イメージと同じ縦横比にならない場合は、出力イメージに歪みが生じます。ベクトルの 1 つの要素を NaN と指定すると、imresize はその次元の値を計算して、イメージの縦横比を維持します。多重解像度の処理に必要なサイズ変更を実行するには、impyramid を使用します。

K = imresize(I,[100 150]);
imshow(K)

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

内挿法の指定

次に、内挿法を指定して再びイメージをサイズ変更します。イメージを拡大する場合、出力イメージに含まれるピクセルが元のイメージより多くなります。imresize は内挿を使用して、ピクセル位置の近傍にあるピクセルの集合の加重平均を計算し、これらのピクセルの値を決定します。imresize は、各ピクセルの点からの距離に基づいて重み付けを行います。既定の設定では、imresize は双三次内挿を使用しますが、他の内挿法や内挿カーネルを指定することもできます。詳細なリストは、imresizeのリファレンス ページを参照してください。また、独自のカスタム内挿カーネルを指定することもできます。この例では、双一次内挿を使用しています。

L = imresize(I,1.5,"bilinear");
imshow(L)

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

イメージ縮小時のエイリアシングの回避

次に、イメージの縮小で再びイメージをサイズ変更します。イメージのサイズを小さくすると、出力イメージのピクセル数が減るため、元のピクセルの一部が失われます。これはエイリアシングなどのアーティファクトをもたらす可能性があります。サイズの減少によるエイリアシングは通常、出力イメージで階段状のパターン (特に高コントラストのイメージで) またはモアレ (波紋効果) のパターンとなります。既定の設定では、imresize は最近傍を除くすべての内挿タイプの出力イメージにアンチエイリアシングを使用して、出力イメージへのエイリアシングの影響を制限します。アンチエイリアシングをオフにするには、パラメーター 'Antialiasing' を指定して値を false に設定します。イメージのサイズを減らすと常に情報が失われるため、アンチエイリアシングをオンにしても、サイズ変更がアーティファクトをもたらす可能性があります。

M = imresize(I,.75,"Antialiasing",false);
imshow(M)

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