Rate This Document
Findability
Accuracy
Completeness
Readability

Mean

Computes the mean of image pixel values. For multi-channel images, the mean is calculated over each channel and saved in the corresponding channel array.

The function interface declaration is as follows:

  • Mean of a single channel:

HmppResult HMPPI_Mean_8u_C1R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, double *mean);

HmppResult HMPPI_Mean_16u_C1R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, double *mean);

HmppResult HMPPI_Mean_16s_C1R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, double *mean);

HmppResult HMPPI_Mean_32f_C1R(const float *src, int32_t srcStep, HmppiSize roiSize, double *mean,

HmppHintAlgorithm hint);

  • Mean of a single channel with masks:

HmppResult HMPPI_Mean_8u_C1MR(const uint8_t *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, double *mean);

HmppResult HMPPI_Mean_16u_C1MR(const uint16_t *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, double *mean);

HmppResult HMPPI_Mean_32f_C1MR(const float *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, double *mean);

  • Mean of three channels:

HmppResult HMPPI_Mean_8u_C3R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, double mean[3]);

HmppResult HMPPI_Mean_16u_C3R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, double mean[3]);

HmppResult HMPPI_Mean_16s_C3R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, double mean[3]);

HmppResult HMPPI_Mean_32f_C3R(const float *src, int32_t srcStep, HmppiSize roiSize, double mean[3],

HmppHintAlgorithm hint);

  • Mean of multiple channels with masks and COI:

HmppResult HMPPI_Mean_8u_C3CMR(const uint8_t *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, int32_t coi, double *mean);

HmppResult HMPPI_Mean_16u_C3CMR(const uint16_t *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, int32_t coi, double *mean);

HmppResult HMPPI_Mean_32f_C3CMR(const float *src, int32_t srcStep, const uint8_t *mask, int32_t maskStep,

HmppiSize roiSize, int32_t coi, double *mean);

  • Mean of four channels:

HmppResult HMPPI_Mean_8u_C4R(const uint8_t *src, int32_t srcStep, HmppiSize roiSize, double mean[4]);

HmppResult HMPPI_Mean_16u_C4R(const uint16_t *src, int32_t srcStep, HmppiSize roiSize, double mean[4]);

HmppResult HMPPI_Mean_16s_C4R(const int16_t *src, int32_t srcStep, HmppiSize roiSize, double mean[4]);

HmppResult HMPPI_Mean_32f_C4R(const float *src, int32_t srcStep, HmppiSize roiSize, double mean[4],

HmppHintAlgorithm hint);

Parameters

Parameter

Description

Value Range

Input/Output

src

Pointer to the source image ROI

The value cannot be NULL.

Input

srcStep

Distance between starts of consecutive lines in the source image, in bytes

The value must be zero or a positive integer.

Input

roiSize

Size of the ROI of the source and destination images, in pixels

roiSize.width ∈ (0, INT_MAX], roiSize.height ∈ (0, INT_MAX]

Input

mean[]

Array for storing the mean values for each channel of the source image (multi-channel scenario)

Value range of the pixel data type of the source image

Input/Output

Return Value

  • Success: HMPP_STS_NO_ERR
  • Failure: An error code is returned.

Error Codes

Error Code

Description

HMPP_STS_NULL_PTR_ERR

The value of src is NULL.

HMPP_STS_SIZE_ERR

The width or height of roiSize is zero or negative.

HMPP_STS_STEP_ERR

The value of srcStep is zero or negative.

HMPP_STS_NOT_EVEN_STEP_ERR

The value of srcStep cannot be exactly divided by the byte length of the data type to which src belongs.

HMPP_STS_ROI_ERR

The value of roiSize.width is greater than the step.

HMPP_STS_COI_ERR

The value of coi is not 1, 2, or 3.

Example

void MeanExample()
{
    HmppiSize roi = {3, 4};
    uint8_t src[9 * 4] = {1, 1, 1, 2, 2, 2, 3, 3, 3, 
                          4, 4, 4, 5, 5, 5, 6, 6, 6, 
                          7, 7, 7, 8, 8, 8, 9, 9, 9,
                          10, 10, 10, 11, 11, 11, 12, 12, 12};
    int32_t srcStep =9*sizeof(uint8_t);
    double mean[3] = {0.0};
    int32_t i;
    HmppResult result =HMPPI_Mean_8u_C3R(src, srcStep, roi, mean);
    printf("result = %d\n", result);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    for(i =0; i <3; i++) {
        printf("%lf ", mean[i]);
    }
    printf("\n");
}

Output:

result = 0
6.500000 6.500000 6.500000