このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
イメージのサイズ変更
この例では、関数 imresize
を使用してイメージのサイズを変更する方法を説明します。
まず、イメージを読み取って表示します。
I = imread("circuit.tif");
imshow(I)
倍率の値の指定
関数imresize
を使用してイメージをサイズ変更します。この例では、倍率係数を指定します。イメージを拡大するには、1 より大きい倍率係数を指定します。
magnificationFactor = 1.25; J = imresize(I,magnificationFactor);
元のイメージと拡大されたイメージをモンタージュに表示します。
imshowpair(I,J,method="montage")
出力イメージ サイズの指定
次に、倍率の値ではなく、出力イメージに必要なサイズを指定して再びイメージをサイズ変更します。出力イメージの行数と列数を含むベクトルを imresize
に渡します。指定したサイズが入力イメージと同じ縦横比にならない場合は、出力イメージに歪みが生じます。ベクトルの 1 つの要素を NaN
と指定すると、imresize
はその次元の値を計算して、イメージの縦横比を維持します。多重解像度の処理に必要なサイズ変更を実行するには、impyramid
を使用します。
K = imresize(I,[100 150]);
imshowpair(I,K,method="montage")
内挿法の指定
次に、内挿法を指定して再びイメージをサイズ変更します。イメージを拡大する場合、出力イメージに含まれるピクセルが元のイメージより多くなります。imresize
は内挿を使用して、ピクセル位置の近傍にあるピクセルの集合の加重平均を計算し、これらのピクセルの値を決定します。imresize
は、各ピクセルの点からの距離に基づいて重み付けを行います。既定の設定では、imresize
は双三次内挿を使用しますが、他の内挿法や内挿カーネルを指定することもできます。また、独自のカスタム内挿カーネルを指定することもできます。この例では、最近傍内挿を使用します。
L = imresize(I,magnificationFactor,"nearest");
双三次内挿 J
を使用してサイズ変更したイメージと、最近傍内挿 L
を使用してサイズ変更したイメージをモンタージュに表示します。
imshowpair(J,L,method="montage")
イメージ縮小時のエイリアシングの回避
次に、イメージの縮小で再びイメージをサイズ変更します。イメージのサイズを小さくすると、出力イメージのピクセル数が減るため、元のピクセルの一部が失われます。これはエイリアシングなどのアーティファクトをもたらす可能性があります。サイズの減少によるエイリアシングは通常、出力イメージで階段状のパターン (特に高コントラストのイメージで) またはモアレ (波紋効果) のパターンとなります。既定の設定では、imresize
は最近傍を除くすべての内挿タイプの出力イメージにアンチエイリアシングを使用して、出力イメージへのエイリアシングの影響を制限します。アンチエイリアシングをオフにするには、名前と値の引数 "Antialiasing"
を指定して値を false
に設定します。イメージのサイズを減らすと常に情報が失われるため、アンチエイリアシングをオンにしても、サイズ変更がアーティファクトをもたらす可能性があります。
magnificationFactor = 0.66; M = imresize(I,magnificationFactor); N = imresize(I,magnificationFactor,Antialiasing=false);
サイズ変更したイメージのアンチエイリアシングありの場合となしの場合をモンタージュに表示します。
imshowpair(M,N,method="montage")