Image-Processing-Node-Editor
Image-Processing-Node-Editor copied to clipboard
処理の検証や比較検討での用途を想定したノードエディターベースの画像処理アプリ(A node editor-based image processing application intended for use in processing verification and comparison studies)
[Japanese/English]
Image-Processing-Node-Editor
ノードエディターベースの画像処理アプリです。
処理の検証や比較検討での用途を想定しています。

Note
ノードは作成者(高橋)が必要になった順に追加しているため、
画像処理における基本的な処理を担うノードが不足していることがあります。
Requirement
opencv-python 4.5.5.64 or later
onnxruntime-gpu 1.12.0 or later
dearpygui 1.6.2 or later
mediapipe 0.8.10 or later ※mediapipeノード実行に必要
protobuf 3.20.0 or later ※mediapipeノード実行に必要
filterpy 1.4.5 or later ※motpyノード実行に必要
lap 0.4.0 or later ※ByteTrackノード実行に必要
Cython 0.29.30 or later ※ByteTrackノード実行に必要
cython-bbox 0.1.3 or later ※ByteTrackノード実行に必要
rich 12.4.4 or later ※Norfairノード実行に必要
※Windowsでcython_bbox のインストールが失敗する場合は、numpy、Cythonをインストールしてから
cython-bboxはGitHubからのインストールをお試しください(2022/06/05時点)
pip install numpy
pip install Cython
pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox
Installation
以下の何れかの方法で環境を準備してください。
- スクリプトを直接実行
- リポジトリをクローン
git clone https://github.com/Kazuhito00/Image-Processing-Node-Editor
- パッケージをインストール
pip install -r requirements.txt
- 「main.py」を実行
python main.py
- リポジトリをクローン
- Dockerを利用
- 実行ファイルを利用(Windowsのみ)
- ipn-editor_win_x86_64.zipをダウンロード
- 「main.exe」を実行
- pipインストールを利用
※インストールされるディレクトリ名が「node」「node_editor」となってしまうため修正予定
→pip利用時はvenv等の仮想環境でのインストールを強く推奨- ビルドツールをインストール
Windows:https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
Ubuntu:sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
- Numpy、Cython、wheelをインストール<Br>
pip install Cython numpy wheel
- GitHubリポジトリを指定し、pipインストール
pip install git+https://github.com/Kazuhito00/Image-Processing-Node-Editor
- 以下コマンドでアプリケーションを起動
ipn-editor
- ビルドツールをインストール
Usage
アプリの起動方法は以下です。
python main.py
- --setting
ノードサイズやVideoWriterの設定が記載された設定ファイルパスの指定
デフォルト:node_editor/setting/setting.json - --unuse_async_draw
非同期描画を使用しない<Br>→GUIイベントループとノードの更新処理を直列に実施
※ノード異常終了時などの原因調査用
デフォルト:指定なし
Create Node
メニューから作成したいノードを選びクリック
Connect Node
出力端子をドラッグして入力端子に接続
端子に設定された型同士のみ接続可能
Delete Node
削除したいノードを選択した状態で「Del」キー
Export
メニューから「Export」を押し、ノード設定(jsonファイル)を保存
Import
Exportで出力したノード設定(jsonファイル)を読み込む
Node
Input Node
Image |
![]() |
静止画(bmp, jpg, png, gif)を読み込み、画像を出力するノード 「Select Image」ボタンでファイルダイアログをオープン |
Video |
![]() |
動画(mp4, avi)を読み込み、フレーム毎の画像を出力するノード 「Select Movie」ボタンでファイルダイアログをオープン 動画をループ再生する場合は「Loop」にチェック 「Skip Rate」は動画読み込み時に、何フレームに1回出力するか指定する数値 |
WebCam |
![]() |
Webカメラを読み込み、フレーム毎の画像を出力するノード 「Device No」ドロップダウンリストでカメラ番号を指定 |
RTSP |
![]() |
ネットワークカメラのRTSP入力を読み込み、フレーム毎の画像を出力するノード |
Int Value |
![]() |
整数値を出力するノード |
Float Value |
![]() |
フロート値を出力するノード |
Process Node
ApplyColorMap |
![]() |
入力画像に疑似カラーを適用し、疑似カラー画像を出力するノード |
Blur |
![]() |
入力画像に対し平滑化処理を実行し、平滑化画像を出力するノード |
Brightness |
![]() |
入力画像に対し輝度調整処理を実行し、輝度調整画像を出力するノード 「alpha」スライドバーで輝度調整値を変更可能 |
Canny |
![]() |
入力画像に対しキャニー法を用いたエッジ検出処理を実行し エッジ検出画像を出力するノード スライダーで最小閾値と最大閾値を指定 |
Contrast |
![]() |
入力画像に対しコントラスト調整処理を実行し、コントラス調整画像を出力するノード 「beta」スライドバーでコントラスト調整値を変更可能 |
Crop |
![]() |
入力画像の切り抜きを実行し、切り抜き画像を出力するノード 左上座標(x1, y1)と右上座標(x2, y2)をスライダーで変更可能 |
EqualizeHist |
![]() |
入力画像の明度部分のヒストグラム平坦化を実行し、画像を出力するノード |
Flip |
![]() |
入力画像に対し水平反転/垂直反転を実行し、画像を出力するノード |
Gamma Correction |
![]() |
入力画像に対しガンマ補正を実行し、画像を出力するノード スライダーでγ値を変更可能 |
Grayscale |
![]() |
入力画像をグレースケール化し、画像を出力するノード |
Threshold |
![]() |
入力画像を2値化し、画像を出力するノード 「type」で2値化アルゴリズムを指定 「threshold」で閾値変更 「type」で「大津の2値化(THRESH_OTSU)」は 閾値自動決定アルゴリズムのため「threshold」値は無視 |
Simple Filter |
![]() |
入力画像に3×3の2次元フィルタリング処理を行い、画像を出力するノード |
Omnidirectional Viewer |
![]() |
入力画像(360度画像)を指定のロール軸、ピッチ軸、ヨー軸で変換して、画像を出力するノード 入力画像は正距円筒図法の画像を想定 |
Deep Learning Node
ドロップダウンリストでモデルを指定し、CPU/GPUチェックボックスで推論時のデバイスを変更可能
※モデルがGPU推論に対応していない場合はGPUにチェックを入れてもCPU推論
ノードが使用するモデルのライセンスは「node/deep_learning_node/XXXXXXXX/」の各ディレクトリを参照
Classification |
![]() |
入力画像に対しクラス分類を実行するノード 出力画像は未加工の画像 Object Detectionノードを接続した場合 バウンディングボックスに対しクラス分類を実行 |
Face Detection |
![]() |
入力画像に対し顔検出を実行するノード 出力画像は未加工の画像 |
Low-Light Image Enhancement |
![]() |
入力画像に対し暗所ノイズ除去(Low-Light Image Enhancement)を実行するノード 出力画像はノイズ除去適用済みの画像 |
Monocular Depth Estimation |
![]() |
入力画像に対し単眼深度推定を実行するノード 出力画像は単眼深度推定を適用しグレースケール化した画像 |
Object Detection |
![]() |
入力画像に対し物体検出を実行するノード 出力画像は未加工の画像 |
Pose Estimation |
![]() |
入力画像に対し姿勢推定を実行するノード 出力画像は未加工の画像 |
Semantic Segmentation |
![]() |
入力画像に対しセマンティックセグメンテーションを実行するノード 出力画像は未加工の画像 |
QR Code Detection |
![]() |
入力画像に対しQRコード検出を実行するノード 出力画像は未加工の画像 |
Analysis Node
FPS |
![]() |
ノードの処理時間(ms)を元にFPSを算出するノード 「Add Slot」で処理時間入力端子を追加可能 |
RGB Histgram |
![]() |
入力画像のRGB各チャンネルのヒストグラムを算出して グラフに表示するノード |
BRISQUE |
![]() |
BRISQUEを用いた画質評価を行うノード ※数値が高いほど悪い |
Draw Node
Draw Information |
![]() |
ClassificationノードやObject Detectionノードなどの 未加工画像を出力するノードの画像に対して、 解析結果を描画する |
Image Concat |
![]() |
複数入力画像を並べて表示するノード 「Add Slot」で画像入力端子を追加可能 |
PutText |
![]() |
入力画像の左上にテキストを描画するノード 描画色はカラーマップで選択可能 処理時間入力端子を接続することで処理時間もあわせて描画 |
Result Image |
![]() |
画像を表示するノード 処理ノードよりも大きい表示を行う また、ClassificationノードやObject Detectionノードなどの 未加工画像を出力するノードを接続すると解析結果を追加して描画 |
Result Image(Large) |
![]() |
Result Imageノードよりも大きく表示 |
Other Node
ON/OFF Switch |
![]() |
入力画像を出力するか切り替えるノード |
Video Writer |
![]() |
入力画像を動画をして書き出すノード 出力先、出力サイズ、FPSは「setting.json」にて指定 |
Preview Release Node
今後大きく仕様を変更する可能性のあるノード
MOT |
![]() |
Object Detectionノードを入力しMOT(Multi Object Tracking)を実行するノード |
Exec Python Code |
![]() |
Pythonコードを実行するノード 入力画像用の変数は「input_image」 出力画像用の変数は「output_image」 |
Node(Another repository)
他リポジトリで公開しているノードです。
Image-Processing-Node-Editor で使用するには、各リポジトリのインストール方法に従ってください。
Input Node
YouTube |
![]() |
YouTubeを読み込み、画像を出力するノード URL欄にYouTube動画のURLを指定して「Start」ボタンを押してください 再生が始まるまでに少々時間がかかります Interval(ms)でYouTube読み込み間隔を指定します |
ToDo
- [ ] RGB Histgramノードのグラフ部分が常に最前面に表示される問題の調査
- [ ] 複数ノードを接続したノードを削除した際に接続線が残る問題の調査
- [ ] Import機能がノード追加前にしか利用できない挙動の修正
Author
高橋かずひと(https://twitter.com/KzhtTkhs)
License
Image-Processing-Node-Editor is under Apache-2.0 license.
Image-Processing-Node-Editorのソースコード自体はApache-2.0 licenseですが、
各アルゴリズムのソースコードは、それぞれのライセンスに従います。
詳細は各ディレクトリ同梱のLICENSEファイルをご確認ください。
License(Image)
サンプルで表示している画像はフリー素材ぱくたそ様、NHKクリエイティブ・ライブラリー様からお借りしています。