バックナンバーはこちら。
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。
- 終端要素しては$。
バックナンバーはこちら。
コメント