バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
各ツール、各言語で画像の読み込み、処理、保存の基本的な記載の仕方を確認していく。
今回はScilab。
登場人物
博識フクロウのフクさん
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
使用する画像再掲
今回こそScilabか。
使用する画像の再掲。
ファイル名はdog.jpgとする。
前準備
よくわからんが、MATLABと大体一緒なのでは?
と勝手に思ってる。
まぁ、結果的にはそうなんだけど、
Scilabはデフォルト機能として画像の読み込み、表示、書き出しはできない。
え?
じゃーどうするの?!
IPCV(Scilab Image Processing and Computer Vision toolbox)というtoolboxをインストールするとOpenCVベースのAPIが使用できる。
一応、裏でOpenCVが動いているようだ。
ATOMS(AuTomatic mOdules Management for Scilab)の機能を使ってインストール可能。
Scilabのメニューにそういうのがあったような気がする。
画像処理のカテゴリに該当パッケージがあるんで、それを選択してインストールボタンを押せばOKだ。
とりあえず、インストールはしておいた。
画像読み込み
まずは画像の読み込み。
-->im = imread('dog.jpg');
MATLAB,Pythonとの差はなさそう。
画像表示
そして、画像表示。
-->imshow(im);
これだけでいいんだ。
使い方はMATLABと一緒だけど、関数名はOpenCV依存ってことでPython側に似てるね。
画像処理
次は画像処理。
まずは赤の成分の抽出。
-->im(:,:,(2:3)) = 0; # G(2番目)、B(3番目)の成分を0にする
-->imshow(im);
あれ?
OpenCVが裏で動いてるってことから、
色の並びはPythonのcv2と同じでBGRなのかと思ったけど、
RGBになるの?
そうだね。
恐らく、ScilabのIPCVパッケージ内で並び替えをしているのだと思う。
まぁ親切ではあるんだけど、バリエーションが増えるのはなんとも・・・。
どっちにしても、ここら辺のデータの並びは常に気を付けるべきだろうね。
そして、左右反転。
-->im = im(:,$:-1:1,:);
-->imshow(im);
なんか$とか入ってる・・・。
Scilabの要素指定で$は終端を示す。
MATLABのendと一緒と思って良いだろう。
そして、等差数列を指定する並びもMATLABと一緒で
start:step:endになる。
よって、$:-1:1の場合は、
終端から先頭に向かって-1ずつの等差数列になる。
1,2,3,4,5だったら
5,4,3,2,1になる。
まぁ、MATLABを起点に考えればOKそうだから、Pythonと比べたらそれほど悩まないかな
画像書き出し
そして画像書き出し。
これはシンプル。
-->imwrite(im,'dog2.jpg');
MATLABと一緒か。
引数の並びも一緒だね。
まとめ
まとめだよ。
- Scilabで画像処理。
- IPCVパッケージのインストールが必要。
- 中身はOpenCV。
- IPCVパッケージのインストールが必要。
- OpenCVベースなので色の並びがBGRかと思いきやRGB。
- 終端要素しては$。
バックナンバーはこちら。
コメント