MATLAB で画像を反転する
このチュートリアルでは、Matlab の flip()
関数を使用して画像を垂直方向に反転する方法について説明します。
MATLAB の flip()
関数を使用して画像を反転する
画像はピクセルで構成されています。たとえば、200 x 200 ピクセルの画像がある場合、つまり、縦軸に 200 ピクセル、横軸に 200 ピクセルがあります。imread()
関数を使用して、Matlab で画像を読み取って保存する必要があります。これはマトリックスに格納され、マトリックスの各要素は画像の各ピクセルの値です。画像を垂直方向に反転するには、ピクセルの位置を変更する必要があります。たとえば、マトリックスの最後の行が最初の行になり、最初の人が最後の行になります。Matlab の組み込み関数 flip()
を使用して、画像または行列を反転できます。たとえば、Matlab の flip()
関数を使用して画像を反転し、subplot()
および imshow()
関数を使用して同じプロットに画像を表示してみましょう。以下のコードを参照してください。
img = imread('cat.jpg');
img2 = flip(img);
subplot(1,2,1)
imshow(img)
title('Original Image')
subplot(1,2,2)
imshow(img2)
title('Flipped Image')
出力:
上記の出力でわかるように、画像は垂直方向に反転しています。画像を水平方向に反転する場合は、flip()
関数に 2 番目の引数を追加する必要があります。これは、行列のような flip(img, 2)
の次元です。たとえば、上記の出力では、画像が垂直方向に反転する理由としてマトリックスを列方向に反転していますが、画像を水平方向に反転する場合は、マトリックスを行方向に反転する必要があります。Matlab では、行列の最初の次元はその列であり、2 番目の次元はその行です。したがって、画像を反転するには、flip()
関数の 2 番目の引数として次元を渡す必要があります。デフォルトでは、flip()
関数は最初の次元である列を使用して行列を反転します。一部の画像には、画像の色を含む 3 次元もあります。3 次元を反転すると、画像は反転しませんが、画像の色が反転または変更されます。
MATLAB で行列操作を使用して画像を反転する
Matlab の行列操作を使用して行列を反転することもできます。たとえば、flip()
関数の代わりに行列操作を使用して画像を反転する場合は、上記のコードの flip(img)
関数をコード img(end:-1:1,:,:)
。このコードでは、列エントリの位置を変更しましたが、他の 2つのディメンションは同じままです。2 番目と 3 番目の引数が同じになるように、2 番目と 3 番目の引数としてコロンを使用しました。2 番目の次元を変更することもできます。たとえば、Matlab で行列操作を使用して、上の画像を垂直方向と水平方向に反転させてみましょう。以下のコードを参照してください。
img = imread('cat.jpg');
img2 = img(end:-1:1,end:-1:1,:);
subplot(1,2,1)
imshow(img)
title('Original Image')
subplot(1,2,2)
imshow(img2)
title('Flipped Image')
出力:
上記の出力でわかるように、画像は水平方向だけでなく垂直方向にも反転しています。flip()
関数を使用して一度に 1つの次元のみを反転できますが、行列操作を使用して複数の次元を反転できます。Matlab のループを使用して行列を反転することもできます。