Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

イメージのサイズ変更

この例では、関数 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);

元のイメージと拡大されたイメージをモンタージュに表示します。

imshowpair(I,J,method="montage")

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

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

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

K = imresize(I,[100 150]);
imshowpair(I,K,method="montage")

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

内挿法の指定

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

L = imresize(I,magnificationFactor,"nearest");

双三次内挿 J を使用してサイズ変更したイメージと、最近傍内挿 L を使用してサイズ変更したイメージをモンタージュに表示します。

imshowpair(J,L,method="montage")

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

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

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

magnificationFactor = 0.66;
M = imresize(I,magnificationFactor);
N = imresize(I,magnificationFactor,Antialiasing=false);

サイズ変更したイメージのアンチエイリアシングありの場合となしの場合をモンタージュに表示します。

imshowpair(M,N,method="montage")

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

参考

関連するトピック