【入門】画像処理概要(MATLAB)【数値計算】

【入門】画像処理概要(MATLAB)【数値計算】 数値計算
【入門】画像処理概要(MATLAB)【数値計算】

MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

はじめに

の、
MATLAB,Python,Scilab,Julia比較 第3章 その3【画像操作②】

を書き直したもの。

各ツール、各言語で画像の読み込み、処理、保存の基本的な記載の仕方を確認していく。
今回はMATLAB。

使用する画像再掲

扱う画像とか、実施する処理とかは前回確認したので、
まずはMATLABから実際のプログラムを確認していく。

まずは、使用する画像を再掲する。

犬と自転車

ファイル名はdog.jpgとする。

画像読み込み

まずは画像の読み込み。
使用する関数はimread。
こういう呼び出し方になる。

>> im = imread('dog.jpg');

戻り値に画像の情報が入る。
画像の縦横のピクセル数と同じ形状で3次元配列としてピクセル単位の情報として保持されてる。
ちなみに1ピクセルは256階調を前提にしているので、8bit長変数として格納される。
MATLABの場合、uint8って型になる。
そして、それらがRGBの3チャンネルがある。
よって、今回の場合の配列の構造は\(576\times768\times3\)になる。

画像の形状は、末端のRGBの情報が埋まった1次元を除外した2次元配列で維持されてると思えばOK。

画像表示

次は画像の表示。
imageって関数で表示できる。
引数は先ほどのimreadの戻り値として取得したim。

>> image(im);
犬と自転車(MATLABで表示)、Figure 1

plotのウィンドウと同じ感じで表示される。

画像処理

そして、赤の成分だけ抽出して、それを表示してみる。

>> im(:,:,(2:3)) = 0; % G(2番目)、B(3番目)の成分を0にする 
>> image(im);
犬と自転車(赤抽出)(MATLABで表示)、Figure1

当然ではあるが、赤成分だけの画像になる。
im(:,:,(2:3))がやや特殊な書き方をしているように見えるが、
2:3は2から3のstepが1の等差数列を示している。
今回の2:3の場合だと
[2 3]
と同義。
かりに1:5とした場合は、
[1 2 3 4 5]
と同義になる。

そして、そのまま左右反転してみる。

>> im = im(:,end:-1:1,:);
>> image(im);
犬と自転車(左右反転)(MATLABで表示)、Figure 1

end:-1:1が特殊な書き方に見えるかもしれない。
endが終端を示しており、
終端からstep -1で先頭を目指すような等差数列になる。
[1 2 3 4 5]
に対して、実施すると以下になる。
[5 4 3 2 1]
このような配列操作の基本は身に着けておいた方がよいだろう。

画像書き出し

最後に画像の書き出し。

>> imwrite(im,'dog2.jpg');

加工したimをdog2.jpgってファイル名で保存してるだけである。
縦横のサイズは、imの配列の構造に依存して決定される。

まとめ

  • MATLABで画像処理。
  • 読み込みはimread。
    • 画像の構成を維持した2次元配列に、RGBの3チャンネルがぶら下がる。
      • 結果として3次元配列になる。
  • 画像の加工は配列操作を駆使する。
    • 配列操作の基本を身に着けた方がお得。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

タイトルとURLをコピーしました