機械学習以前のレガシーな超解像変換のひとつ ICBI を試すのに参照コードが MATLAB で、それを Octave で動かすだけのメモ書きです。
なお、以前、iNEDI で似た事をしたのですが、それより少し手順を改善してます。
準備
Octave インストール
- Ubuntu だと snap install octave
- macOS は brew install octave で良いでしょう。
octave forge
image パッケージを入れます。
$ octave
GNU Octave, version 4.2.2
(略)
octave:1> pkg install -forge image
For information about changes from previous versions of the image package, run 'news image'.
octave:2> pkg list
Package Name | Version | Installation directory
--------------+---------+-----------------------
image | 2.12.0 | /home/yoya/octave/image-2.12.0
環境設定 (.octave)
octave コマンドを引数なしで実行して対話モードに入り、毎度 pkg load image しても良いですが、.octave に一行入れるとサボれます。
- .octave
pkg("load", "image");
また、ICBI は div zero の警告が大量に出て、メッセージが埋もれるので以下の設定も入れると良いでしょう。
warning("off","Octave:divide-by-zero");
警告が減って、大事なメッセージを見落としにくくなります。ICBI を試した後はコメントアウトしとくと良いでしょう。
変換
なお自分は imshow をコメントアウトして、imwrite をコメントから戻して実行してます。
% octave icbiexample.m
ICBI function example.
This is an example script that shows you how to use the icbi.m function.
Please check the documentation inside this file for further information.
[ 0.000 sec] LAYER: 01
[ 0.000 sec] ZF: 01
[ 0.012 sec] PHASE: 00
warning: division by zero
warning: called from
icbi at line 375 column 34
icbiexample at line 55 column 10
(略)
[4615.394 sec] PHASE: 01
warning: division by zero
warning: called from
icbi at line 375 column 34
icbiexample at line 55 column 10
(略)
[5796.262 sec] END
testimage.png | testimage_icbi.png |
---|---|
128x128 を 255x255 にするのに 1時間36分!!! なかなか重たいアルゴリズムのようです。
追記
MATLAB (2020年版)で試したところ、約2秒でした。 3000倍近く速い。。
恐らくは、div zero 警告の出力に足を引っ張られているのでしょう。