Octave での画像ファイルの入出力
Octave での画像ファイルの入出力を行う.
- 画像ファイルの読み込みと表示
- 画像ファイルの書き出し
- 画像ファイルの情報取得
幅,高さ,画像の種類(カラーかグレーレベルか黒白か)などの情報を取得します
* Octave バージョン 3.2.4 では,file_in_path.m の修正が必要になる場合があります.
前準備
Octave のインストール
必見 Web ページ: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/
必見 Web ページ: http://www.eecs.berkeley.edu/Research/Projects/CS/vision/bsds/
画像ファイルの読み込みと表示
カラー画像ファイルの読み込みと表示の例
ここではカラー画像ファイルの読み込みと表示を説明する.
- 画像ファイルの読み込み: imread 関数
ファイル名の例
- Windows の場合: r:/lena_std.jpg
- Linux の場合: /tmp/lena_std.jpg
- 画像ファイルの表示: image 関数
- 画像ファイルの表示(カラーマップを使用): imshow 関数
* ここでは JPEG ファイルを使っていますが,たいていの種類の画像ファイルを扱うことができる.
* Octave バージョン 3.2.4 で「warning: isstr is obsolete and will be removed from a future version of Octave, please use ischar instead」というエラーメッセージが出て,結局 plot での描画がうまくできないことがあります.
謝辞:http://www.tatsuromatsuoka.com/octave/jpn/OctaveWinMemo.html で公開されたいた「Octave for windows メモ」を参考にしました.ありがとうございます. プロットの前に,次の操作を行うことで,このエラーを回避できる場合があります.
pkg unload oct2mat
* Octave 3.2.4, Ubuntu の実行例
[rgb, immap, alpha] = imread("/tmp/lena_std.jpg");
map = gray(256);
colormap(map);
imshow(rgb);
- rgb: 画像データ
- カラー画像 (color) の場合: M x N x 3 の配列
- グレーレベル画像 (grey-level) の場合: M x N の配列
- 黒白画像 (black-and-white) の場合: M x N の配列
- map: カラーマップ
カラー画像の場合には,たいていは,カラーマップは空である
- alpha: アルファ

* Octave バージョン 3.2.4, Windows の実行例
Windows では、ファイル名の指定が違うだけ(ドライブ名を付ける).
[rgb, immap, alpha] = imread("r:/lena_std.jpg");
map = gray(256);
colormap(map);
imshow(rgb);


カラー画像ファイルの R プレーンの表示の例
1 が RED, 2 が GREEN, 3 が BLUE
* Octave 3.2.4, Ubuntu の実行例
[rgb, immap, alpha] = imread("/tmp/lena_std.jpg");
map = gray(256);
colormap(map);
imshow(rgb(:,:,1));

* Octave 3.2.4, Windows の実行例
Windows では、ファイル名の指定が違うだけ(ドライブ名を付ける).
[rgb, immap, alpha] = imread("r:/lena_std.jpg");
map = gray(256);
colormap(map);
imshow(rgb(:,:,1));


画像ファイルの書き出し
- 画像ファイルの書き出し: imwrite 関数
* ここでは JPEG ファイルと PNG ファイルを使っていますが,たいていの種類の画像ファイルを扱うことができる.
* 画像ファイルの確認には,ImageMagick の display コマンドが便利です.
カラー画像ファイルの書き出しの例
* Octave 3.2.4, Ubuntu の実行例
[rgb, immap, alpha] = imread("/tmp/lena_std.jpg");
imwrite(rgb, "/tmp/hoge.png");

* Octave バージョン 3.2.4, Windows の実行例
Windows では、ファイル名の指定が違うだけ(ドライブ名を付ける).
[rgb, immap, alpha] = imread("r:/lena_std.jpg");
imwrite(rgb, "r:/hoge.png");

* Octave 3.0.5, Linux の実行例
Octave のバージョンが古い場合,imwrite の引数の並びが変わります.先にファイル名,あとに,フレームデータの並び
rgb = imread("/tmp/lena_std.jpg");
imwrite("/tmp/hoge.png", rgb():,:,1), rgb():,:,2), rgb():,:,3));

画像ファイルの情報取得 (Octave 3.1.51 以上のみ)
画像ファイルの情報取得には,imfinfo 関数を使う. ここでは,画像ファイル名 r:/lena_std.jpg(Windows の場合は) を指定します.
* ここでは JPEG ファイルを使っていますが,たいていの種類の画像ファイルを扱うことができる.
* プロンプトを変えたいときは「PS1('> ')」のようなコマンドを実行してください.
画像ファイルの情報取得の例
* Ubuntu での実行例
info = imfinfo("/tmp/lena_std.jpg")
info.Width
info.Height
* Windows での実行例
info = imfinfo("r:/lena_std.jpg")
info.Width
info.Height


