「Image-Processing-Node-Editor」を使って体感しながら学べる画像処理

「Image-Processing-Node-Editor」で画像処理

 高橋かずひとさん開発の「Image-Processing-Node-Editor」が面白いです。

 ノードと呼ばれる機能ブロックをつないでいくだけで、様々な画像処理が実現できるソフトです。イメージは以下の動画が分かりやすいと思います。

 公式READMEより引用

 高橋さんのブログにも多数のサンプルが掲載されています。

 似たようなGUIの画像処理ソフトは無いことはないのですが、ポイントは以下の点ではないかなと思います。

  • 言語がPython
  • OSSとして無料で公開されている(うれしい Apache 2.0ライセンス)
  • AI機能が充実

 これら全てを満たしているソフトは、(現在、私が知る限り)存在しないので、その意味では唯一無二のソフトと思います。

 インストール方法は、公式サイトのREADMEにまとまっていますが、個人的な補足記事をZennで公開しています。README読んでもよく分からないという人は、参考にしてもらえると良いかもしれません(私の記事読んでも良くわからないかもですが…)。

「Image-Processing-Node-Editor」で手を動かしながら画像処理を学ぶ

 「Image-Processing-Node-Editor」ですが、画像処理のちょっとしたデモやプロトタイピングはもちろん、手を動かしながら画像処理を学ぶのにも良さそうだなと感じました。

 最初、特にシンプルなカーネルを使った以下のような画像フィルタがあると良いなと思いました。詳しくは、以前以下ブログ記事を書いているので参照ください。

 上記記事では、Pythonのコードを載っけているのですが、フィルタの係数を変えて色々試すのは、正直面倒ですね。フィルタの係数をグリグリいじりながら効果を確認することができれば、グッと理解が深まりそうですし楽しそうです。

 「ないものは作ればいいじゃない」というわけで、シンプルなフィルタ機能を実装して本家にPRを投げてみました

 UIがいまいちなので、マージされないかなと思ったら、すぐマージいただけました。嬉しい。

 使い方としては「ProcessNode」から「Simple Filter」を起動します。あとは、フィルタの値を入力するだけです。「x-1,y-1」「x, y-1」…といった記号がならんでいますが、これは、以下の図の「A」「B」…「I」に対応しています。

 例えば、ブログ記事で紹介したようなソーベルフィルタは以下のようになります

 ラプラシアンフィルタは以下ですね。

「Image-Processing-Node-Editor」に新しい機能を追加しよう

 「Image-Processing-Node-Editor」ですが、作者の高橋さんがベースを作ってくださっているので、簡単に機能を追加することができます。

 私のPRの中身をみれば分かりますが、node_simple_filter.pyというファイルを追加するだけで、簡単に機能として追加できますし、画像処理の部分はimage_processという関数の3行のみです。

 他も大半はUIの部分ですし、ほとんど他のプログラムをコピーしたものをベースに少し改造しただけです。

 例えば、4x4のフィルタとか他の画像処理とか色々作れそうですね。画像処理に興味ある人は、自分で機能追加してみると良いかもしれません。良いものができたら、本家にPRすると色々な人が(特に私が)喜ぶかもしれません。

まとめ

 画像処理ソフト「Image-Processing-Node-Editor」を使って画像処理を学ぶ方法を紹介してみました。

 このソフト使うと、手を動かしながら画像処理が理解できますね。色々な値のフィルタを試したり、複数段フィルタを重ねることもできそうです。

 1つ1つは単純な画像フィルタですが、実はディープラーニング(AI)の画像認識でよく使われるCNNという技術は、おおざっぱには、この画像フィルタを大量に組み合わせたものだったりします。そしてAIの学習って、このパラメータのチューニングを自動化するところが、キモだったりするんですよね。

 なのでAIの画像認識に興味がある人にとっても、「Image-Processing-Node-Editor」は凄い有用なツールだったりします。より詳しく知りたい人は、拙作「AI自作教室」も合わせて読んでいただけましたら幸いです(宣伝)!

参考リンク

Image-Processing-Node-Editor v0.2.0リリース🦔 - 高橋かずひとのプログラミング、その他、備忘録。

関連記事