npu.lib.kernels package#
Submodules#
npu.lib.kernels.addweighted module#
- class npu.lib.kernels.addweighted.AddWeighted(*args)#
Bases:
object
Vectorized implementation of the cv2.AddWeighted function.
This kernel accepts 2 inputs, each input is weighted by the RTPs alpha and beta, then emits a single output which is the element-wise addition of the weighted inputs.
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d2/de8/group__core__array.html#gafafb2513349db3bcff51f54ee5592a19
- behavioralfx()#
- class npu.lib.kernels.addweighted.AddWeightedScalar(*args)#
Bases:
object
Scalar implementation of the cv2.AddWeighted function
npu.lib.kernels.bitwiseand module#
- class npu.lib.kernels.bitwiseand.BitwiseAnd(*args)#
Bases:
object
Vectorized implementation of the cv2.bitwise_and function.
It accepts 2 buffer inputs and outputs 1 output which is the element-wise logical AND operation applied on each value.
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d2/de8/group__core__array.html#ga60b4d04b251ba5eb1392c34425497e14
- behavioralfx()#
- class npu.lib.kernels.bitwiseand.BitwiseAndScalar(*args)#
Bases:
object
Scalar implementation of the cv2.bitwise_and function
npu.lib.kernels.bitwiseor module#
- class npu.lib.kernels.bitwiseor.BitwiseOr(*args)#
Bases:
object
Vectorized implementation of the cv2.bitwise_or function.
It accepts 2 buffer inputs and outputs 1 output which is the element-wise logical AND operation applied on each value.
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d2/de8/group__core__array.html#gab85523db362a4e26ff0c703793a719b4
- behavioralfx()#
- class npu.lib.kernels.bitwiseor.BitwiseOrScalar(*args)#
Bases:
object
Scalar implementation of the cv2.bitwise_or function
npu.lib.kernels.filter2d module#
- class npu.lib.kernels.filter2d.Filter2d(*args, linewidth: int = 1280)#
Bases:
object
Vectorized implementation of a grayscale filter2d kernel
It supports 720p or 1080p image resolutions.
It accepts a row of the image at a time and uses a circular buffer to keep track of the last three rows. It then applies the filter to the three rows.
Keyword Parameter#
- linewidth: optional
Either 1280, 1920
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d4/d86/group__imgproc__filter.html#ga27c049795ce870216ddfb366086b5a04
- behavioralfx()#
npu.lib.kernels.gray2rgba module#
- class npu.lib.kernels.gray2rgba.Gray2Rgba(*args)#
Bases:
object
Vectorized implementation of the cv2.cvtColor RGBA2Gray conversion.
This kernel is used to convert a single channel grayscale image input into a 4 channel RGBA image.
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d8/d01/group__imgproc__color__conversions.html#ga397ae87e1288a81d2363b61574eb8cab
- behavioralfx()#
- class npu.lib.kernels.gray2rgba.Gray2RgbaScalar(*args)#
Bases:
object
Scalar implementation of the cv2.cvtColor RGBA2Gray conversion.
npu.lib.kernels.inrange module#
- class npu.lib.kernels.inrange.InRange(*args)#
Bases:
object
Vectorized implementation of the cv2.inRange function.
This vectorized implementation operates on grayscale image inputs. Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d2/de8/group__core__array.html#ga48af0ab51e36436c5d04340e036ce981
- behavioralfx()#
npu.lib.kernels.inverse module#
npu.lib.kernels.kernelgenerator module#
- class npu.lib.kernels.kernelgenerator.KernelObjCall(cpp, bfx, *args)#
Bases:
object
Helper function that generates new kernel objects.
npu.lib.kernels.median module#
- class npu.lib.kernels.median.Median(*args)#
Bases:
object
Vectorized implementation of a median filter.
- behavioralfx()#
- class npu.lib.kernels.median.MedianScalar(*args)#
Bases:
object
Scalar implementation of a median filter.
npu.lib.kernels.plusn module#
- class npu.lib.kernels.plusn.Plus1(*args)#
Bases:
object
Vectorized implementation of a plus1 function.
This function simply adds a constant 1 to every element of an input array. This is a useful function to verify that your graph is set up correctly as the input/output relationship is simple to interpret.
- behavioralfx()#
npu.lib.kernels.rgba2gray module#
- class npu.lib.kernels.rgba2gray.Rgba2Gray(*args)#
Bases:
object
Vectorized implementation of the cv2.cvtColor RGBA2Gray conversion.
This kernel is used to convert 4 channel image input into a single channel grayscale image.
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d8/d01/group__imgproc__color__conversions.html#ga397ae87e1288a81d2363b61574eb8cab
- behavioralfx()#
- class npu.lib.kernels.rgba2gray.Rgba2GrayScalar(*args)#
Bases:
object
Scalar implementation of of the cv2.cvtColor RGBA2Gray conversion.
npu.lib.kernels.rgba2hue module#
- class npu.lib.kernels.rgba2hue.Rgba2Hue(*args)#
Bases:
object
Vectorized implementation of the cv2.cvtColor RGBA2HUE conversion.
This kernel is used to convert 4 channel image input into HSV space (hue, saturation, value).
Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d8/d01/group__imgproc__color__conversions.html#ga397ae87e1288a81d2363b61574eb8cab
- behavioralfx()#
- class npu.lib.kernels.rgba2hue.Rgba2HueScalar(*args)#
Bases:
object
Scalar implementation of the cv2.cvtColor RGBA2HUE conversion
npu.lib.kernels.rgba_inverse module#
- class npu.lib.kernels.rgba_inverse.RgbaInverse(*args)#
Bases:
object
Vectorized inverse operation for an RGBA image.
For each RGBA 4-Byte pair it subtracts 255 from the R/G/B channel while leaving the alpha channel unchanged. This kernel accepts a single input for the input tile it is processing and returns a buffer for the output tile.
- behavioralfx()#
npu.lib.kernels.threshold module#
- class npu.lib.kernels.threshold.RgbaRtpThres(*args)#
Bases:
object
Vectorized implementation of an RGBA threshold.
For each RGBA 4 byte pair it applies a threshold to the R/G/B channels while leaving the alpha channel unchanged. This kernel accepts one buffer input for the input tile size, a RTP nbytes for the number of bytes that the kernel is expecting to process, r_thresh the threshold value for the red channel, g_thres the threshold value for the green channel, and b_thresh the threshold value for the blue channel. The vectorization factor for the kernel is 64 elements.
- behavioralfx()#
- class npu.lib.kernels.threshold.ThresholdGrayscale(*args)#
Bases:
object
Vectorized implementation of the cv2.threshold function.
This vectorized implementation operates on RGBA image inputs. Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d7/d1b/group__imgproc__misc.html#gae8a4a146d1ca78c626a53577199e9c57
- behavioralfx()#
- class npu.lib.kernels.threshold.ThresholdRgba(*args)#
Bases:
object
Vectorized implementation of the cv2.threshold function.
This vectorized implementation operates on RGBA image inputs. Read more about this function in the cv2 docs: https://docs.opencv.org/4.x/d7/d1b/group__imgproc__misc.html#gae8a4a146d1ca78c626a53577199e9c57
- behavioralfx()#
Module contents#
Kernels#
The npu.lib.kernels submodule includes pre-defined, but not pre-built kernels that can be used in custom application graph definitions. Each kernel also has a behavioral model associated with it allowing validation of data shapes and functionality in Python, before compiling the application binaries.
Example usage of inverse kernel behavioral model
import numpy as np from npu.lib.kernels.inverse import Inverse
kernel = Inverse() x = np.array(np.ones(100,) y = kernel(x, dtype=np.uint8), 100, 1)