MATLABによる画像処理3

ページトップへ 一つ上へ

ポイント


画像の回転、反転



さてさて、今回は以前やった画像処理の続きみたいな感じで。
前回は平滑化、鮮鋭化を行いました。
今回は画像を回転させる事と、反転させる事について学びます。

画像を回転させるとか反転させるとか、難しそうな事を言っていますが、
前回までで、画像は行列データとして扱われている事については学びました。
回転や反転はその行列の並びを変えればいいだけです。
例えば、90度回転させようと思えば、

X = | 1 2 3 |
    | 4 5 6 |
    | 7 8 9 |

このような行列を

X = | 3 6 9 |
    | 2 5 8 |
    | 1 4 7 |

というように配置を変えればいいだけの話なのです。

ここでMATLAB。MATlix-LABoratoryの出番です。
行列操作に関しては関数がしっかり用意してくれていますので、
それを使うだけという事になります。
実際に回転させる関数はどういう物なのかといいますと、

rot90

という関数が用意されています。
使い方としましては、

X = rot90(A,k)

という風になります。
Aは回転させたい行列を入れます。
rot90は反時計回りに90度回転します。
kは「k×90」度反時計回り回転させるタメに使います。
指定しないとkは1と判断されます。
それでは回転させてみましょう。
今回使った素材の画像は、



この画像はIEEEの研究用標準画像です。

では実際のプログラムは以下のように
function image_proc4

%
% 画像処理
% 画像を回転させる
%

imagedata=imread('Airplane.bmp');
imagedata=double(imagedata);


imagedata2=rot90(imagedata);

image(imagedata2);
colormap(gray(256));


基本的には前回までと大差のないプログラムになっております。
処理の部分だけが違うって感じですかね。

では出来上がった画像を以下に。



反時計回りに90度回転しているのがわかりますね?

それでは、同じ画像を使って今度は反転させてみましょう。
反転の場合も先ほどと同様に行列を操作するだけになります。
そして、反転させるタメの関数も用意されています。

X = fliplr(A)

これをやれば、左右方向に反転させる事が出来ます。
同様の手法で上下方向に反転させる関数もありますが、
ここでは、左右方向だけやってみます。
ちなみに、上下方向の場合は、

X = flipud(A)

です。気付いた方もいると思いますが、
FLIPは共通で、lr(left-right)とud(up-down)です。
使い方は全く同じなので、今回は左右だけで。

では実際のプログラムは以下のように
function image_proc5

%
% 画像処理
% 画像を反転させる
%

imagedata=imread('Airplane.bmp');
imagedata=double(imagedata);


imagedata2=fliplr(imagedata);

image(imagedata2);
colormap(gray(256));


で、反転させて出来上がった画像は、



こんな感じです。
はい。MATLABはこんなにも簡単に行列操作が出来るんです。