Histogram Eq
- group Histogram Eq
Functions
-
NVCVStatus cvcudaHistogramEqCreate(NVCVOperatorHandle *handle, uint32_t maxBatchSize)
Constructs and an instance of the HistogramEq operator.
- Parameters:
handle – [out] Where the image instance handle will be written to.
Must not be NULL.
maxBatchSize – [in] the maximum batch size.
- Return values:
NVCV_ERROR_INVALID_ARGUMENT – Handle is null.
NVCV_ERROR_OUT_OF_MEMORY – Not enough memory to create the operator.
NVCV_SUCCESS – Operation executed successfully.
-
NVCVStatus cvcudaHistogramEqSubmit(NVCVOperatorHandle handle, cudaStream_t stream, NVCVTensorHandle in, NVCVTensorHandle out)
Executes the HistogramEq operation on the given cuda stream. This operation does not wait for completion.
Limitations:
Input: Data Layout: [kNHWC, kHWC, kNCHW, kCHW] Channels: 1, 2, 3, 4
Data Type
Allowed
8bit Unsigned
Yes
8bit Signed
No
16bit Unsigned
No
16bit Signed
No
32bit Unsigned
No
32bit Signed
No
16bit Float
Yes
32bit Float
Yes
64bit Float
Yes
Output: Data Layout: [kNHWC, kHWC, kNCHW, kCHW] Channels: 1, 2, 3, 4
Data Type
Allowed
8bit Unsigned
Yes
8bit Signed
No
16bit Unsigned
No
16bit Signed
No
32bit Unsigned
No
32bit Signed
No
16bit Float
Yes
32bit Float
Yes
64bit Float
Yes
A floating-point image is binned to 8 bits, equalized and scaled back: a 256-bin histogram has no other reading of a continuous value. The scale factors are torchvision’s, which reaches equalize through the same conversion — multiply by
255 + 1 - 1e-3and truncate on the way in, divide by 255 on the way out. 16-bit float bins through 32-bit float, because the multiplier is not representable in half.Input/Output dependency
Property | Input == Output -------------- | ------------- Data Layout | Yes Data Type | Yes Number | Yes Channels | Yes Width | Yes Height | Yes
- Parameters:
handle – [in] Handle to the operator.
Must not be NULL.
stream – [in] Handle to a valid CUDA stream.
in – [in] input tensor.
out – [out] output tensor.
- Return values:
NVCV_ERROR_INVALID_ARGUMENT – Some parameter is outside valid range.
NVCV_ERROR_INTERNAL – Internal error in the operator, invalid types passed in.
NVCV_SUCCESS – Operation executed successfully.
-
NVCVStatus cvcudaHistogramEqVarShapeSubmit(NVCVOperatorHandle handle, cudaStream_t stream, NVCVImageBatchHandle in, NVCVImageBatchHandle out)
Executes the HistogramEq operation on a batch of images.
- Parameters:
in – [in] Input image batch.
out – [out] Output image batch.
-
NVCVStatus cvcudaHistogramEqMethodSubmit(NVCVOperatorHandle handle, cudaStream_t stream, NVCVTensorHandle in, NVCVTensorHandle out, NVCVHistogramEqMethod method)
Executes HistogramEq on a tensor, choosing how the equalization table is built.
The histogram, the per-channel semantics, the layouts and the data types are identical to cvcudaHistogramEqSubmit; only the lookup table differs, cf. NVCVHistogramEqMethod. Calling this with NVCV_HISTOGRAM_EQ_OPENCV is bit-exact with cvcudaHistogramEqSubmit.
- Parameters:
handle – [in] Handle to the operator.
stream – [in] Handle to a valid CUDA stream.
in – [in] Input tensor.
out – [out] Output tensor.
method – [in] Lookup-table construction, cf. NVCVHistogramEqMethod. Use NVCV_HISTOGRAM_EQ_OPENCV to preserve cvcudaHistogramEqSubmit’s behavior, or NVCV_HISTOGRAM_EQ_PILLOW to match Pillow and torchvision.
- Return values:
NVCV_ERROR_INVALID_ARGUMENT – Some parameter is outside valid range.
NVCV_ERROR_INTERNAL – Internal error in the operator, invalid types passed in.
NVCV_SUCCESS – Operation executed successfully.
-
NVCVStatus cvcudaHistogramEqVarShapeMethodSubmit(NVCVOperatorHandle handle, cudaStream_t stream, NVCVImageBatchHandle in, NVCVImageBatchHandle out, NVCVHistogramEqMethod method)
Executes the method-selecting HistogramEq on a batch of variable-shaped images.
Apart from input and output image batches, all parameters are the same as cvcudaHistogramEqMethodSubmit.
-
NVCVStatus cvcudaHistogramEqCreate(NVCVOperatorHandle *handle, uint32_t maxBatchSize)