XiAPI Offline Processing¶
xiAPI allows to process already captured images from camera those are stored in memory or loaded from disk.
Application calls processing functions which are implemented in API library, such as unpacking or RAW color processing (de-bayering). All processing functions can be called independently to currently opened camera.
Offline processing converts transport formats or RAW8 formats into XI_RAW8, XI_RAW16, XI_RGB24, XI_RGB32. It supports unpacking, debayering, Crop and Shift image processing blocks. See image data flow
Workflow¶Typical application workflow is:
- Get images from camera while storing them to some media
- Get and store API_context for later processing
- xiGetParamString XI_PRM_API_CONTEXT_LIST
- Open offline processing
- Set the API_context to processing
- xiProcSetParam XI_PRM_API_CONTEXT_LIST
- Eventually modify some parameters to tune up processing
- For each captured image:
- Push image
- Pull image
Source code for capturing 10 frames then processing 10 captured frames is available for download - xiProcSample.cpp
Defect Correction in offline processing - xiProcSample_DefectCorr.cpp - supported with newer camera families (xiC, xiB, xiX, xiT) which can save and load defect lists.
There are the following 5 functions, which allow to control Offline Processing.
// Open processing instance XI_RETURN xiProcOpen(xiProcessingHandle_t* h); // Set the parameter to processing // Same parameters can be set like in xiSetParam. // Example: XI_PRM_WB_KR for Red channel correction XI_RETURN xiProcSetParam(xiProcessingHandle_t* h, const char* prm, void* val, DWORD size, XI_PRM_TYPE type); // Set unprocessed image to processing chain XI_RETURN xiProcPushImage(xiProcessingHandle_t* h, unsigned char* first_pixel); // Gets next processed image from processing chain XI_RETURN xiProcPullImage(xiProcessingHandle_t* h, int timeout_ms, XI_IMG* new_image); // Closes instance for Image Processing entity XI_RETURN xiProcClose(xiProcessingHandle_t* h);
Functions return codes of xiAPI (0..999) combined with specific codes of Processing (1000-1999).
List of specific Image Processing codes:
|1001||Invalid argument detected (out of range).|
|1002||Implementation is not yet done.|
|1003||This value is not supported.|
|1004||Using of unknown parameter|
|1005||Input buffer is not allocated|
|1006||Output buffer is not allocated|
|1007||Output buffer allocation error|
|1008||There are no processors in chain|
|1009||Some requirement is not met.|
|1010||Processors chain is full.|
|1011||Processor is not initialized yet.|
|1012||Processor generates error.|
|1013||Unknown data format.|
|1014||Unknown color filter array pattern type.|
Offline processing is available since release V4_01_76.