acl.himpi.sys_get_chn_csc_matrix
acl.himpi.sys_get_image_align_info
| c函数原型 | hi_s32 hi_mpi_sys_get_image_align_info(const hi_module_type mod_type[], const hi_u32 mod_num, const hi_img_base_info *img_base_info, hi_img_align_info *img_align_info) |
|---|---|
| Python函数 | img_align_info, ret = acl.himpi.sys_get_image_align_info(mod_type, mod_num, img_base_info) |
| 函数功能 | 根据模块、图片宽高计算出宽高对齐后的值以及存放图片数据的内存大小。 |
| 输入说明 | - mod_type:模块类型数组。模块类型是整数型常量. 如果数组中只有一个模块,则系统内部按该模块的对齐值来计算;如果数组中有多个模块,则系统内部按多个模块中的最大对齐值来计算;如果将模块类型设置为HI_MOD_ALL,则系统内部会从所有模块中选取最大对齐值来计算,便于简化理解各模块的对齐差异,操作简便,但可能占用内存较大。 - mod_num:模块类型数组长度。 - img_base_info:图片基本信息字典。 |
| 返回值说明 | img_align_info:图片对齐信息、内存大小的字典。 ret:int,错误码。 - 返回0表示成功。 - 返回非0表示失败,参见公共返回码。 |
| 约束说明 | 图片宽、高不能小于该模块最小宽高、不能大于最大宽高,图片格式必须是该模块所支持的。 各模块支持的图片格式、对齐要求请参见VPC图像处理接口、VDEC视频解码/JPEGD图像解码接口、VENC视频/JPEGE图像编码接口、PNGD图像处理接口下的约束说明。当前不支持设置HI_PIXEL_FORMAT_UNKNOWN格式。 |
父主题: 公共接口
acl.himpi.sys_set_chn_csc_matrix
| c函数原型 | hi_s32 hi_mpi_sys_set_chn_csc_matrix(hi_mod_id mode, hi_s32 chn, hi_csc_matrix csc_matrix, hi_csc_coefficient *csc_coefficient); |
|---|---|
| Python函数 | ret = acl.himpi.sys_set_chn_csc_matrix(mode, chn, csc_matrix, csc_coefficient) |
| 函数功能 | 在处理图像或视频前,YUV与RGB之间格式转换场景下,如果需要调整色域转换参数时,在创建对应图像或视频处理通道后,可调用该接口设置色域转换参数。 |
| 输入说明 | - mode:模块ID,当前只支持HI_ID_VDEC和HI_ID_VPC。 - chn:通道号。当mode设置为HI_ID_VDEC时,通道号范围请参见acl.himpi.vdec_create_chn处chn参数的取值范围;当mode设置为HI_ID_VPC时,通道号范围请参见acl.himpi.vpc_create_chn处chn参数的取值范围。 - csc_matrix:色域转换矩阵的数据标准。 - csc_coefficient:如果将“csc_matrix”参数设置为“HI_CSC_MATRIX_USER”,则需要使用“csc_coefficient”参数设置色域转换矩阵参数,否则,此处传任意值。 |
| 返回值说明 | **ret:**int,错误码。 - 返回0,表示成功。 - 返回非0,表示失败,参见公共返回码。 |
| 约束说明 | - 如果不调用本接口设置色域转换参数,默认使用BT601 wide标准的色域转换矩阵参数值。 - 如果默认的色域转换参数不适用,仅需修改一次,该通道内的其它任务都使用修改后的色域转换参数,则在创建对应图像或视频处理通道后,可调用本接口设置色域转换参数,再调用具体的图像或视频处理接口,然后再调用对应的图像或视频处理结果获取接口。 - 如果默认的色域转换参数不适用,不同任务使用不同的色域转换参数,需多次修改,则在创建对应图像或视频处理通道后,在上一次任务执行结束后、下一次任务执行前调用本接口设置色域转换参数(如果上一次任务没有执行结束,就再次调用本接口设置色域转换参数,可能会导致任务处理的结果不正确),再调用具体的图像或视频处理接口,然后再调用对应的图像或视频处理结果获取接口。 调用顺序示例如下: 1. acl.himpi.sys_set_chn_csc_matrix(第一次修改色域转换参数) 2. acl.himpi.vpc_crop(抠图) 3. acl.himpi.vpc_get_process_result(等待抠图任务结束) 4. acl.himpi.sys_set_chn_csc_matrix(第二次修改色域转换参数) 5. acl.himpi.vpc_resize(缩放) 6. acl.himpi.vpc_get_process_result(等待缩放任务结束) |
父主题: 公共接口
acl.himpi.sys_get_chn_csc_matrix
| c函数原型 | hi_s32 hi_mpi_sys_get_chn_csc_matrix(hi_mod_id mode, hi_s32 chn, hi_csc_matrix *csc_matrix, hi_csc_coefficient *csc_coefficient); |
|---|---|
| Python函数 | csc_matrix, csc_coefficient, ret = acl.himpi.sys_get_chn_csc_matrix(mode, chn) |
| 函数功能 | 用户使用该接口获取通道的色域转换矩阵参数值。 |
| 输入说明 | - mode:模块ID,当前只支持HI_ID_VDEC和HI_ID_VPC。 - chn:通道号。 - 当mode设置为HI_ID_VDEC时,通道号范围请参见acl.himpi.vdec_create_chn处chn参数的取值范围。 - 当mode设置为HI_ID_VPC时,通道号范围请参见acl.himpi.vpc_create_chn处chn参数的取值范围。 |
| 返回值说明 | - ret:int,错误码。 - 返回0,表示成功。 - 返回非0,表示失败,参见公共返回码。 - csc_matrix:色域转换矩阵的数据标准。 - csc_coefficient:色域转换矩阵参数值。 |
| 约束说明 | - 在创建通道成功后,才可以调用本接口获取通道的色域转换矩阵参数值。 - 不调用acl.himpi.sys_set_chn_csc_matrix接口设置色域转换矩阵参数时,返回默认的BT601 wide标准的色域转换矩阵参数值。 |
父主题: 公共接口
VPC功能
功能说明
VPC(Vision Preprocessing Core)功能如下所示,
-
抠图,从输入图片中抠出需要用的图片区域。
-
缩放,对图片进行缩放,支持单图裁剪缩放、一图多框裁剪缩放、原图缩放等多种缩放方式。
-
叠加,从输入图片中抠出来的图,对抠出的图进行缩放后,放在用户输出图片的指定区域,输出图片可以是空白图片(由用户申请的空输出内存产生的),也可以是已有图片(由用户申请输出内存后将已有图片读入输出内存),只有当输出图片是已有图片时,才表示叠加。
-
拼接,从输入图片中抠多张图片,对抠出的图进行缩放后,放到输出图片的指定区域。
-
直方图统计,统计图像每个通道(RGB/YUV)的像素值分布。
-
色彩重映射,根据配置信息将图片从原图映射为另一张图。
-
边界填充,对图像进行边界填充。
-
格式转换,对图像进行格式转换。
-
图像灰度化,将彩色图像转化为灰度图像。需注意,输入为灰度图像、输出只能为灰度图像。
实现图像灰度化的操作是输出YUV400格式的输出图片。
-
Remap变换,根据像素位置LUT对输入图像进行几何形变,典型的用途包括:镜头畸变校正、仿射变换、透视变换,功能示意图请参见图4。
形变方式可以用下述公式描述:dst(x,y)=src(LUT(x,y))。
其中,dst(x,y)为输出图像在坐标(x,y)处的像素值,像素位置LUT(x,y)是输出图像在(x,y)处的像素对应输入图像中的横、纵坐标值,src(LUT(x,y))为输入图像在坐标LUT(x,y)处的像素值。通用的像素位置LUT可通过用户提供的map1(横坐标映射矩阵)和map2(纵坐标映射矩阵)生成,仿射变换或透视变换的像素位置LUT也可通过用户提供的3个点对或4个点对信息计算生成。
-
滤波:对输入图片做滤波处理,当前可支持中值滤波/腐蚀/膨胀/高斯滤波/均值滤波/卷积滤波。
-
旋转:对输入图片做固定角度的旋转,支持90度/180度/270度。
-
马赛克:对输入图片做马赛克处理。
-
覆盖: 对输入图片做局部覆盖操作。
-
画线:对输入图片做画线处理。
-
添加水印:对输入图片做添加水印的处理。
功能示意图( Atlas 200I/500 A2 推理产品 )
图1 VPC功能示意图(抠图+缩放+叠加)

图2 VPC功能示意图(拼接)

图3 等比例缩放(贴图区域在输出图片的中心位置),即缩放前后图片的宽高比例相同

图4 Remap功能

参考说明
RGB、YUV格式图像的各分量排布示意图。示例:SP图像以YUV420SP为例,Packed和RGB图像以ARGB图像为例。

父主题: VPC图像处理接口
约束说明
图片分辨率约束
-
输入图片分辨率:10*6~8192*8192。
在调用接口实现VPC功能时,各接口对分辨率的要求可能不同,请参见VPC图像处理接口下各接口的说明。
其中,当输入图片格式为YUV440SP、YUV440P时,输入图片的宽最大值为4096。
-
输出图片分辨率
昇腾AI处理器 分辨率范围 Atlas 200/500 A2推理产品 10*6~4096*8192
图片格式、宽高对齐、内存约束
VPC在处理图片时,需调用acl.himpi.dvpp_malloc接口申请Device上的输入、输出内存,调用acl.himpi.dvpp_free接口释放输入、输出内存,这部分内存的生命周期由用户自行管理。
:::note 说明 在调用接口实现VPC功能时:
- 图片格式的定义请参见hi_pixel_format,宽stride、高stride等概念请参见基本概念。,不同版本中,宽stride、高stride的最小值、最大值不同,如下:
- Atlas 200/500 A2推理产品上,宽stride最小10、高stride最小6。
- 各接口对图片格式的要求可能不同,请参见VPC图像处理接口下各接口的说明。 :::
表1 输入图片格式、宽高对齐、内存大小约束
版本 | 图片格式 | 图片宽、高对齐要求 | 图片宽stride、高stride对齐要求 Atlas 200/500 A2推理产品 | 内存大小要求(单位Byte) |
|---|---|---|---|---|
通用格式,各版本都支持 | YUV400 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
YUV420SP NV12 8bit YUV420SP NV21 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 3/2 | |
YUV422SP 8bit YVU422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YUV444SP 8bit YVU444SP 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 | |
YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit | 宽2对齐 高无对齐要求 | 宽stride为宽*2的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV444Packed 8bit RGB888 BGR888 | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
ARGB8888 ABGR8888 RGBA8888 BGRA8888 | 无对齐要求 | 宽stride为宽*4的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV440SP 8bit YVU440SP 8bit | 宽无对齐要求,但宽≤4096 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 2 | |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YVU420Planar YUV420Planar | 宽2对齐,高2对齐 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3/2 |
YVU422Planar YUV422Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YVU444Planar YUV444Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 | |
YVU444Packed 8bit | 无对齐要求 | 宽stride无对齐要求,宽stride为宽*3的值;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
YUV440Planar YVU440Planar | 宽无对齐要求,但宽≤4096 高2对齐 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
RGB888Planar BGR888Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 |
表2 输出图片格式、宽高对齐、内存大小约束
- | 图片格式 | 图片宽、高对齐要求 | 图片宽stride、高stride对齐要求 Atlas 200/500 A2推理产品 | 内存大小要求(单位Byte) |
|---|---|---|---|---|
通用格式,各版本都支持 | YUV400 8bit | 无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
YUV420SP NV12 8bit YUV420SP NV21 8bit | 宽2对齐 高2对齐 | 宽stride无对齐要求,与宽相同即可; 高stride为高2对齐后的值。 | 宽stride * 高stride * 3/2 | |
YUV422SP 8bit YVU422SP 8bit | 宽2对齐 高无对齐要求 | 宽stride无对齐要求,与宽相同即可; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 2 | |
YUV444Packed 8bit RGB888 BGR888 | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
ARGB8888 ABGR8888 RGBA8888 BGRA8888 | 无对齐要求 | 宽stride为宽*4的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride | |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YUV422Packed YUYV 8bit YUV422Packed UYVY 8bit YUV422Packed YVYU 8bit YUV422Packed VYUY 8bit | 宽无对齐要求 高2对齐 | 宽stride为宽*2的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
该部分格式仅以下版本支持: Atlas 200/500 A2推理产品 | YVU444Packed | 无对齐要求 | 宽stride为宽*3的值; 高stride无对齐要求,与高相同即可。 | 宽stride * 高stride |
RGB888Planar BGR888Planar | 无对齐要求 | 宽stride无对齐要求,与宽相同即可;高stride无对齐要求,与高相同即可。 | 宽stride * 高stride * 3 |
抠图、贴图约束
-
抠图区域不超出输入图片区域。
-
贴图区域不超出输出图片区域,最大贴图个数256个。
-
抠图、贴图区域的奇数、偶数限制为:
输出图片格式为YUV420SP,贴图区域奇数、偶数限制为:左偏移和上偏移为偶数、右偏移和下偏移为奇数。
输出图片格式为YUV422SP,贴图区域奇数、偶数限制为:左偏移为偶数、右偏移为奇数。
其它格式,贴图区域没有偏移奇偶数的限制。
YUV格式图像下采样约束
VPC在处理图片时,会根据输入或输出图片格式,将输入图片格式转换为YUV444或RGB用于内部处理,YUV444或RGB没有宽高奇偶数的限制,但当输出图片格式为YUV420SP或YUV422SP格式时,会进行下采样处理,由于YUV420SP或YUV422SP格式本身的数据排布导致宽高存在奇偶数限制,因此输出图片的边缘可能存在异常数据。
图1 异常效果图片举例
出现异常数据的根因在于,在计算过程中,出现输出图片位置处于奇数起始点时,此时YUV444格式的图片是正确的,但是下采样到YUV420SP格式时,由于奇数行和偶数行是共用同一个uv的,导致图片起始行的Y与上一行的UV组成新的像素,产生异常数据。
父主题: VPC图像处理接口
性能指标说明
性能指标说明(Atlas 200/500 A2推理产品)
单个Device场景下的性能指标参考如下(1路对应一个通道,一个通道对应一个线程,或者n路对应一个通道,一个通道对应n个线程):
| 场景举例 | 总帧率 |
|---|---|
| - 输入图片分辨率:1080p(1920*1080) - 输出图片分辨率:1080p(1920*1080) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*800fps |
| - 输入图片分辨率:1080p(1920*1080) - 输出图片分辨率:1080p(1920*1080) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 1600fps |
| - 输入图片分辨率:4K图像(3840*2160) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*200fps |
| - 输入图片分辨率:4K图像(3840*2160) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 400fps |
| - 输入图片分辨率:8K图像(7680*4320) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n<2) | n*100fps |
| - 输入图片分辨率:8K图像(7680*4320) - 输出图片分辨率:4K图像(3840*2160) - 输入/输出图片格式:YUV420SP - n路(n≥2) | 200fps |
:::note 说明
- VPC处理性能与处理过程中的图像分辨率强相关,以输入图像和输出图像中的最大分辨率作为基准分辨率,基准分辨率越大,处理耗时越久,性能越低。
- 调用VPC批处理接口(接口命名中包含batch,例如acl.himpi.vpc_batch_crop_resize_paste接口)时,由于图像处理单元DVPP(Digital Video Pre-Processing)内部多个VPC硬件单元会并行处理图片任务,因此单路就可以达到最大总帧率。 :::
父主题: VPC图像处理接口
在线提单