[日文/英文]
图像处理节点编辑器
这是一个基于节点编辑器的图像处理应用程序。
它的设计目的是用于处理验证和比较研究。
注意
由于节点是按照创建者(高桥)需要的顺序添加的,
可能缺少一些用于图像处理基本操作的节点。
opencv-python 4.5.5.64 或更高版本
onnxruntime-gpu 1.12.0 或更高版本
dearpygui 1.11.0 或更高版本
mediapipe 0.8.10 或更高版本 ※执行mediapipe节点时需要
protobuf 3.20.0 或更高版本 ※执行mediapipe节点时需要
filterpy 1.4.5 或更高版本 ※执行motpy节点时需要
安装
请使用以下任一方法准备环境。
- 直接执行脚本
- 克隆仓库
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
pip install Cython numpy wheel
- 指定GitHub仓库,使用pip安装
pip install git+https://github.com/Kazuhito00/Image-Processing-Node-Editor
- 使用以下命令启动应用程序
ipn-editor
- 安装构建工具
使用方法
启动应用程序的方法如下。
python main.py
- --setting
指定包含节点大小和VideoWriter设置的配置文件路径
默认:node_editor/setting/setting.json - --unuse_async_draw
不使用异步绘制
→串行执行GUI事件循环和节点更新处理
※用于调查节点异常终止等原因
默认:未指定
创建节点
从菜单中选择并点击要创建的节点
连接节点
拖动输出端口连接到输入端口
只能连接设置了相同类型的端口
删除节点
选中要删除的节点,然后按"Del"键
导出
从菜单中点击"Export",保存节点设置(json文件)
导入
加载通过Export输出的节点设置(json文件)
节点
输入节点
图像 |
读取静态图像(bmp、jpg、png、gif)并输出图像的节点 点击"Select Image"按钮打开文件对话框 | |
视频 |
读取视频(mp4、avi)并输出每帧图像的节点 点击"Select Movie"按钮打开文件对话框 如果要循环播放视频,请勾选"Loop" "Skip Rate"指定在读取视频时每隔多少帧输出一次 | |
视频(设置帧位置) |
读取视频(mp4、avi)并输出指定帧位置图像的节点 点击"Select Movie"按钮打开文件对话框 | |
网络摄像头 |
读取网络摄像头并输出每帧图像的节点 从"Device No"下拉列表中指定摄像头编号 | |
RTSP |
读取网络摄像头的RTSP输入并输出每帧图像的节点 | |
整数值 |
输出整数值的节点 | |
浮点值 |
输出浮点值的节点 |
处理节点
ApplyColorMap | 将伪彩色应用于输入图像并输出伪彩色图像的节点 | |
Blur | 对输入图像执行平滑处理并输出平滑图像的节点 | |
Brightness |
对输入图像执行亮度调整处理并输出亮度调整后的图像的节点 可以通过"alpha"滑动条更改亮度调整值 | |
Canny |
使用Canny算法对输入图像执行边缘检测处理 并输出边缘检测图像的节点 可以通过滑动条指定最小阈值和最大阈值 | |
Contrast |
对输入图像执行对比度调整处理并输出对比度调整后的图像的节点 可以通过"beta"滑动条更改对比度调整值 | |
Crop |
执行输入图像的裁剪并输出裁剪后的图像的节点 可以通过滑动条更改左上角坐标(x1, y1)和右上角坐标(x2, y2) | |
EqualizeHist |
执行输入图像亮度部分的直方图均衡化并输出图像的节点 | |
Flip |
对输入图像执行水平翻转/垂直翻转并输出图像的节点 | |
Gamma Correction |
对输入图像执行伽马校正并输出图像的节点 可以通过滑动条更改γ值 | |
Grayscale |
将输入图像转换为灰度并输出图像的节点 | |
Threshold |
对输入图像进行二值化并输出图像的节点 通过"type"指定二值化算法 通过"threshold"更改阈值 当"type"选择"大津二值化(THRESH_OTSU)"时 由于是自动决定阈值的算法,"threshold"值将被忽略 | |
Simple Filter | 对输入图像执行3×3的二维滤波处理并输出图像的节点 | |
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 |
对输入图像执行二维码检测的节点 输出图像为未处理的图像 |
分析节点
FPS |
根据节点处理时间(ms)计算FPS的节点 可以通过"添加插槽"来添加处理时间输入端子 | |
RGB 直方图 |
计算输入图像RGB各通道直方图并 显示在图表上的节点 | |
BRISQUE |
使用BRISQUE进行图像质量评估的节点 ※数值越高质量越差 |
绘制节点
绘制信息 |
在分类节点、对象检测节点等 输出未处理图像的节点的图像上, 绘制分析结果 | |
图像拼接 |
并排显示多个输入图像的节点 可以通过"添加插槽"来添加图像输入端子 | |
添加文字 |
在输入图像左上角绘制文本的节点 可以通过颜色映射选择绘制颜色 连接处理时间输入端子可以同时绘制处理时间 | |
结果图像 |
显示图像的节点 比处理节点显示更大 此外,连接分类节点、对象检测节点等 输出未处理图像的节点时,会额外绘制分析结果 | |
结果图像(大) | 比结果图像节点显示更大 |
其他节点
开/关开关 | 切换是否输出输入图像的节点 | |
视频写入器 |
将输入图像作为视频输出的节点 输出目标、输出大小、FPS在"setting.json"中指定 |
预览版节点
今后可能会大幅改变规格的节点
MOT | 输入对象检测节点并执行MOT(多目标跟踪)的节点 | |
执行Python代码 |
执行Python代码的节点 输入图像的变量是"input_image" 输出图像的变量是"output_image" | |
屏幕捕获 |
捕获整个桌面屏幕并输出的节点 |
节点(其他仓库)
这些是在其他仓库中发布的节点。
要在Image-Processing-Node-Editor中使用,请按照各仓库的安装说明进行操作。
输入节点
YouTube |
读取YouTube并输出图像的节点 在URL栏中指定YouTube视频的URL,然后按"Start"按钮 开始播放可能需要一些时间 可以通过Interval(ms)指定YouTube读取间隔 |
待办事项
- 调查RGB直方图节点的图表部分始终显示在最前面的问题
- 调查删除连接多个节点的节点时连接线仍然存在的问题
- 修复Import功能只能在添加节点之前使用的行为
作者
高桥和仁(https://twitter.com/KzhtTkhs)
许可证
Image-Processing-Node-Editor 采用 Apache-2.0 license。
Image-Processing-Node-Editor的源代码本身采用Apache-2.0 license,
但各算法的源代码遵循各自的许可证。
详情请查看各目录中附带的LICENSE文件。
许可证(图像)
示例中显示的图像来自フリー素材ぱくたそ和NHKクリエイティブ・ライブラリー。