Image Processors
uniflow.plugin.imageprocessors
•
Category: Media & AI
•
Version: v1.5.0
•
Min Uniflow Version: Uniflow ≥ v1.4.0
Image Processors Plugin Reference Manual
1. Overview
Plugin Name: Image Processors
Type: Media & Analytics
Identifier: uniflow.plugin.imageprocessors
Platform: CrossPlatform (Windows & Linux x64/ARM64)
Description
Cross-platform computer vision and scene analytics plugin for multi-class object detection, privacy redaction, anonymization, and license plate Optical Character Recognition (OCR). The plugin ingests image file paths or byte arrays and performs high-speed automatic multi-class detection (humans/pedestrians, cars, trucks, buses, motorcycles, bicycles), privacy redaction (blurring human faces and vehicle license plates), as well as OCR character recognition and confidence scoring for detected plates.
2. Technical Architecture
The Image Processors plugin uses a high-performance cross-platform stack combining Microsoft.ML.OnnxRuntime for AI inference and SixLabors.ImageSharp for image rendering and redaction.
Built-in Embedded ONNX AI Models
All AI models are compiled directly into the plugin assembly as embedded resources. No external model folders or separate assets need to be deployed or distributed:
| Model Resource Name | Primary Task | Neural Architecture | Input Tensor Shape | Description |
|---|---|---|---|---|
face_detection.onnx Human Face Detection | ||||
| ↳ | Ultra-Light Face Detector / YuNet | [1, 3, 640, 640] NCHW | Detects human facial bounding boxes for privacy anonymization. | |
plate_detection.onnx License Plate Detection | ||||
| ↳ | YOLOv8 Vehicle Plate Detector | [1, 3, 640, 480] NCHW | Locates license plate regions across multi-scale resolution passes. | |
plate_ocr.onnx Character Recognition (OCR) | ||||
| ↳ | LPRNet / CRNN Recognizer | [1, 3, 24, 94] NCHW | Recognizes vehicle license plate alphanumeric characters (0-9, A-Z) via CTC greedy decoding. | |
object_detection.onnx Multi-Class Object Detection | ||||
| ↳ | YOLOv8 / YOLOv11 COCO Detector | [1, 3, 640, 640] NCHW | Detects multi-class objects: humans/pedestrians, cars, trucks, buses, motorcycles, and bicycles with bounding box coordinates. | |
Technical Characteristics & Custom Model Overrides
Custom Model Folder configuration setting or placing custom-trained face_detection.onnx, plate_detection.onnx, plate_ocr.onnx, or object_detection.onnx files in custom path defined in plugin configuration.System Interaction & Exposed Catalog Routes
The Image Processors plugin integrates computer vision pipelines. It captures video frames from RTSP streams or image files, performing object detection, face/plate blurring, OCR text extraction, and scene analytics.
Architecture Diagram
3. Configuration Parameters
The following configuration settings are available in the User Interface when creating or configuring an instance of this plugin source:
| Configuration Setting | Description | Default Value |
|---|---|---|
| Default Redaction Style | Redaction mode: GaussianBlur, Pixelate, or SolidColor. | GaussianBlur |
| Blur Radius | Radius of Gaussian blur filter applied over detected bounding boxes. | 20 |
| Pixel Size | Tile block size when using Pixelate mode. | 15 |
| Confidence Threshold | Minimum AI detection confidence threshold (0.10 to 1.00). | 0.25 |
| IoU Threshold | Non-Max Suppression (NMS) Intersection-over-Union threshold for box overlapping. | 0.45 |
| Multi-Scale Inference | Evaluates frames across multiple image scales for close-up and distant detections. | true |
| Process Faces | Enable human face detection pass. | true |
| Process License Plates | Enable vehicle license plate detection pass. | true |
| Process OCR | Enable character recognition on detected license plate regions. | true |
| Process Objects | Enable general COCO object detection pass. | false |
| Process Vehicles | Enable vehicle classification pass (cars, trucks, buses, motorcycles, bicycles). | false |
| Process Persons | Enable human/pedestrian detection pass. | false |
| Output Image Format | Output container format (Auto, Jpeg, Png, Webp). | Auto |
| JPEG / WebP Quality | Compression quality percentage (1 to 100). Prevents file size inflation. | 80 |
| Custom Model Folder | Optional custom disk directory containing user-trained .onnx model files (object_detection.onnx, face_detection.onnx, plate_detection.onnx, plate_ocr.onnx). | *(Empty - Embedded default)* |
4. Exposed Routes & Data Types
This plugin exposes catalog fields across Output Target (action sinks) and Event Input (trigger sources) rule graph nodes:
4.1 Output Target Action Nodes
The Output Target node acts as an action sink to perform object detection, vehicle classification, face/plate redaction, custom pipeline processing, and license plate OCR character recognition.
| Target Name | Item Route ID | Data Type | Associated Parameters | Parameter Type | Required | Description |
|---|---|---|---|---|---|---|
| Detect All Objects imageprocessor:detect_objects | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects all COCO objects (persons, vehicles, etc.) in an image. | |
| Detect & Classify Vehicles imageprocessor:detect_vehicles | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects and categorizes vehicles (Cars, Trucks, Buses, Motorcycles, Bicycles). | |
| Detect Humans / Pedestrians imageprocessor:detect_persons | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects human/pedestrian bounding boxes and counts. | |
| Full Scene Intelligence imageprocessor:analyze_scene | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Runs combined full pass: Persons + Vehicles + Faces + Plates + OCR. | |
| Blur Car License Plates imageprocessor:blur_plates | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects and blurs vehicle license plates in an image file. | |
| Blur Human Faces imageprocessor:blur_faces | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects and blurs human faces in an image file. | |
| Anonymize All (Faces & Plates) imageprocessor:anonymize_all | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Blurs both human faces and license plates in a single pass. | |
| Read Car License Plate OCR imageprocessor:read_plate_ocr | ||||||
| ↳ | String / Json | Image File Path (path) | String | True | Detects license plates and runs OCR character recognition. | |
| Custom Image Processing Pipeline imageprocessor:process_custom | ||||||
| ↳ | Json | Custom JSON payload | Json | True | Accepts advanced custom JSON configuration (ImageProcessOptions). | |
4.2 Event Input Trigger Nodes
The Event Input node triggers downstream rule execution whenever an image redaction, object detection, or custom processing operation completes.
| Event Display Name | Event Item Route ID | Family | Description |
|---|---|---|---|
| General Object Detection Completed event:detect_objects | |||
| ↳ | EVENT | Triggers when general COCO object detection finishes. | |
| Vehicle Detection Completed event:detect_vehicles | |||
| ↳ | EVENT | Triggers when vehicle detection & classification finishes. | |
| Person Detection Completed event:detect_persons | |||
| ↳ | EVENT | Triggers when human/pedestrian detection finishes. | |
| Full Scene Intelligence Completed event:analyze_scene | |||
| ↳ | EVENT | Triggers when full scene analytics finishes. | |
| Car License Plate Blur Completed event:blur_plates | |||
| ↳ | EVENT | Triggers when license plate redaction finishes. | |
| Human Face Blur Completed event:blur_faces | |||
| ↳ | EVENT | Triggers when face redaction finishes. | |
| Anonymize All Completed event:anonymize_all | |||
| ↳ | EVENT | Triggers when combined face and plate anonymization finishes. | |
| License Plate OCR Read Completed event:ocr_read | |||
| ↳ | EVENT | Triggers when ALPR license plate OCR finishes. | |
| Custom Processing Completed event:process_custom | |||
| ↳ | EVENT | Triggers when a custom processing pipeline run finishes. | |
4.3 Event Output Telemetry Fields
When an Event Input node triggers, it exposes the following output fields for downstream rule logic:
| Field Name | Data Type | Description |
|---|---|---|
Success Bool | ||
| ↳ | true if processing and file saving completed successfully without errors. | |
Detected Bool | ||
| ↳ | true if at least one object, face, or license plate was detected. | |
TotalDetected Int | ||
| ↳ | Total combined count of all detected entities in the image. | |
TotalPersonsDetected Int | ||
| ↳ | Number of humans/pedestrians detected. | |
TotalVehiclesDetected Int | ||
| ↳ | Total number of vehicles detected (Cars + Trucks + Buses + Motorcycles + Bicycles). | |
TotalCarsDetected Int | ||
| ↳ | Number of passenger cars detected. | |
TotalTrucksDetected Int | ||
| ↳ | Number of trucks/semi-trailers detected. | |
TotalBusesDetected Int | ||
| ↳ | Number of buses detected. | |
TotalMotorcyclesDetected Int | ||
| ↳ | Number of motorcycles detected. | |
TotalBicyclesDetected Int | ||
| ↳ | Number of bicycles detected. | |
TotalFacesDetected Int | ||
| ↳ | Number of human faces detected. | |
TotalPlatesDetected Int | ||
| ↳ | Number of license plates detected. | |
FirstDetectedText String | ||
| ↳ | Recognized alphanumeric plate text (e.g. "AG77WPF") from the first detected plate. | |
FirstTextProbability Float | ||
| ↳ | Model confidence probability (0.0 to 1.0) for the recognized OCR text. | |
InputFilePath String | ||
| ↳ | Disk path of the original input image file. | |
OutputFilePath String | ||
| ↳ | Disk path of the saved redacted output image file. | |
ExecutionTimeMs Int | ||
| ↳ | Total execution duration in milliseconds (AI inference + rendering + encoding). | |
ErrorMessage String | ||
| ↳ | Detailed error description if Success is false. | |
5. Usage Examples
Scenario A: Automatic Camera Snapshot Redaction
Workflow Overview:
When an ONVIF IP camera detects motion (onvif.motion_alarm), Uniflow saves a JPEG snapshot to C:\Snapshots\camera1.jpg and then executes the Image Processors anonymize_all action to redact all human faces and vehicle license plates from the image. The event:anonymize_all completion event triggers a downstream FTP upload to archive the anonymized image to an offsite SFTP backup server.
Rule Node Configuration:
1. Event Input Node: ONVIF Motion Listener
onvif.motion_alarmTopic (String), State (Bool)2. Output Target Node A: ONVIF Action
Save Snapshot to FolderDestination Folder: C:\Snapshots\File Name: camera1.jpg3. Output Target Node B: Image Processors Action
Anonymize All (Faces & Plates) (imageprocessor:anonymize_all)Image File Path: C:\Snapshots\camera1.jpgLogic Flow Diagram:
Scenario B: License Plate OCR & Gate Trigger
Workflow Overview:
When a scheduled camera snapshot is captured, Uniflow executes the read_plate_ocr action to detect and recognize vehicle license plates using ONNX AI inference. The event:ocr_read completion event fires downstream logic that filters by FirstTextProbability > 0.85 and matches FirstDetectedText against an authorized vehicle list. If the plate matches, Uniflow writes a Modbus TCP coil (Coil 1 = True) to open the vehicle access gate barrier.
Rule Node Configuration:
1. Output Target Node: Image Processors Action
Read Car License Plate OCR (imageprocessor:read_plate_ocr)Image File Path: C:\Snapshots\gate_entry.jpg2. Event Input Node: Image Processors Listener
event:ocr_readFirstDetectedText (String), FirstTextProbability (Float), Success (Bool)3. Logic Filter Node: And Condition
FirstTextProbability > 0.85 AND FirstDetectedText == "AG77WPF"4. Output Target Node: Modbus Client Writer
Direct AccessType: CoilsAddress: 1Value: TrueLogic Flow Diagram:
Scenario C: Logistics Truck Gate Dispatch
Workflow Overview:
When a camera monitoring the freight gate captures a snapshot, Uniflow executes the detect_vehicles action to classify vehicles in the image. The event:detect_vehicles completion event fires downstream logic that evaluates TotalTrucksDetected > 0. If a truck is detected, Uniflow activates a Modbus coil (Coil 5 = True) to route the incoming freight vehicle to the designated loading bay, and sends an HTTP POST notification to the warehouse dispatch system.
Rule Node Configuration:
1. Output Target Node: Image Processors Action
Detect & Classify Vehicles (imageprocessor:detect_vehicles)Image File Path: C:\Snapshots\freight_gate.jpg2. Event Input Node: Image Processors Listener
event:detect_vehiclesTotalTrucksDetected (Int), TotalVehiclesDetected (Int), Success (Bool)3. Logic Filter Node: GreaterThan
TotalTrucksDetected > 04. Output Target Node A: Modbus Client Writer
Direct AccessType: CoilsAddress: 5Value: True5. Output Target Node B: HTTP Client Action
POST RequestURL: https://warehouse.local/api/dispatchLogic Flow Diagram:
Scenario D: Restricted Zone Intrusion Alarm
Workflow Overview:
When a perimeter security camera captures a scheduled snapshot of a restricted zone, Uniflow executes the detect_persons action to detect unauthorized human intrusion. The event:detect_persons completion event fires downstream logic that evaluates TotalPersonsDetected > 0. If humans are detected, Uniflow triggers a high-priority alarm in Avigilon Control Center and activates a physical siren via a Modbus coil (Coil 12 = True).
Rule Node Configuration:
1. Output Target Node: Image Processors Action
Detect Humans / Pedestrians (imageprocessor:detect_persons)Image File Path: C:\Snapshots\restricted_zone.jpg2. Event Input Node: Image Processors Listener
event:detect_personsTotalPersonsDetected (Int), Success (Bool)3. Logic Filter Node: GreaterThan
TotalPersonsDetected > 04. Output Target Node A: Avigilon ACC Action
Alarms (avigilon:alarm)AlarmId: 901-ZONE-INTRUSIONAction: TRIGGERNotes: Unauthorized human detected in restricted perimeter zone5. Output Target Node B: Modbus Client Writer
Direct AccessType: CoilsAddress: 12Value: True