MATLABで画像処理その1:MATLAB onlineへのファイルアップロード、画像の読み込み&書き込み(保存)、画像の表示

投稿日:2022年8月24日
最終更新日:2022年8月24日

MATLABで画像処理をやってみる

MATLABといえば行列計算。画像処理は典型的な行列計算の応用例だと思うが、私はあまり画像処理に詳しくないので、勉強がてらMATLABの機能を使って色々やってみようと思う。

まず今回は備忘録も兼ねて、画像をMATLAB上で読み込んで表示させたり、リサイズや回転や反転など基本的な操作についてメモしておく。サンプル画像を使っても良いが、せっかくなので以前に私が3Dプリンターでつくった恐竜の写真を使う。

ちなみにこの恐竜はMagicaVoxelというフリーのボクセルモデリングソフトでモデリングしたもの。以下の記事で詳しく書いてるので興味があればどうぞ。

【3Dプリンター】3Dプリンターで遊ぼう日記 まとめ

 

開発環境

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の記事は以下にまとめてます。

MATLAB/Simulinkで遊んでみる まとめ

 


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください