MATLABで画像処理をやってみる
MATLABといえば行列計算。画像処理は典型的な行列計算の応用例だと思うが、私はあまり画像処理に詳しくないので、勉強がてらMATLABの機能を使って色々やってみようと思う。
まず今回は備忘録も兼ねて、画像をMATLAB上で読み込んで表示させたり、リサイズや回転や反転など基本的な操作についてメモしておく。サンプル画像を使っても良いが、せっかくなので以前に私が3Dプリンターでつくった恐竜の写真を使う。
ちなみにこの恐竜はMagicaVoxelというフリーのボクセルモデリングソフトでモデリングしたもの。以下の記事で詳しく書いてるので興味があればどうぞ。
開発環境
MATLAB online
MATLAB R2022a
Image Processing Toolbox
画像をMATLAB onlineにアップロードする
私はMATLAB onlineを使っているので、まずは画像ファイルをonline上で使えるようにする必要がある。といってもやることは簡単で、MATLAB online上からuploadを選択して、MATLAB Driveというユーザーが使えるオンラインのストレージに画像をアップロードするだけ。
なお、今回はMATLAB Drive直下にuploadしたが、MATLAB Drive以下にフォルダも作れるので、フォルダ分けして管理することもできる。
画像の読み込み&書き込み(保存)
画像を読み込んでMATLAB上で処理したいときは、imreadを使う。以下ではAという名前でjpgの画像を3次元の行列として読み込んでいる。
A = imread('dinosaur.jpg');
なお、読み込まれた画像は画像の縦サイズ×横サイズ×3(RGB)のサイズの行列になっており、各要素にはunsigned int8の値が入っている。型は画像のフォーマットによって異なるかも。
画像を書き込んで保存したいときは、imwriteを使う。以下ではdinosaur_copy.jpgという名前の画像ファイルとして行列Aを保存している。
imwrite(A, 'dinosaur_copy.jpg');
なお、imreadとimwiteはオプションをつけることで色々な操作が可能。細かい操作は以下の公式リファレンスを参照。
https://jp.mathworks.com/help/matlab/ref/imread.html
https://jp.mathworks.com/help/matlab/ref/imwrite.html
画像を表示する
imshowで表示する
まず画像をさきほどのimreadでAという行列として読み込んでおき、以下のコマンドを実行することで画像をMATLAB上で表示することができる。
imshow(A);
こちらが表示してみた様子。
imshowコマンドのオプションについては以下を参照。
https://jp.mathworks.com/help/images/ref/imshow.html
イメージビューアーアプリで表示する
画像はイメージビューアーアプリを起動して表示することもできる。アプリを使うと、imshowの機能に加えてピクセル領域ツール、イメージ情報ツール、コントラスト調整ツールなどが使えて、より詳細な操作をすることができるとのこと。
イメージビューアーアプリを起動するときは、以下のようにimtoolコマンドで起動できる。
imtool(A);
こちらが表示してみた様子。
イメージビューアーアプリの詳細な操作方法や起動オプションは以下を参照。
https://jp.mathworks.com/help/images/ref/imageviewer-app.html
まだ画像処理するところまでたどりついてないが、力尽きたのでひとまず今回はここまで。
参考文献
公式ドキュメントと以下の本を読みつつ色々試しています。
MATLAB/Simulink記事まとめ
MATLABとSimulinkの記事は以下にまとめてます。