使用 2D 卷积核对图像进行卷积。 更多...
函数 | |
VPIStatus | vpiSubmitConvolution (VPIStream stream, uint64_t backend, VPIImage input, VPIImage output, const float *kernelData, int32_t kernelWidth, int32_t kernelHeight, VPIBorderExtension border) |
对图像执行通用 2D 卷积。 更多... | |
VPIStatus | vpiSubmitSeparableConvolution (VPIStream stream, uint64_t backend, VPIImage input, VPIImage output, const float *kernelXData, int32_t kernelXSize, const float *kernelYData, int32_t kernelYSize, VPIBorderExtension border) |
对图像执行通用 2D 卷积操作,针对可分离卷积核进行了优化。 更多... | |
使用 2D 卷积核对图像进行卷积。
有关卷积的更多详细信息和用法示例,请参阅 卷积。有关可分离卷积的更多详细信息和用法示例,请参阅 可分离卷积。
vpiSubmitConvolution 用于通用 2D 卷积核,无论是否可分离。 对于可分离卷积核,通常使用 vpiSubmitSeparableConvolution 更有效。
VPIStatus vpiSubmitConvolution | ( | VPIStream | stream, |
uint64_t | backend, | ||
VPIImage | input, | ||
VPIImage | output, | ||
const float * | kernelData, | ||
int32_t | kernelWidth, | ||
int32_t | kernelHeight, | ||
VPIBorderExtension | border | ||
) |
#include <vpi/algo/Convolution.h>
对图像执行通用 2D 卷积。
[输入] | stream | 操作将排队进入的流句柄。
| ||||||||||||||||||||||||||||||||||||||||
[输入] | backend | 将执行该算法的后端。 | ||||||||||||||||||||||||||||||||||||||||
[输入] | input | 要与卷积核进行卷积的输入图像。
| ||||||||||||||||||||||||||||||||||||||||
[输出] | output | 结果写入的输出图像。
| ||||||||||||||||||||||||||||||||||||||||
[输入] | kernelWidth,kernelHeight | 卷积核尺寸。
| ||||||||||||||||||||||||||||||||||||||||
[输入] | kernelData | 卷积核系数,以行优先布局。 卷积核元素被复制到内部缓冲区。 传递的缓冲区可以在调用后被释放。
| ||||||||||||||||||||||||||||||||||||||||
[输入] | border | 如何处理图像边界外的像素。
|
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | input 或 output 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | kernelWidth 或 kernelHeight 超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | kernelData 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | kernelData 中的某些权重超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | input 或 output 尺寸超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | input 和 output 图像必须具有相同的尺寸。 |
VPI_ERROR_INVALID_ARGUMENT | 不支持 border 。 |
VPI_ERROR_INVALID_ARGUMENT | backend 无效或未知。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持 input 或 output 格式。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | input 和 output 格式不兼容。 |
VPI_ERROR_NOT_IMPLEMENTED | 给定后端不支持卷积算法。 |
VPI_ERROR_INVALID_OPERATION | 后端硬件不可用。 |
VPI_ERROR_INVALID_OPERATION | 所需的后端未在 stream 、input 或 output 中启用。 |
VPI_SUCCESS | 操作成功执行。 |
VPIStatus vpiSubmitSeparableConvolution | ( | VPIStream | stream, |
uint64_t | backend, | ||
VPIImage | input, | ||
VPIImage | output, | ||
const float * | kernelXData, | ||
int32_t | kernelXSize, | ||
const float * | kernelYData, | ||
int32_t | kernelYSize, | ||
VPIBorderExtension | border | ||
) |
#include <vpi/algo/Convolution.h>
对图像执行通用 2D 卷积操作,针对可分离卷积核进行了优化。
[输入] | stream | 操作将排队进入的流句柄。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输入] | backend | 将执行该算法的后端。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输入] | input | 要与卷积核进行卷积的输入图像。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输出] | output | 结果写入的输出图像。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输入] | kernelXSize,kernelYSize | X 和 Y 方向上的卷积核尺寸。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输入] | kernelXData,kernelYData | 卷积核系数,分别在 X 和 Y 方向上。 卷积核元素被复制到内部缓冲区。 传递的缓冲区可以在调用后被释放。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[输入] | border | 如何处理图像边界外的像素。
|
VPI_ERROR_INVALID_ARGUMENT | stream 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | input 或 output 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | kernelXData 或 kernelYData 为 NULL。 |
VPI_ERROR_INVALID_ARGUMENT | kernelXSize 或 kernelYSize 超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | kernelData 中的某些权重超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | input 或 output 图像尺寸超出有效范围。 |
VPI_ERROR_INVALID_ARGUMENT | 不支持 border 。 |
VPI_ERROR_INVALID_ARGUMENT | input 和 output 图像尺寸和格式不匹配。 |
VPI_ERROR_INVALID_ARGUMENT | backend 无效或未知。 |
VPI_ERROR_INVALID_IMAGE_FORMAT | 不支持 input 和 output 格式 |
VPI_ERROR_NOT_IMPLEMENTED | 给定后端不支持可分离卷积算法。 |
VPI_ERROR_INVALID_OPERATION | 后端硬件不可用。 |
VPI_ERROR_INVALID_OPERATION | 所需的后端未在 stream 、input 或 output 中启用。 |
VPI_SUCCESS | 操作成功执行。 |