Skip to content

Latest commit

 

History

History
665 lines (630 loc) · 25.4 KB

README_EN.md

File metadata and controls

665 lines (630 loc) · 25.4 KB

[Japanese/English]

Image-Processing-Node-Editor

An application that performs image processing with the node editor.
It is used for processing verification and comparison.

Note

Since the nodes are added in the order in which the author(Takahashi) needs them,
There may be a shortage of nodes responsible for basic processing in image processing.

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 ※Required to run mediapipe node
protobuf        3.20.0   or later ※Required to run mediapipe node
filterpy        1.4.5    or later ※Required to run MOT(motpy) node

Installation

Please prepare the environment by one of the following methods.

  • Run the script directly
    1. Clone repository
      git clone https://github.com/Kazuhito00/Image-Processing-Node-Editor
    2. Install package
      pip install -r requirements.txt
    3. Run "main.py"
      python main.py
  • Use Docker
    1. See Image-Processing-Node-Editor/docker/nvidia-gpu
  • Use executable file (Windows only)
    1. Download ipn-editor_win_x86_64.zip
    2. Run "main.exe"
  • Use pip installation
    ※The installed directory names will be "node" and "node_editor", so I plan to fix them in the future.
    →When using pip, it is strongly recommended to install in a virtual environment such as venv.
    1. Install build tools
      Windows:https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
      Ubuntu:sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
    2. Install Numpy, Cython, wheel
      pip install Cython numpy wheel
    3. Specify the GitHub repository and pip install
      pip install git+https://github.com/Kazuhito00/Image-Processing-Node-Editor
    4. Start the application with the following command
      ipn-editor

Usage

Here's how to run the app.

python main.py
  • --setting
    Specifying the configuration file path that describes the node size and VideoWriter settings
    Default:node_editor/setting/setting.json
  • --unuse_async_draw
    Do not use asynchronous drawing
    →Perform GUI event loop and node update process in series
    *For investigating the cause of abnormal node termination, etc.
    Default:unspecified

Create Node

Select the node you want to create from the menu and click

Connect Node

Drag the output terminal to connect to the input terminal
Only the same type set for the terminal can be connected

Delete Node

With the node you want to delete selected, press the "Del" key

Export

Press "Export" from the menu and save the node settings(json file)

Import

Read the node settings(json file) output by Export

Node

Input Node
Image Node that reads still images (bmp, jpg, png, gif) and outputs images
Open the file dialog with the "Select Image" button
Video A node that reads a video (mp4, avi) and outputs an image for each frame
Open the file dialog with the "Select Movie" button
Check "Loop" to play the video in a loop
"Skip rate" sets the interval for skipping the output image.
Video(Set Frame Position) A node that reads a video (mp4, avi) and outputs an image at the specified frame position
Open the file dialog with "Select Movie" button
WebCam A node that reads a webcam and outputs an image for each frame
Specify the camera number in the Device No drop-down list
RTSP A node that reads the RTSP input of a network camera and outputs an image for each frame
Int Value Node that outputs an integer value
Float Value Node that outputs the float value
Process Node
ApplyColorMap A node that applies pseudo color to the input image and outputs a pseudo color image
Blur A node that executes smoothing processing on the input image and outputs the smoothed image
Brightness A node that executes brightness adjustment processing on the input image and outputs the brightness adjustment image
Brightness adjustment value can be changed with the "alpha" slide bar
Canny A node that executes edge detection processing using the Canny method on the input image and outputs the edge detection image.
Specify the minimum and maximum thresholds with the slider
Contrast A node that executes contrast adjustment processing on the input image and outputs the contrast adjustment image.
Contrast adjustment value can be changed with the "beta" slide bar
Crop A node that performs cropping of the input image and outputs the cropped image
Upper left coordinates(x1, y1) and upper right coordinates(x2, y2) can be changed with the slider
EqualizeHist Node that performs histogram flattening of the brightness part of the input image and outputs the image
Flip A node that performs horizontal/vertical inversion to the input image and outputs the image
Gamma Correction A node that performs gamma correction on the input image and outputs the image
Gamma value can be changed with the slider
Grayscale A node that grayscales the input image and outputs the image
Threshold A node that binarizes the input image and outputs the image
Specify the binarization algorithm with "type"
Change threshold with "threshold"

In "type", "Otsu binarization (THRESH_OTSU)" is an automatic threshold determination algorithm, so the "threshold" value is ignored.
Simple Filter A node that performs 3x3 2D filtering processing on the input image and outputs the image
Omnidirectional Viewer A node that transforms an input image(360-degree image) with the specified roll, pitch, and yaw axes and outputs the image
The input image is assumed to be an equirectangular projection image
Resize A node that resizes the input image with the specified height, width and interpolation method and outputs the image.
Deep Learning Node

You can specify the model in the drop-down list and change the device at the time of inference with the CPU / GPU checkbox.

  • If the model does not support GPU inference, checking GPU will still result in CPU inference
    Refer to each directory of "node/deep_learning_node/XXXXXXXX" for the license of the model used by the node.
Classification Node that performs classification on the input image
The output image is a raw image

Performs classification on the bounding box when an Object Detection node is connected
Face Detection Node that performs face detection on the input image
The output image is a raw image
Low-Light Image Enhancement A node that performs Low-Light Image Enhancement on the input image
The output image is an image with Low-Light Image Enhancement applied.
Monocular Depth Estimation A node that performs monocular depth estimation on the input image
The output image is a grayscale image to which monocular depth estimation is applied.
Object Detection Node that performs object detection on the input image
The output image is a raw image
Pose Estimation Node that performs attitude estimation for the input image
The output image is a raw image
Semantic Segmentation Node that performs semantic segmentation on the input image
The output image is a raw image
QR Code Detection Node that executes QR code detection for the input image
The output image is a raw image
Analysis Node
FPS A node that calculates FPS based on the processing time(ms) of the node
Processing time input terminal can be added with "Add Slot"
RGB Histgram Node that calculates the histogram of each RGB channel of the input image and displays it in the graph
BRISQUE A node that evaluates image quality using BRISQUE
* The higher the number, the worse
Draw Node
Draw Information Draw the analysis result for the image of the node that outputs the raw image such as Classification node and Object Detection node.
Image Concat Node that displays multiple input images side by side
Image input terminal can be added with "Add Slot"
PutText A node that draws text in the upper left of the input image
Drawing color can be selected in the color map
By connecting the processing time input terminal, the processing time is also drawn.
Result Image Node to display the image
Display larger than the processing node
Also, if you connect a node that outputs raw images such as a Classification node or Object Detection node, the analysis result will be added and drawn.
Result Image(Large) Larger than the Result Image node
Other Node
ON/OFF Switch Node to switch whether to output the input image or not
Video Writer Node to export the input image as a video
Output destination, output size, FPS are specified in "setting.json"
Preview Release Node

Nodes whose specifications may change significantly in the future

MOT Node that inputs an Object Detection node and executes MOT(Multi Object Tracking)
Exec Python Code Node that executes Python code
The variable for the input image is "input_image"
The variable for the output image is "output_image"
Screen Capture Node that captures and outputs the desktop full screen

Node(Other repository)

It is a node published in other repositories.
To use it with Image-Processing-Node-Editor, follow the installation instructions for each repository.

Input Node
YouTube Node that reads YouTube and outputs images
Please specify the URL of the YouTube video in the URL field and press the "Start" button
It will take some time before playback starts
Specify the YouTube loading interval with "Interval(ms)"

ToDo

  • Investigating the problem that the graph part of the RGB Histgram node is always in the foreground
  • Investigating the problem that the connection line remains when deleting a node that connects multiple nodes
  • Improved behavior that the import feature can only be used before adding a node

Author

Kazuhito Takahashi(https://twitter.com/KzhtTkhs)

License

Image-Processing-Node-Editor is under Apache-2.0 license.

IThe source code of mage-Processing-Node-Editor itself is Apache-2.0 license, but
The source code for each algorithm is subject to its own license.
For details, please check the LICENSE file included in each directory.

License(Image)

The images displayed in the sample are borrowed from the Free Material Pakutaso,and NHK Creative Library.