処理の検証や比較検討での用途を想定したノードエディターベースの画像処理アプリ(A node editor-based image processing application intended for use in processing verification and comparison studies)
[Japanese/English]
ノードエディターベースの画像処理アプリです。
処理の検証や比較検討での用途を想定しています。
ノードは作成者(高橋)が必要になった順に追加しているため、
画像処理における基本的な処理を担うノードが不足していることがあります。
opencv-python 4.5.5.64 or later
onnxruntime-gpu 1.12.0 or later
dearpygui 1.11.0 or later
mediapipe 0.8.10 or later ※mediapipeノード実行に必要
protobuf 3.20.0 or later ※mediapipeノード実行に必要
filterpy 1.4.5 or later ※motpyノード実行に必要
以下の何れかの方法で環境を準備してください。
git clone https://github.com/Kazuhito00/Image-Processing-Node-Editor
pip install -r requirements.txt
python main.py
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
pip install Cython numpy wheel
pip install git+https://github.com/Kazuhito00/Image-Processing-Node-Editor
ipn-editor
アプリの起動方法は以下です。
python main.py
メニューから作成したいノードを選びクリック
出力端子をドラッグして入力端子に接続
端子に設定された型同士のみ接続可能
削除したいノードを選択した状態で「Del」キー
メニューから「Export」を押し、ノード設定(jsonファイル)を保存
Exportで出力したノード設定(jsonファイル)を読み込む
Image |
静止画(bmp, jpg, png, gif)を読み込み、画像を出力するノード 「Select Image」ボタンでファイルダイアログをオープン |
|
Video |
動画(mp4, avi)を読み込み、フレーム毎の画像を出力するノード 「Select Movie」ボタンでファイルダイアログをオープン 動画をループ再生する場合は「Loop」にチェック 「Skip Rate」は動画読み込み時に、何フレームに1回出力するか指定する数値 |
|
Video(Set Frame Position) |
動画(mp4, avi)を読み込み、指定フレーム位置の画像を出力するノード 「Select Movie」ボタンでファイルダイアログをオープン |
|
WebCam |
Webカメラを読み込み、フレーム毎の画像を出力するノード 「Device No」ドロップダウンリストでカメラ番号を指定 |
|
RTSP |
ネットワークカメラのRTSP入力を読み込み、フレーム毎の画像を出力するノード |
|
Int Value |
整数値を出力するノード |
|
Float Value |
フロート値を出力するノード |
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度画像)を指定のロール軸、ピッチ軸、ヨー軸で変換して、画像を出力するノード 入力画像は正距円筒図法の画像を想定 |
|
Resize | 入力画像を指定の高さ、幅、補間方法でリサイズして、画像を出力するノード |
ドロップダウンリストでモデルを指定し、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コード検出を実行するノード 出力画像は未加工の画像 |
FPS |
ノードの処理時間(ms)を元にFPSを算出するノード 「Add Slot」で処理時間入力端子を追加可能 |
|
RGB Histgram |
入力画像のRGB各チャンネルのヒストグラムを算出して グラフに表示するノード |
|
BRISQUE |
BRISQUEを用いた画質評価を行うノード ※数値が高いほど悪い |
Draw Information |
ClassificationノードやObject Detectionノードなどの 未加工画像を出力するノードの画像に対して、 解析結果を描画する |
|
Image Concat |
複数入力画像を並べて表示するノード 「Add Slot」で画像入力端子を追加可能 |
|
PutText |
入力画像の左上にテキストを描画するノード 描画色はカラーマップで選択可能 処理時間入力端子を接続することで処理時間もあわせて描画 |
|
Result Image |
画像を表示するノード 処理ノードよりも大きい表示を行う また、ClassificationノードやObject Detectionノードなどの 未加工画像を出力するノードを接続すると解析結果を追加して描画 |
|
Result Image(Large) | Result Imageノードよりも大きく表示 |
ON/OFF Switch | 入力画像を出力するか切り替えるノード | |
Video Writer |
入力画像を動画をして書き出すノード 出力先、出力サイズ、FPSは「setting.json」にて指定 |
今後大きく仕様を変更する可能性のあるノード
MOT | Object Detectionノードを入力しMOT(Multi Object Tracking)を実行するノード | |
Exec Python Code |
Pythonコードを実行するノード 入力画像用の変数は「input_image」 出力画像用の変数は「output_image」 |
|
Screen Capture |
デスクトップ全画面をキャプチャして出力するノード |
他リポジトリで公開しているノードです。
Image-Processing-Node-Editor で使用するには、各リポジトリのインストール方法に従ってください。
YouTube |
YouTubeを読み込み、画像を出力するノード URL欄にYouTube動画のURLを指定して「Start」ボタンを押してください 再生が始まるまでに少々時間がかかります Interval(ms)でYouTube読み込み間隔を指定します |
高橋かずひと(https://twitter.com/KzhtTkhs)
Image-Processing-Node-Editor is under Apache-2.0 license.
Image-Processing-Node-Editorのソースコード自体はApache-2.0 licenseですが、
各アルゴリズムのソースコードは、それぞれのライセンスに従います。
詳細は各ディレクトリ同梱のLICENSEファイルをご確認ください。
サンプルで表示している画像はフリー素材ぱくたそ様、NHKクリエイティブ・ライブラリー様からお借りしています。