- Description:
- Computes the integral image of the input. Each output pixel is the sum of the corresponding input pixel and all other pixels above and to the left of it.
- Method:
- The integral image is computed using the following equation:
dst(x,y) = sum(x,y)
where, for x>=0 and y>=0
sum(x,y) = src(x,y) + sum(x-1,y) + sum(x,y-1) - sum(x-1,y-1)
otherwise,
sum(x,y)=0
- Parameters
-
[in] | src[] | Pointer to array containing first input image (UQ8.0) |
[in] | src_addr[] | Pointer to structure containing dimensional information of src |
[out] | dst[] | Pointer to array containing output image (UQ32.0) |
[in] | dst_addr[] | Pointer to structure containing dimensional information of dst |
[in] | prevRow[] | Pointer to array containing the last row from a previous execution |
[in] | prevCol[] | Pointer to array containing the last column from a previous execution (optional) |
[in] | prevRowUpdate | Flag that indicates if the function should update the prevRow data (0: Don't update, 1: Update) |
- Assumptions:
- I/O buffer pointers are assumed to be not aliased.
- The number of elements in prevRow buffer should be equal to the width of the full image
- The number of elements in prevCol buffer should be equal to the height of the full image
- PARAMETER INITIALIZATION:
- All prevRow entries should be externally initialized to zero before calling the function for the first time since it is always read by the function regardless if the function is being called once per image, or multiple times per image.
- If calling only once per full image, prevRowUpdate can be set to 0 so that the zero initialized prevRow buffer doesn't get updated by the function, and can be re-used for subsequent images without re-initializing.
- If a user wants to divide processing of the image into smaller blocks, then it can use the prevRow and prevCol arrays to store the state information between function calls (prevRowUpdate should be set to 1).
- When using prevCol, all entries should be externally initialized to zero, before calling the function for the first time for each image.
- As the function is called across different blocks of an image, be sure to change the prevRow and prevCol pointers to align with the y and x offset of the src and dst image pointers, respectivly.
- If processing the image in horizontal strips (where the width of each strip is the width of the image), then prevCol may still be set to NULL.
- If processing the image in vertical strips (where the height of each strip is the height of the image), then prevRowUpdate may be set to 0, and prevCol should be non-NULL.
- Performance Considerations:
- For best performance, the following parameter settings are recommended:
- Align all pointers to 8 byte boundaries
- Set all stride values to a multiple of 8
- Set all width values to a multiple of 8