acldvppAutoContrast

Applicability

Product

Supported

Atlas A3 training products / Atlas A3 inference products

Atlas A2 training products / Atlas A2 inference products

Atlas 200I/500 A2 inference products

x

Atlas inference products

x

Atlas training products

x

Function Usage

Remaps the pixels of each channel to maximize the contrast. The darkest pixel in the image is mapped to black, and the brightest pixel is mapped to white. In addition, you can adjust the cutoff and ignore parameters to control the contrast.

Prototype

Each operator has two-phase API calls. First, acldvppAutoContrastGetWorkspaceSize is called to calculate the required workspace size based on the computation process. Then, acldvppAutoContrast is called to perform computation. The two-phase APIs are as follows:

  • First-phase API:
    1
    acldvppStatus acldvppAutoContrastGetWorkspaceSize(const aclTensor *self, const aclFloatArray *cutoff, const aclIntArray *ignore, aclTensor *out, uint64_t *workspaceSize, aclOpExecutor **executor)
    
  • Second-phase API:
    1
    acldvppStatus acldvppAutoContrast(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)
    

acldvppAutoContrastGetWorkspaceSize

  • Parameters:
    • self: input tensor of the operator, which is of the aclTensor type created by calling aclCreateTensor (the tensor data is stored on the device). The value of dataType of the input tensor can be UINT8 or FLOAT, the value of Format can be NCHW or NHWC, and non-contiguous tensors are not supported. The value of N can be 1 or left empty, and the value of C can be 1 or 3 (1: input GRAY image; 3: input RGB image). When data type is set to FLOAT, the expected value range is [0, 1].
    • cutoff: percentage of the darkest and brightest pixels to be removed from the input image histogram. Call the aclCreateFloatArray API to create data of the aclFloatArray type. The length is 2. The first number indicates the darkest, and the second number indicates the brightest. The data value must be within the range of [0.0, 50.0). If a null pointer is passed, the two percentages are set to the default value 0.0.
    • ignore: background pixel value to be ignored in the input image histogram. Call the aclCreateIntArray API to create data of the aclIntArray type. The data length must be less than or equal to 256 and the data value must be within the range of [0, 255]. If a null pointer is passed, the pixel value is not ignored by default.
    • out: output tensor of the operator, which is of the aclTensor type created by calling aclCreateTensor (the tensor data is stored on the device). The value of dataType of the output tensor can be UINT8 or FLOAT, non-contiguous tensors are not supported, and the values of dataType, Format and Shape must be the same as those of self.
    • workspaceSize: size of the workspace to be allocated on the device.
    • executor: operator executor, containing the operator computation process.
  • Returns:

    acldvppStatus status code. For details, see acldvpp Return Codes.

acldvppAutoContrast

  • Parameters:
    • workspace: address of the device memory allocated by calling aclrtMalloc. The size of the device memory is specified by workspaceSize.
    • workspaceSize: The value must be the same as that obtained by calling acldvppAutoContrastGetWorkspaceSize.
    • executor: op executor, which contains the operator computation process and is the same as the executor of the acldvppAutoContrastGetWorkspaceSize API.
    • stream: stream for executing a task, which can be a created stream for saving resources or newly created by the aclrtCreateStream API call.
  • Returns:

    acldvppStatus status code. For details, see acldvpp Return Codes.

Constraints

The supported image resolution ranges from 6 x 4 to 4096 x 8192.

If dataType is set to UINT8, the result is the same as that of Torchvision. If dataType is set to FLOAT, the maximum difference between the result and Torchvision is +-1/255.