User Manual for End Users and System Administrators
Welcome to the Metrici Thermal Analyzer user manual. This document will guide you through all the features and settings of the application, helping you to effectively use it for thermal image analysis and people/object counting.
Metrici Thermal Analyzer is a elaborate software application designed to process thermal imaging video streams and perform automated detection and counting of people or objects. The application connects to various types of thermal and visual cameras, analyzes the video feed in real-time, and can trigger external actions based on detection events.
The application can be started in two modes:
-nogui command-line argument to run the application without the graphical interface, useful for headless servers or automated deployments.| Option | Description |
|---|---|
./metrici-ta -nogui |
Run without graphical interface |
./metrici-ta -disable_gpu |
Disable GPU acceleration even if available |
./metrici-ta -use_gpu <id> |
Select specific GPU device by ID (if multiple GPUs available) |
./metrici-ta -detection_threads <n> |
Number of processing threads (1-8, default: 1) |
./metrici-ta -gpu <id> |
Set GPU device ID for OpenCL |
./metrici-ta -app_id <id> |
Application instance ID (0-254) |
./metrici-ta -log_level <level> |
Logging level (0=None, 1=Low, 2=Medium, 3=High) |
The main window is the central hub for monitoring and controlling the application. It displays video streams, counting statistics, and provides access to all configuration options.
The video display area shows the processed video stream. This is where you can:
Connection status indicators show the current state of your camera connections:
The frames per second (FPS) counter shows how many video frames are being processed each second. This helps you understand if your system is keeping up with the video stream.
| Button | Function |
|---|---|
| Settings | Open the settings window to configure all application options |
| About | Display version information and application details |
| Quit | Close the application |
| Maximize | Make the image bigger |
The total counter display shows the cumulative count of objects detected across all counting zones. This provides a quick overview of detection activity.
One of the first steps in setting up the application is configuring your camera connections. The application supports a wide variety of camera types and connection protocols.
The input stream is your primary video source, typically a thermal camera. Configure these settings in the Settings window under the Input Stream section.
Select the appropriate camera manufacturer and protocol from the dropdown list. The application supports cameras from:
Enter the network address of your camera. The format depends on your camera type:
http://camera_ip_address/video.cgi or similar pathrtsp://camera_ip_address:554/stream1http://camera_ip_address/cgi-bin/currentpic.cgiSpecify the TCP port number for RTSP streams (default is typically 554).
Enter the authentication credentials required to access your camera. Most IP cameras require a username and password for access.
Set a maximum frames per second limit for the video stream. This can be useful for reducing system load or when you don't need full-speed processing.
The companion stream is an optional secondary video source, typically a visual (non-thermal) camera that provides a clearer view for visual verification. Configure these settings in the Settings window under the Companion Stream section.
The companion stream uses the same configuration options as the input stream. Having both thermal and visual streams allows for visual confirmation of thermal findings.
Counting zones are defined areas within the video frame where the application tracks objects entering or exiting. This feature is essential for accurate counting statistics.
Each counting zone is defined by four points (corners) that form a quadrilateral:
The application uses these four points to create a polygon that defines the counting area. Objects detected within this polygon are tracked and counted.
| Action | Description |
|---|---|
| Add Zone | Create a new counting zone |
| Edit Zone | Modify an existing zone's shape or position |
| Save Zone | Save changes to the current zone |
| Delete Zone | Remove the selected zone |
The application tracks objects as they move through counting zones:
Image processing settings control how the application analyzes video frames and detects objects. Proper configuration of these settings is crucial for accurate detection.
| Mode | Description |
|---|---|
| Continuous | The application constantly processes video frames and updates detections in real-time |
| Started by Trigger | Processing only occurs when an external trigger signal is received |
This setting controls the sensitivity and accuracy of the detection algorithm:
| Level | Description | Best For |
|---|---|---|
| Low | Fastest processing, lower detection accuracy | High-resolution cameras, powerful systems |
| Medium | Balanced speed and accuracy | General purpose use |
| Normal | Standard detection quality | Default for most scenarios |
| High | Higher accuracy, slower processing | Challenging lighting or crowded scenes |
| Ultra | Very high accuracy, significant processing overhead | Critical applications, high-end systems |
| Insane | Maximum accuracy, maximum processing requirements | Best systems only, when accuracy is paramount |
Select what type of objects the application should detect:
| Type | Description |
|---|---|
| People | Detect full human bodies using standard detection model |
| People (fast) | Detect people using a faster, lightweight DNN model |
| People Heads | Detect only human heads (useful for thermal cameras) |
| People Heads (fast) | Detect heads using lightweight model |
This setting reduces the size of detection bounding boxes, which can help with overlapping detections:
| Reduction | Effect |
|---|---|
| None (0%) | Full bounding box size |
| 10%-90% | Progressively smaller bounding boxes |
| Mode | Description |
|---|---|
| Single Sensor | Process video from one camera only |
| Dual Sensor | Process both streams simultaneously |
Set a delay (in seconds) before counting changes are registered. This helps prevent double-counting due to rapid re-detection of the same object.
For thermal cameras, the application can measure temperature and trigger alarms when temperatures exceed defined thresholds.
If using a dual-sensor setup, select which thermal sensor to use:
| Option | Description |
|---|---|
| RIGHT | Use the right thermal sensor only |
| LEFT | Use the left thermal sensor only |
| LEFT + RIGHT | Combine data from both sensors |
Select how temperature is calculated from the thermal data:
| Algorithm | Description |
|---|---|
| Average Temperature | Calculate the average temperature across all pixels |
| Average of Hottest 10% | Average temperature of the hottest 10% of pixels |
| Average of Hottest 1% | Average temperature of the hottest 1% of pixels |
| Hottest Point | Use the maximum temperature from a single pixel |
Configure minimum and maximum temperature thresholds:
When a temperature alarm is triggered, the application can send notifications or trigger external actions (see Section 8).
Configure how temperature measurements are calibrated:
| Calibration Type | Description |
|---|---|
| None | Use raw temperature data without calibration |
| Static Deviation | Apply a fixed offset to all temperature readings |
| Black Body | Use a reference black body source for calibration (most accurate) |
If using "Static Deviation" calibration, enter the temperature offset value (positive or negative) to adjust all readings.
For "Black Body" calibration, define the bounding box coordinates that specify the area of the camera image containing the black body reference:
The application can respond to external triggers and perform actions when certain events occur.
Configure how the application responds to external trigger signals:
| Type | Description |
|---|---|
| None | No external trigger functionality |
| Barix Barionet 50 (Input 1-4) | Listen for triggers from Barix Barionet 50 device inputs |
| Metrici Virtual Trigger | Software-based trigger from Metrici system- other detection engines |
The application can control barrier/gates/lights etc systems by sending HTTP requests when events occur.
Enter the HTTP URL that will open the device. When the application needs to open the barrier (e.g., when detecting a person in a zone), it will send a request to this URL.
Enter the HTTP URL that will close the device. When the application needs to close the barrier, it will send a request to this URL.
Set the delay (in seconds) between open and close actions. This determines how long the device stays open/ON.
The application can send reports to external servers when counting events occur, enabling integration with other systems.
Enter the URL of the server endpoint that will receive counting event reports. The application will send HTTP requests to this URL when objects are detected in counting zones.
http://localhost/io/ta/new_counting_zone_event.php
Enter an authentication key that is generated by Metrici in the Interface when creating the location and the camera. This facilitates the communication between the detection egines and the interface/database.
The application can provide a live view feed for web-based monitoring.
Enable or disable the live view feature.
Enter the URL where the live view feed will be available. This is typically a local server endpoint that streams the processed video, as in http://localhost/io/ta/live_view.php.
Advanced settings provide additional configuration options for power users and specific use cases.
The application can use GPU acceleration for faster image processing. GPU processing is significantly faster than CPU processing for detection algorithms.
On systems with multiple GPUs, you can specify which GPU to use with the -gpu <id> command-line argument, where <id> is the GPU index, or on the main window edit the application.
The number of processing threads determines how many parallel tasks the application can run. More threads can improve throughput on multi-core systems.
Configure how much information is recorded to the application log:
| Level | Description |
|---|---|
| None | No logging (fastest performance) |
| Low | Only critical events and errors |
| Medium | Standard logging including warnings |
| High | Verbose logging including detailed debug information |
The application stores all its configuration settings in a configuration file called <app_id>.ini, where <app_id> is the application instance ID (default: 0.ini).
This file is automatically created and updated by the application when you save settings.
The INI file is located in the same directory as the application executable. If you run multiple instances of the application with different app_id values, each instance will use its own corresponding INI file (0.ini, 1.ini, 2.ini, etc.).
The INI file is divided into sections, with all application settings stored under the [General] section. Each setting is stored as a key-value pair on its own line.
[General] input_stream_type=30 input_stream_address=192.168.100.78 input_stream_tcp_port=80 input_stream_username=admin input_stream_password=admin123 input_stream_fps_limit=0 companion_stream_type=33 companion_stream_address=http://192.168.100.78/cgi-bin/image.jpg companion_stream_tcp_port=80 companion_stream_username=admin companion_stream_password=admin123 reporting_check_action_authkey=597SX5D4 reporting_check_action_id=420 reporting_url=http://dev2.metrici.ro/io/ta/new_counting_zone_event.php reporting_duplicate_url= input_stream_resx=1280 input_stream_resy=480 companion_stream_resx=640 companion_stream_resy=480 live_view_active=1 live_view_url=http://dev2.metrici.ro/io/ta/live_view.php external_trigger_type=0 external_trigger_seconds=1 engine_working_mode=0 recognition_enhancement=2 objects_type=2 bounding_boxes_reduction=5 counter_change_delay=1 counting_zones_list=1,0.978957,0.028057,0.982617,0.942970,0.523750,0.940000,0.513750,0.033333; image_mode=1 thermal_sensor=0 thermal_algorithm=1 alarm_min_temperature=36 alarm_max_temperature=40 temperature_calibration=2 temperature_static_deviation=-3.3 temperature_bbody_x=0.500391 temperature_bbody_y=0.003125 temperature_bbody_w=0.0890625 temperature_bbody_h=0.204167 temperature_bbody_t=40 open_barrier_url=http://support.metrici.ro/sn.php open_close_barrier_delay=3 close_barrier_url=http://support.metrici.ro/sn.php fullscreen=0
The following table lists all possible settings that can be stored in the INI file:
| Setting Name | Description | Values |
|---|---|---|
input_stream_type |
Camera type and protocol for the primary stream | 1-35 (see Stream Type Reference) |
input_stream_address |
Network address (IP or hostname) of the camera | String (e.g., "192.168.100.78") |
input_stream_tcp_port |
TCP port for RTSP streams | Number (default: 554) |
input_stream_username |
Username for camera authentication | String (leave empty if no auth) |
input_stream_password |
Password for camera authentication | String (leave empty if no auth) |
input_stream_fps_limit |
Maximum frames per second to process | 0 = unlimited, or number (e.g., 15) |
input_stream_resx |
Expected horizontal resolution of input stream | Number (pixels, e.g., 1280) |
input_stream_resy |
Expected vertical resolution of input stream | Number (pixels, e.g., 480) |
| Setting Name | Description | Values |
|---|---|---|
companion_stream_type |
Camera type and protocol for the secondary stream | 0 = disabled, 1-35 for types |
companion_stream_address |
Network address of the companion camera | String or empty |
companion_stream_tcp_port |
TCP port for companion RTSP stream | Number |
companion_stream_username |
Username for companion camera | String or empty |
companion_stream_password |
Password for companion camera | String or empty |
companion_stream_resx |
Expected horizontal resolution of companion stream | Number (pixels) |
companion_stream_resy |
Expected vertical resolution of companion stream | Number (pixels) |
| Setting Name | Description | Values |
|---|---|---|
reporting_url |
URL endpoint for sending counting event reports | HTTP URL string or empty |
reporting_duplicate_url |
Secondary URL for redundant reporting | HTTP URL string or empty |
reporting_check_action_id |
Application identifier included in reports | Number (e.g., 420) |
reporting_check_action_authkey |
Authentication key for report verification | String (e.g., "597SX5D4") |
| Setting Name | Description | Values |
|---|---|---|
live_view_active |
Enable or disable live view feature | 0 = disabled, 1 = enabled |
live_view_url |
URL for the live view streaming endpoint | HTTP URL string or empty |
| Setting Name | Description | Values |
|---|---|---|
external_trigger_type |
Type of external trigger input | 0=None, 1-4=Barix inputs, 5=Virtual |
external_trigger_seconds |
Timeout in seconds for trigger detection | Number (e.g., 1) |
| Setting Name | Description | Values |
|---|---|---|
engine_working_mode |
How the detection engine operates | 0=Continuous, 1=Started by Trigger |
recognition_enhancement |
Detection sensitivity level | 0=Low, 1=Medium, 2=Normal, 3=High, 4=Ultra, 5=Insane |
objects_type |
Type of objects to detect | 0=People, 1=People(fast), 2=Heads, 3=Heads(fast) |
bounding_boxes_reduction |
Percentage to reduce bounding box size | 0-9 (0=None, 9=90%) |
counter_change_delay |
Delay before counting changes (1/100 sec) | Number (e.g., 1) |
image_mode |
Single or dual sensor processing | 0=Single, 1=Dual |
status_change_delay |
Delay before status changes (alternative setting) | Number (seconds) |
| Setting Name | Description | Values |
|---|---|---|
counting_zones_list |
List of defined counting zones with coordinates | Zone data format: ID,x1,y1,x2,y2,x3,y3,x4,y4,counter; |
ID,x1,y1,x2,y2,x3,y3,x4,y4,counter;1,0.978957,0.028057,0.982617,0.942970,0.523750,0.940000,0.513750,0.033333;| Setting Name | Description | Values |
|---|---|---|
thermal_sensor |
Which thermal sensor(s) to use | 0=Right, 1=Left, 2=Both |
thermal_algorithm |
Temperature calculation method | 0=Average, 1=Avg10%, 2=Avg1%, 3=Hottest |
alarm_min_temperature |
Minimum temperature threshold for alarms | Number (e.g., 36.0) |
alarm_max_temperature |
Maximum temperature threshold for alarms | Number (e.g., 40.0) |
temperature_calibration |
Calibration method | 0=None, 1=Static, 2=BlackBody |
temperature_static_deviation |
Fixed temperature offset for calibration | Number (positive or negative, e.g., -3.3) |
temperature_bbody_x |
Black body bounding box X position (0-1 normalized) | Decimal (e.g., 0.500391) |
temperature_bbody_y |
Black body bounding box Y position (0-1 normalized) | Decimal (e.g., 0.003125) |
temperature_bbody_w |
Black body bounding box width (0-1 normalized) | Decimal (e.g., 0.0890625) |
temperature_bbody_h |
Black body bounding box height (0-1 normalized) | Decimal (e.g., 0.204167) |
temperature_bbody_t |
Known temperature of black body reference | Number (e.g., 40.0) |
| Setting Name | Description | Values |
|---|---|---|
open_barrier_url |
HTTP URL to open the barrier/gate | HTTP URL string or empty |
close_barrier_url |
HTTP URL to close the barrier/gate | HTTP URL string or empty |
open_close_barrier_delay |
Time in seconds barrier stays open | Number (e.g., 3) |
| Setting Name | Description | Values |
|---|---|---|
fullscreen |
Start application in fullscreen mode | 0=windowed, 1=fullscreen |
While the application automatically creates and updates the INI file when you save settings, you can also edit it manually for advanced configurations or bulk changes.
When running multiple instances of the application on the same system, each instance uses a separate INI file based on its application ID:
app_id=0 uses 0.iniapp_id=1 uses 1.iniapp_id=2 uses 2.iniThis allows each instance to have completely independent configurations, including different camera connections, counting zones, and reporting settings.
To transfer your configuration to another system or create identical setups on multiple machines:
If you encounter issues not covered in this manual:
| Camera Brand | MJPEG HTTP | MJPEG RTSP | H264 RTSP |
|---|---|---|---|
| ACTi | Yes | No | Yes |
| Android | Yes | No | No |
| Arecont | Yes | No | No |
| AXIS | Yes | Yes | Yes |
| Bosch | No | Yes | Yes |
| DAHUA | Yes | No | No |
| DIVIOTEC | Yes | No | Yes |
| Hikvision | Yes | No | Yes |
| Mobotix | Yes | No | Yes |
| Novus | Yes | No | Yes |
| Pelco | No | Yes | No |
| Samsung | Yes | No | Yes |
| Sony | Yes | No | Yes |
| Uniview | No | No | Yes |
| Vivotek | Yes | No | No |
| VLC | Yes | No | No |
| Generic | Yes | Yes | Yes |
Document Version: 1.1
Last Updated: February 2026
Application Version: Metrici Thermal Analyzer v1.2