75 lines
2.4 KiB
C
75 lines
2.4 KiB
C
/**
|
|
* @file qdx_preprocess.h
|
|
* @brief Zero-Copy Image Preprocessing for Thermal Imaging
|
|
*
|
|
* Includes Sliding Window Maximum/Average ROI search,
|
|
* Temperature filtering, and Data extraction.
|
|
*/
|
|
|
|
#ifndef QDX_PREPROCESS_H
|
|
#define QDX_PREPROCESS_H
|
|
|
|
#include "qdx_protocol.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Initialize static memory resources for sliding window calculations.
|
|
*
|
|
* Called once during system boot. Pre-allocates column accumulation arrays
|
|
* to prevent dynamic allocation during runtime.
|
|
*
|
|
* @param maxWidth The maximum supported width of the 2D input matrix
|
|
* @param maxHeight The maximum supported height of the 2D input matrix
|
|
* @return 0 on success, < 0 on failure.
|
|
*/
|
|
int8_t Preprocess_Init(uint16_t maxWidth, uint16_t maxHeight);
|
|
|
|
/**
|
|
* @brief Execute the preprocessing pipeline on a raw frame.
|
|
*
|
|
* High-performance processing logic that reads `input`, applies thresholds,
|
|
* finds the best `TargetWidth x TargetHeight` ROI using sliding window arrays,
|
|
* and extracts that region into `out_buffer` starting precisely at
|
|
* `HeadOffset`.
|
|
*
|
|
* @param input Raw thermal image array
|
|
* @param out_buffer Pre-allocated transmission buffer wrapper
|
|
* @param output_meta Struct to fill with process results/metadata
|
|
* @return 0 if successful, < 0 if aborted (e.g., config invalid)
|
|
*/
|
|
int8_t Preprocess_Execute(const RawImageBuffer_t *input,
|
|
TcpTxBuffer_t *out_buffer,
|
|
PreprocessResult_t *output_meta);
|
|
|
|
/**
|
|
* @brief Safely update internal preprocessing shadow parameters.
|
|
*
|
|
* @param newConfig2D Partial Configuration Update
|
|
* @param newConfig1D Partial Configuration Update
|
|
* @param newCommon General System Setup
|
|
* @return 0 on success.
|
|
*/
|
|
int8_t Preprocess_Settings_Change(const Config2D_t *newConfig2D,
|
|
const Config1D_t *newConfig1D,
|
|
const ConfigCommon_t *newCommon);
|
|
|
|
/**
|
|
* @brief Check if the current frame triggers the internal 2D capture condition
|
|
*
|
|
* Evaluates the specified TriggerRoi region using either Max or Average
|
|
* temperature against the TriggerTemperatureThreshold.
|
|
*
|
|
* @param input Raw thermal image array
|
|
* @return 1 if trigger condition is met, 0 if not met, < 0 on error.
|
|
*/
|
|
int8_t Preprocess_CheckInternalTrigger2D(const RawImageBuffer_t *input);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* QDX_PREPROCESS_H */
|