几何畸变矫正子系统¶
概述¶
几何畸变矫正(Geometric Distortion Correction,以下简称GDC)子系统实现的功能:对一帧图像进行鱼眼校正(包括360°全景、180°全景和Normal三种校正模式)、LDC(镜头畸变校正)校正、展宽、旋转、PMF矫正、输出图像拼接和输出图像打背景色功能。
须知:
仅SS928V100/SS927V100/SS626V100支持此模块。
SS626V100不支持LDC、展宽、低延时功能。
功能描述¶
基本概念¶
job
GDC管理task的结构,一个job里可以包含多个task,GDC保证task按照添加到job的顺序执行,并且保证一个job里的所有task一次性提交硬件执行。用户可以通过GDC的模块参数(g_max_gdc_job)设置GDC支持的最大job数。job数取值范围为[20, 400],默认值为128。
task
对一幅图像完成具体的一个或多个操作,比如鱼眼校正、LDC矫正等。用户可以通过GDC的模块参数(g_max_gdc_task)设置GDC支持的最大task数。task数取值范围为[20, 800],默认值为200。
node
GDC硬件的最小执行单位(对硬件而言),一个task对应一个node。node中包含硬件工作需要的信息,比如源的地址,目标的地址,操作的类型等,并按照硬件要求的形式组织。用户可以通过GDC的模块参数(g_max_gdc_node)设置GDC支持的最大node数。node数取值范围为[20, 800],默认值为200。
功能描述¶
GDC的功能主要有鱼眼校正(包含矫正后的输出图像拼接、输出图像打背景色等功能)、镜头畸变校正、展宽、旋转、PMF矫正等。
鱼眼校正
GDC支持对一幅图像进行鱼眼校正处理。
须知:鱼眼校正支持三种校正模式,360°全景模式,180°全景模式,normal模式。
360°全景模式支持地装和顶装;180°全景模式支持壁装;normal模式支持地装,顶装,壁装。
鱼眼功能在算法处理时,算法计算分块大小跟图像输出的宽高,out_radius,模式有关。分块越多耗时越大,out_radius最大配置为max(图像输出宽,图像输出高) 的一半,若超出分块数会明显增加,硬件耗时也会显著增加。
GDC支持对一幅图像进行鱼眼校正的同时进行缩放处理。鱼眼缩放效果不好,建议使用典型参数设置,尽量不使用GDC对鱼眼矫正后图像进行缩放。
须知:
鱼眼输入输出图像规格见表1所示。支持在进行鱼眼校正的同时,在输出图像允许的范围内对图像进行缩放。镜头畸变校正
GDC支持对一幅图像进行镜头畸变校正处理。
展宽
GDC支持对一幅图像进行远端展宽处理。
须知:
使用GDC进行镜头畸变校正或展宽处理时,输入图像大小与输出图像大小必须一致,不支持同时进行缩放。旋转
GDC支持对一帧图像进行固定角度或任意角度旋转,固定角度旋转不支持压缩输出。固定角度旋转只有在和LDC、DIS或者展宽任务组合时才由GDC完成,否则由VGS完成。
PMF矫正
GDC支持对一帧图像进行PMF矫正处理,可实现平面图像的投影变换,详细说明参见《GDC调试指南》。
压缩
GDC只支持LINEAR格式的非压缩图像输入,只支持LINEAR格式的压缩/非压缩图像输出。
输出图像拼接
GDC支持对一幅图像的多个区域分别进行FISHEYE校正,并对校正后的图像进行拼接后输出。非压缩输出时,各区域的x坐标要求16对齐,y坐标要求2对齐;压缩输出时,各区域的x坐标要求256对齐,各区域的宽要求256对齐或等于输出图像宽与该区域x坐标的差值,y坐标都要求2对齐。
须知:
这里的输出图像拼接是指在同一个VI或VPSS的通道内,最多支持对4个区域分别进行校正,并将校正后的图像拼接为一幅图像输出。多个通道之间的鱼眼校正处理输出,不支持拼接输出。输出图像打背景色
FISHEYE矫正时支持对输出的图像打背景色,用于输出有缝隙拼接。无缝拼接输出时建议关闭背景色,节省性能。
表 1 SS928V100 GDC硬件规格
规格点 |
描述 |
|---|---|
视频输入数据格式 |
|
输入图像分辨率 |
|
视频输出数据格式 |
|
输出图像分辨率 |
|
缩放能力 |
镜头畸变校正、展宽不支持缩放。 |
性能 |
3840x2160@60fps |
表 2 SS626V100 GDC硬件规格
规格点 |
描述 |
|---|---|
视频输入数据格式 |
|
输入图像分辨率 |
|
视频输出数据格式 |
|
输出图像分辨率 |
|
缩放能力 |
各功能支持缩放 |
性能 |
16M@30fps |
说明: 鱼眼矫正模式中,不同配置下处理的计算量和带宽差别较大,非典型配置可能会出现性能不足的情况。 GDC做像素格式转换,仅支持OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420或OT_PIXEL_FORMAT_YUV_SEMIPLANAR_420转成OT_PIXEL_FORMAT_YUV_400。
鱼眼标定工具库¶
根据鱼眼镜头获取鱼眼原图自动确定鱼眼镜头的位置特性(偏移、半径)。该标定工具库需要配合鱼眼镜头使用。
鱼眼标定工具库的详细说明和API参考请查看《GDC调试指南》。
API参考¶
用户需要调用VI模块或VPSS模块中提供的以下MPI接口打开或关闭功能,并设置GDC功能相关属性,具体请参考“视频输入”章节和“视频处理子系统”章节。
ss_mpi_vi_set_pipe_fisheye_cfg:设置VI PIPE对应的鱼眼镜头LMF参数配置。
ss_mpi_vi_get_pipe_fisheye_cfg:获取VI PIPE对应的鱼眼镜头LMF参数配置。
ss_mpi_vi_set_chn_fisheye:设置VI通道对应的鱼眼属性。
ss_mpi_vi_get_chn_fisheye:获取VI通道对应的鱼眼属性。
ss_mpi_vi_set_chn_spread_attr:设置VI通道展宽属性。
ss_mpi_vi_get_chn_spread_attr:获取VI通道展宽属性。
ss_mpi_vi_set_chn_ldc_attr:设置VI镜头畸变校正(LDC)属性。
ss_mpi_vi_get_chn_ldc_attr:获取VI镜头畸变校正(LDC)属性。
ss_mpi_vi_ldc_pos_query_dst_to_src:根据镜头畸变校正(LDC)的输出图像坐标点查找输入图像的坐标点。
ss_mpi_vi_ldc_pos_query_src_to_dst:根据镜头畸变校正(LDC)的输入图像坐标点查找输出图像的坐标点。
ss_mpi_vi_set_chn_rotation:设置VI图像旋转属性。
ss_mpi_vi_get_chn_rotation:获取VI图像旋转属性。
ss_mpi_vi_fisheye_pos_query_dst_to_src:根据鱼眼校正输出图像坐标点查找源图像坐标点。
ss_mpi_vpss_set_grp_fisheye_cfg:设置VPSS GROUP鱼眼镜头LMF参数。
ss_mpi_vpss_get_grp_fisheye_cfg:获取VPSS GROUP鱼眼镜头LMF参数。
ss_mpi_vpss_set_chn_fisheye:设置VPSS物理通道鱼眼属性。
ss_mpi_vpss_get_chn_fisheye:获取VPSS物理通道鱼眼属性。
ss_mpi_vpss_set_chn_spread_attr:设置VPSS物理通道展宽属性。
ss_mpi_vpss_get_chn_spread_attr:获取VPSS物理通道展宽属性。
ss_mpi_vpss_set_chn_ldc_attr:设置VPSS镜头畸变校正(LDC)属性。
ss_mpi_vpss_get_chn_ldc_attr:获取VPSS镜头畸变校正(LDC)属性。
ss_mpi_vpss_ldc_pos_query_dst_to_src:根据镜头畸变校正(LDC)的输出图像坐标点查找输入图像的坐标点。
ss_mpi_vpss_ldc_pos_query_src_to_dst:根据镜头畸变校正(LDC)的输入图像坐标点查找输出图像的坐标点。
ss_mpi_vpss_set_chn_rotation:设置VPSS物理通道旋转属性。
ss_mpi_vpss_get_chn_rotation:获取VPSS物理通道旋转属性。
ss_mpi_vpss_fisheye_pos_query_dst_to_src:根据鱼眼矫正输出图像坐标点查找源图像坐标点。
各MPI接口的具体用法请参考VI和VPSS章节中的MPI接口描述、注意事项及示例。
该功能模块为用户提供以下MPI:
ss_mpi_gdc_begin_job:启动一个job。
ss_mpi_gdc_set_cfg:设置鱼眼镜头的配置。
ss_mpi_gdc_add_correction_task:往一个已经开启的job里添加鱼眼校正task。
ss_mpi_gdc_add_correction_ex_task:往一个已经开启的job里添加鱼眼校正task(XY模式)或做黑边检测。
ss_mpi_gdc_add_pmf_task: 往一个已经开启的job里添加PMF校正task.
ss_mpi_gdc_end_job:提交一个job,GDC开始对这个job进行处理。
ss_mpi_gdc_cancel_job:取消一个job。
ss_mpi_gdc_fisheye_pos_query_dst_to_src:根据鱼眼校正输出图像坐标点查找源图像坐标点。
ss_mpi_gdc_fisheye_multi_pos_query_dst_to_src:根据鱼眼校正输出图像坐标点查找源图像坐标点,支持多点反向查询。
ss_mpi_gdc_fisheye_multi_pos_query_src_to_dst:根据源图像坐标点查找鱼眼校正输出图像坐标点,支持多点正向查询。
ss_mpi_gdc_set_dsp_lut_cfg:设置dsp lut功能配置。
ss_mpi_gdc_get_dsp_lut_cfg:获取dsp lut功能配置。
ss_mpi_gdc_begin_job¶
【描述】
启动一个job。
【语法】
td_s32 ss_mpi_gdc_begin_job(ot_gdc_handle *handle);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
用以返回handle。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h
库文件:libss_mpi.a
【注意】
可一次开启多个job,但必须判断ss_mpi_gdc_begin_job函数返回成功后才能使用返回的handle。
handle不能为空指针或非法指针。
ss_mpi_gdc_set_cfg¶
【描述】
设置鱼眼镜头的配置。
【语法】
td_s32 ss_mpi_gdc_set_cfg(ot_gdc_handle handle, const ot_gdc_fisheye_job_cfg *job_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
表示一个已经开启的job的handle。 |
输入 |
job_cfg |
Job配置指针,包括LMF系数。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
LMF系数的物理地址必须16对齐。
【举例】
请参见ss_mpi_gdc_cancel_job的举例。
ss_mpi_gdc_add_correction_task¶
【描述】
往一个已经开启的job里添加鱼眼校正task。
【语法】
td_s32 ss_mpi_gdc_add_correction_task(ot_gdc_handle handle, const ot_gdc_task_attr *task, const ot_fisheye_attr *fisheye_attr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
表示一个已经开启的job的handle。 |
输入 |
task |
GDC task属性指针。 |
输入 |
fisheye_attr |
FISHEYE校正区域属性配置指针 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
handle标识的Fisheye矫正job必须是已经开启的job。
fisheye_attr中的lmf_en参数为1时,必须在调用ss_mpi_gdc_set_cfg接口后才能调用此接口。
task属性必须满足GDC的能力。
各区域不支持做OT_FISHEYE_VIEW_MODE_NO_TRANS任务。
此接口不支持添加背景色功能,即bg_color_en参数不能设置为TRUE;如果需要添加背景色,建议在添加鱼眼矫正任务之前,调用VGS的接口ss_mpi_vgs_add_cover_task对需要添加背景色区域打上背景色。
输出图像为压缩格式时,校正区域数只能设置为1,且设置的区域需要完全覆盖输出图像。
如果此接口返回失败,如不需再添加其他任务,可以调用ss_mpi_gdc_end_job接口提交已经添加的task,否则必须调用ss_mpi_gdc_cancel_job接口取消掉handle标识的job。否则会导致handle标识的job不能再被循环利用。
鱼眼校正支持三种校正模式,360°全景模式,180°全景模式,normal模式。360全景模式支持地装和顶装;180°全景模式支持壁装;normal模式支持地装,顶装,壁装。
【举例】
请参见ss_mpi_gdc_cancel_job的举例。
ss_mpi_gdc_add_correction_ex_task¶
【描述】
往一个已经开启的job里添加鱼眼校正task(XY模式)或做黑边检测。
【语法】
td_s32 ss_mpi_gdc_add_correction_ex_task(ot_gdc_handle h_handle, const ot_gdc_task_attr *task, const ot_fisheye_attr_ex *fisheye_attrr_ex, td_bool check_mode);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
h_handle |
表示一个已经开启的job的handle。 |
输入 |
task |
GDC task属性指针。 |
输入 |
fisheye_attrr_ex |
FISHEYE校正区域属性配置指针(XY模式)。 |
输入 |
check_mode |
检查模式。
|
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
handle标识的Fisheye矫正job必须是已经开启的job。
在非检查模式下,即check_mode为FALSE,不支持同时开启LMF功能。
task属性必须满足GDC的能力。
各区域不支持做OT_FISHEYE_VIEW_MODE_NO_TRANS任务。
在非检查模式下,即check_mode为FALSE,此接口不支持添加背景色功能,即bg_color_en参数不能设置为TRUE;如果需要添加背景色,建议在添加鱼眼矫正任务之前,调用VGS的接口ss_mpi_vgs_add_cover_task对需要添加背景色区域打上背景色。
输出图像为压缩格式时,校正区域数只能设置为1,且设置的区域需要完全覆盖输出图像。
如果此接口返回失败,如不需再添加其他任务,可以调用ss_mpi_gdc_end_job接口提交已经添加的task,否则必须调用ss_mpi_gdc_cancel_job接口取消掉handle标识的job。否则会导致handle标识的job不能再被循环利用。
只支持Normal模式下的黑边检查或者XY模式矫正。
当check_mode为TD_TRUE时:
只会检查参数 task->img_in.video_frame.width,task->img_in.video_frame.height,task->img_out.video_frame.width,task->img_out.video_frame.height、hor_offset、ver_offset、mount_mode、rgn_num、out_radius、in_radius、x、y、hor_zoom、ver_zoom、out_rect.width、out_rect.height的合法性,其他参数不做合法范围检查。当检测到黑边或以上参数非法时,均返回错误码 ;当无黑边及以上参数合法时返回成功。
无论返回值是什么,这个任务都不会添加到任务队列中,后续不能提交任务,否则会报错。
当check_mode为TD_FALSE时:
对全部参数做合法性检查,当检测到黑边或非法参数时,返回错误码;当无黑边及参数合法时返回成功,并且添加此任务到任务队列中,为后面提交此任务做准备。
【举例】
无。
ss_mpi_gdc_add_pmf_task¶
【描述】
往一个已经开启的job里添加PMF校正task。
【语法】
td_s32 ss_mpi_gdc_add_pmf_task(ot_gdc_handle handle, const ot_gdc_task_attr *task, const ot_gdc_pmf_attr *gdc_pmf_attr);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
表示一个已经开启的job的handle。 |
输入 |
task |
GDC task属性指针。 |
输入 |
gdc_pmf_attr |
PMF参数的结构体指针 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
handle标识的PMF矫正job必须是已经开启的job。
gdc_pmf_attr中的PMF参数需要满足的条件参见《GDC 调试指南》中的说明。
task属性必须满足GDC的能力。
如果此接口返回失败,如不需再添加其他任务,可以调用ss_mpi_gdc_end_job接口提交已经添加的task,否则必须调用ss_mpi_gdc_cancel_job。接口取消掉handle标识的job。否则会导致handle标识的job不能再被循环利用。
【举例】
无。
ss_mpi_gdc_end_job¶
【描述】
提交一个job,GDC开始对这个job进行处理。
【语法】
td_s32 ss_mpi_gdc_end_job(ot_gdc_handle handle);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
表示一个已经开启的job的handle。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h
库文件:libss_mpi.a
【注意】
handle标识的job必须是已经开启的job。
如果此接口返回失败,必须调用ss_mpi_gdc_cancel_job接口取消掉handle标识的job。否则会导致handle标识的job不能再被循环利用。
【举例】
参见ss_mpi_gdc_begin_job。
ss_mpi_gdc_cancel_job¶
【描述】
取消一个job。
【语法】
td_s32 ss_mpi_gdc_cancel_job(ot_gdc_handle handle);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
handle |
表示一个已经开启的job的handle。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h
库文件:libss_mpi.a
【注意】
handle标识的job必须是已经开启的job。
【举例】
td_s32 ret = TD_SUCCESS;
ot_gdc_handle handle;
ot_gdc_task_attr task;
ot_fisheye_attr fisheye_attr;
ot_gdc_fisheye_job_cfg fisheye_job_cfg;
…
ret = ss_mpi_gdc_begin_job(&handle);
if (ret != TD_SUCCESS) {
goto handle_err;
}
…
ret = ss_mpi_gdc_set_cfg(handle, &fisheye_job_cfg);
if (ret != TD_SUCCESS) {
ss_mpi_gdc_cancel_job(handle);
goto handle_err;
}
…
ret = ss_mpi_gdc_add_correction_task (handle, &task, &fisheye_attr);
if (ret != TD_SUCCESS) {
ss_mpi_gdc_cancel_job(handle);
goto handle_err;
}
ret = ss_mpi_gdc_end_job(handle);
if (ret != TD_SUCCESS) {
ss_mpi_gdc_cancel_job(handle);
goto handle_err;
}
ss_mpi_gdc_fisheye_pos_query_dst_to_src¶
【描述】
根据鱼眼校正输出图像坐标点查找源图像坐标点。
【语法】
td_s32 ss_mpi_gdc_fisheye_pos_query_dst_to_src(const ot_gdc_fisheye_point_query_attr *fisheye_point_query_attr, const ot_video_frame_info *video_info, const ot_point *dst_point, ot_point *src_point);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
fisheye_point_query_attr |
鱼眼矫正坐标点查找属性参数 |
输入 |
video_info |
鱼眼输入图像帧信息 ot_video_frame_info请参考“系统控制”章节。 |
输入 |
dst_point |
鱼眼校正图上需要查找映射关系的坐标点。 ot_point请参考“系统控制”章节 |
输入 |
src_point |
鱼眼原图上查找到的坐标点。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
多区域时,每个区域的坐标点按照每个区域单独计算,不能按照拼接之后的图像来计算。
对于video_info结构体的成员中,反向查找计算只用到了width和height两个成员,因此接口只对参数width和height范围做了检查。
对于fisheye_point_query_attr结构体的成员fisheye_attr,它的结构体成员中bg_color_en/bg_color/out_rect中的x和y值不影响反向查找结果,因此接口不对以上参数范围做检查。
支持360°全景模式、180°全景模式、Normal校正模式。
【举例】
无。
ss_mpi_gdc_fisheye_multi_pos_query_dst_to_src¶
【描述】
根据鱼眼校正输出图像坐标点查找源图像坐标点,支持多点反向查询。
【语法】
td_s32 ss_mpi_gdc_fisheye_multi_pos_query_dst_to_src(const ot_gdc_fisheye_point_query_attr *fisheye_point_query_attr, const ot_video_frame_info *video_info, td_u32 num, const ot_point *dst, ot_point *src);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
fisheye_point_query_attr |
鱼眼矫正坐标点查找属性参数 |
输入 |
video_info |
鱼眼输入图像帧信息 ot_video_frame_info请参考“系统控制”章节。 |
输入 |
num |
鱼眼矫正坐标点的查找个数,最多200个。 |
输入 |
dst |
鱼眼校正图上需要查找映射关系的坐标点。 ot_point请参考“系统控制”章节 |
输入 |
src |
鱼眼原图上查找到的坐标点。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
多区域时,每个区域的坐标点按照每个区域单独计算,不能按照拼接之后的图像来计算。
对于video_info结构体的成员中,反向查找计算只用到了width和height两个成员,因此接口只对参数width和height范围做了检查。
对于fisheye_point_query_attr结构体的成员fisheye_attr,它的结构体成员中bg_color_en/bg_color/out_rect中的x和y值不影响反向查找结果,因此接口不对以上参数范围做检查。
支持360°全景模式、180°全景模式、Normal校正模式。
【举例】
td_s32 ret = TD_SUCCESS;
ot_gdc_fisheye_point_query_attr fisheye_point_query_attr;
ot_video_frame_info video_info;
td_u32 point_num = 160;
ot_point *dst = malloc(sizeof(ot_point) * point_num);
ot_point *src = malloc(sizeof(ot_point) * point_num);
if (dst == TD_NULL){
printf("malloc dst error!\n");
return TD_FAILURE;
}
if (src == TD_NULL) {
printf("malloc src error!\n");
free(dst);
dst = TD_NULL;
return TD_FAILURE;
}
…
ret = ss_mpi_gdc_fisheye_multi_pos_query_dst_to_src(&fisheye_point_query_attr, &video_info, point_num, dst, src);
if (ret != TD_SUCCESS) {
goto free_mem;
}
…
free_mem:
if (dst != TD_NULL) {
free(dst);
dst = TD_NULL;
}
if (src != TD_NULL) {
free(src);
src = TD_NULL;
}
return ret;
ss_mpi_gdc_fisheye_multi_pos_query_src_to_dst¶
【描述】
根据源图像坐标点查找鱼眼校正输出图像坐标点,支持多点正向查询。
【语法】
td_s32 ss_mpi_gdc_fisheye_multi_pos_query_src_to_dst(const ot_gdc_fisheye_point_query_attr *fisheye_point_query_attr, const ot_video_frame_info *video_info, td_u32 num, const ot_point *src, ot_point *dst);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
fisheye_point_query_attr |
鱼眼矫正坐标点查找属性参数 |
输入 |
video_info |
鱼眼输入图像帧信息 ot_video_frame_info请参考“系统控制”章节。 |
输入 |
num |
鱼眼矫正坐标点的查找个数,最多200个。 |
输入 |
src |
鱼眼原图上需要查映射关系的坐标点。 ot_point请参考“系统控制”章节 |
输入 |
dst |
鱼眼校正图上查找到的坐标点。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h、ot_common_video.h
库文件:libss_mpi.a
【注意】
多区域时,每个区域的坐标点按照每个区域单独计算,不能按照拼接之后的图像来计算。
对于video_info结构体的成员中,正向查找计算只用到了width和height两个成员,因此接口只对参数width和height范围做了检查。
对于fisheye_point_query_attr结构体的成员fisheye_attr,它的结构体成员中bg_color_en/bg_color/out_rect中的x和y值不影响正向查找结果,因此接口不对以上参数范围做检查。
开启lmf功能场景下,不支持正向查找坐标点。
支持360°全景模式、180°全景模式、Normal校正模式。
180°全景模式下,fan_strength只支持配置成0。
正向查找功能存在一定的计算精度误差,为了避免边界查找失败,当正向查找到的点坐标超出边缘两个像素以内,会主动近似成边缘的坐标。
360全景校正模式下,当内半径in_radius配置为0的时候,由于鱼眼图的中心会拉伸变换成边界,所以鱼眼图中心点正向查找到的输出点位置将会是边界的中心,即顶装查询到的是下边界的中心点,地装查询到的是上边界的中心点。
【举例】
td_s32 ret = TD_SUCCESS;
ot_gdc_fisheye_point_query_attr fisheye_point_query_attr;
ot_video_frame_info video_info;
td_u32 point_num = 160;
ot_point *dst = malloc(sizeof(ot_point) * point_num);
ot_point *src = malloc(sizeof(ot_point) * point_num);
if (dst == TD_NULL){
printf("malloc dst error!\n");
return TD_FAILURE;
}
if (src == TD_NULL) {
printf("malloc src error!\n");
free(dst);
dst = TD_NULL;
return TD_FAILURE;
}
…
ret = ss_mpi_gdc_fisheye_multi_pos_query_src_to_dst(&fisheye_point_query_attr, &video_info, point_num, src, dst);
if (ret != TD_SUCCESS) {
goto free_mem;
}
…
free_mem:
if (dst != TD_NULL) {
free(dst);
dst = TD_NULL;
}
if (src != TD_NULL) {
free(src);
src = TD_NULL;
}
return ret;
ss_mpi_gdc_set_dsp_lut_cfg¶
【描述】
设置dsp lut功能配置。
【语法】
td_s32 ss_mpi_gdc_set_dsp_lut_cfg(const ot_gdc_dsp_lut_cfg *dsp_lut_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
dsp_lut_cfg |
dsp lut功能配置指针。 |
输入 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h
库文件:libss_mpi.a
【注意】
仅SS928V100支持此接口。
当有lut任务或hybrid_dis任务在处理时,设置is_dsp_lut_support为FALSE时会返回失败。
【举例】
无
ss_mpi_gdc_get_dsp_lut_cfg¶
【描述】
获取dsp lut功能配置。
【语法】
td_s32 ss_mpi_gdc_get_dsp_lut_cfg(ot_gdc_dsp_lut_cfg *dsp_lut_cfg);
【参数】
参数名称 |
描述 |
输入/输出 |
|---|---|---|
dsp_lut_cfg |
dsp lut功能配置指针。 |
输出 |
【返回值】
返回值 |
描述 |
|---|---|
0 |
成功。 |
非0 |
失败,参见错误码。 |
【需求】
头文件:ot_common_gdc.h、ss_mpi_gdc.h
库文件:libss_mpi.a
【注意】
仅SS928V100支持此接口。
【举例】
无
数据类型¶
GDC模块相关数据类型定义如下:
ot_gdc_handle:定义GDC JOB的句柄。
OT_GDC_IP_NUM:定义GDC 的IP数量。
OT_GDC_PRIVATE_DATA_NUM:定义task相关私有数据的长度。
ot_gdc_task_attr:定义GDC task的属性。
OT_FISHEYE_LMF_COEF_NUM:定义LMF参数个数。
ot_fisheye_cfg:定义FISHEYE的鱼眼镜头LMF参数配置。
ot_gdc_fisheye_job_cfg:定义FISHEYE任务对应的鱼眼镜头LMF参数配置。
ot_fisheye_mount_mode:定义FISHEYE的安装模式。
ot_fisheye_view_mode:定义FISHEYE的校正模式。
ot_fisheye_rgn_attr:定义FISHEYE每个校正区域的属性配置。
ot_fisheye_rgn_attr_ex:定义FISHEYE每个校正区域的属性配置(XY模式)。
OT_GDC_PMF_COEF_NUM: PMF矫正系数的参数个数。
ot_gdc_pmf_attr:定义PMF属性的相关配置。
OT_FISHEYE_MAX_RGN_NUM:定义FISHEYE支持的最大校正区域个数。
ot_fisheye_attr:定义FISHEYE属性的相关配置。
ot_fisheye_attr_ex:定义FISHEYE属性的相关配置。
ot_fisheye_correction_attr:定义鱼眼矫正属性的相关配置。
ot_gdc_fisheye_point_query_attr:鱼眼矫正坐标点查找属性参数。
OT_FISHEYE_MIN_IN_IMAGE_WIDTH:定义鱼眼校正输入图像最小宽。
OT_FISHEYE_MIN_IN_IMAGE_HEIGHT:定义鱼眼校正输入图像最小高度。
OT_FISHEYE_MIN_OUT_IMAGE_WIDTH:定义鱼眼校正输出图像最小宽度。
OT_FISHEYE_MIN_OUT_IMAGE_HEIGHT:定义鱼眼校正输出图像最小高度。
OT_LDC_MIN_IMAGE_WIDTH:定义LDC校正输入输出图像最小宽度。
OT_LDC_MIN_IMAGE_HEIGHT:定义LDC校正输入输出图像最小高度。
OT_SPREAD_MIN_IMAGE_WIDTH: SPREAD输入输出图像最小宽度。
OT_SPREAD_MIN_IMAGE_HEIGHT: SPREAD输入输出图像最小高度。
OT_ROTATION_EX_MIN_IMAGE_WIDTH: 自由角度旋转输入输出图像最小宽度。
OT_ROTATION_EX_MIN_IMAGE_HEIGHT: 自由角度旋转输入输出图像最小高度。
OT_PMF_MIN_IMAGE_WIDTH:定义PMF校正输入输出图像最小宽度。
OT_PMF_MIN_IMAGE_HEIGHT:定义PMF校正输入输出图像最小高度。
OT_GDC_MAX_IMAGE_WIDTH:定义GDC模块支持的图像最大宽度。
OT_GDC_MAX_IMAGE_HEIGHT:定义GDC模块支持的图像最大高度。
OT_GDC_DSP_MAX_NUM:GDC模块支持绑定DSP核的最大个数。
ot_gdc_dsp_lut_cfg:定义DSP LUT参数配置。
ot_gdc_handle¶
【说明】
定义GDC JOB的句柄。
【定义】
typedef td_u32 ot_gdc_handle;
【注意事项】
无。
【相关数据类型及接口】
无。
OT_GDC_IP_NUM¶
【说明】
定义GDC 的IP数量。
【定义】
#define OT_GDC_IP_NUM 1
【注意事项】
无。
【相关数据类型及接口】
无。
OT_GDC_PRIVATE_DATA_NUM¶
【说明】
定义task相关私有数据的长度。
【定义】
#define OT_GDC_PRIVATE_DATA_NUM 4
【注意事项】
无。
【相关数据类型及接口】
ot_gdc_task_attr¶
【说明】
定义GDC task的属性。
【定义】
typedef struct {
ot_video_frame_info img_in; /* input picture */
ot_video_frame_info img_out; /* output picture */
td_u64 private_data[OT_GDC_PRIVATE_DATA_NUM]; /* RW; private data of task */
td_u64 reserved; /* RW; debug information,state of current picture */
} ot_gdc_task_attr;
【成员】
成员名称 |
描述 |
|---|---|
img_in |
输入图像属性。 |
img_out |
输出图像属性。 |
private_data |
与task相关的私有数据,GDC不会使用和修改其中的数据。 |
reserved |
保留项。 |
【注意事项】
输入和输出图像属性需要满足规定的属性。
【相关数据类型及接口】
ot_video_frame_info
OT_FISHEYE_LMF_COEF_NUM¶
【说明】
鱼眼镜头LMF参数个数。
【定义】
#define OT_FISHEYE_LMF_COEF_NUM 128
【注意事项】
无。
【相关数据类型及接口】
ot_fisheye_cfg¶
【说明】
定义FISHEYE的鱼眼镜头LMF参数配置。
【定义】
typedef struct {
td_u16 lmf_coef[OT_FISHEYE_LMF_COEF_NUM]; /* RW; LMF coefficient of gdc len */
} ot_fisheye_cfg;
【成员】
成员名称 |
描述 |
|---|---|
lmf_coef |
鱼眼镜头LMF参数。 |
【注意事项】
如果在VI的ss_mpi_vi_set_chn_fisheye接口中,ot_fisheye_attr属性开启了LMF参数功能,则必须调用VI的ss_mpi_vi_set_pipe_fisheye_cfg设置LMF参数,否则进行鱼眼处理时会因为获取不到用户配置的LMF参数而报错。
如果在VPSS的ss_mpi_vpss_set_chn_fisheye接口中,ot_fisheye_attr属性开启了LMF参数功能,则必须调用VPSS的ss_mpi_vpss_set_grp_fisheye_cfg设置LMF参数,否则进行鱼眼处理时会因为获取不到用户配置的LMF参数而报错。
LMF参数要按照镜头厂商的推荐参数进行转换后再配置(正确的LMF参数符合lmf_coef[i+1] ≥lmf_coef[i]+5&& lmf_coef [i + 1] <= lmf_coef [i] + 31 && lmf_coef [57] <1024< lmf_coef [85] &&lmf_coef[0] = 0的规律),如果配置的参数不满足此规律则会报错,如果配置的参数有误则可能出现总线错误等异常现象,如果没有镜头厂商提供的参数建议关闭LMF功能。
注:ss_mpi_vi_set_chn_fisheye请具体请参考 “视频输入” 章节。
【相关数据类型及接口】
ot_gdc_fisheye_job_cfg¶
【说明】
定义FISHEYE任务对应的鱼眼镜头LMF参数配置。
【定义】
typedef struct {
td_phys_addr_t len_map_phys_addr; /* LMF coefficient physic addr */
} ot_gdc_fisheye_job_cfg;
【成员】
成员名称 |
描述 |
|---|---|
len_map_phys_addr |
保存鱼眼LMF系数的物理地址。 |
【注意事项】
如果在接口ss_mpi_gdc_add_correction_task中,ot_fisheye_attr属性开启了LMF参数功能,则必须调用ss_mpi_gdc_set_cfg接口设置LMF参数,否则进行鱼眼处理时会因为获取不到用户配置的LMF参数而报错。
LMF参数要按照镜头厂商的推荐参数进行转换后再配置(正确的LMF参数符合lmf_coef[i+1] ≥lmf_coef[i]+5&& lmf_coef [i + 1] <= lmf_coef [i] + 31 && lmf_coef [57] <1024< lmf_coef [85]&& lmf_coef[0] = 0的规律)
如果配置的参数不满足此规律则会报错,如果配置的参数有误则可能出现总线错误等异常现象;
如果没有镜头厂商提供的参数建议关闭LMF功能。
len_map_phys_addr地址只能是MMZ内存的地址,且须16Byte对齐。
【相关数据类型及接口】
ot_fisheye_mount_mode¶
【说明】
定义FISHEYE属性中的安装模式。
【定义】
typedef enum {
OT_FISHEYE_MOUNT_MODE_DESKTOP = 0, /* Desktop mount mode */
OT_FISHEYE_MOUNT_MODE_CEILING = 1, /* Ceiling mount mode */
OT_FISHEYE_MOUNT_MODE_WALL = 2, /* wall mount mode */
OT_FISHEYE_MOUNT_MODE_BUTT
} ot_fisheye_mount_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_FISHEYE_MOUNT_MODE_DESKTOP |
地装模式。 |
OT_FISHEYE_MOUNT_MODE_CEILING |
顶装模式。 |
OT_FISHEYE_MOUNT_MODE_WALL |
壁装模式。 |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_fisheye_view_mode¶
【说明】
定义FISHEYE属性中的校正模式。
【定义】
typedef enum {
OT_FISHEYE_VIEW_MODE_360_PANORAMA = 0, /* 360 panorama mode of gdc correction */
OT_FISHEYE_VIEW_MODE_180_PANORAMA = 1, /* 180 panorama mode of gdc correction */
OT_FISHEYE_VIEW_MODE_NORM = 2, /* normal mode of gdc correction */
OT_FISHEYE_VIEW_MODE_NO_TRANS = 3, /* no gdc correction */
OT_FISHEYE_VIEW_MODE_BUTT
} ot_fisheye_view_mode;
【成员】
成员名称 |
描述 |
|---|---|
OT_FISHEYE_VIEW_MODE_360_PANORAMA |
360°全景模式。 |
OT_FISHEYE_VIEW_MODE_180_PANORAMA |
180°全景模式。 |
OT_FISHEYE_VIEW_MODE_NORM |
Normal校正模式。 |
OT_FISHEYE_VIEW_MODE_NO_TRANS |
不做校正模式,输出原图。 |
【注意事项】
360°校正模式下不支持壁装,180°校正模式下不支持顶装和地装。
【相关数据类型及接口】
无
ot_fisheye_rgn_attr¶
【说明】
定义FISHEYE每个校正区域的属性配置。
【定义】
typedef struct {
ot_fisheye_view_mode view_mode; /* RW; range: [0, 3];gdc view mode */
td_u32 in_radius; /* RW; inner radius of gdc correction region */
td_u32 out_radius; /* RW; out radius of gdc correction region */
td_u32 pan; /* RW; range: [0, 360] */
td_u32 tilt; /* RW; range: [0, 360] */
td_u32 hor_zoom; /* RW; horizontal zoom of correction region */
td_u32 ver_zoom; /* RW; vertical zoom of correction region */
ot_rect out_rect; /* RW; out imge rectangle attribute */
} ot_fisheye_rgn_attr;
【成员】
成员名称 |
描述 |
|---|---|
view_mode |
该校正区域的校正模式。 |
in_radius |
360°全景模式表示该校正区域所对应原图的内半径,其他模式无效。 取值范围:[0,out_radius) |
out_radius |
360°全景模式表示该校正区域所对应原图的外半径,其他模式为校正区域的可视半径。 取值范围:[1,3 x max(width of input picture/4, height of input picture/4)] |
pan |
该校正区域PTZ参数的Pan值。 取值范围:[0,360] |
tilt |
该校正区域PTZ参数的Tilt值。 取值范围:[0,360] |
hor_zoom |
该校正区域PTZ参数的水平Zoom值。 取值范围:
|
ver_zoom |
该校正区域PTZ参数的垂直Zoom值。 取值范围:[1,4095] |
out_rect |
该校正区域的输出位置及宽高。 取值范围:位置及宽高不能超出整个鱼眼矫正输出图的范围;且宽高需满足鱼眼输出图像规格限制 |
【注意事项】
鱼眼支持对一幅图像的多个区域分别进行校正,每个区域的属性配置是各自独立的。
NORMAL矫正模式下,当hor_zoom值大于4875时,也就是视场角大于150度时,可能会出现性能不足的情况。
【相关数据类型及接口】
无
ot_fisheye_rgn_attr_ex¶
【说明】
定义FISHEYE每个校正区域的属性配置(XY模式)。
【定义】
typedef struct {
ot_fisheye_view_mode view_mode; /* RW; range: [0, 3];gdc view mode */
td_u32 in_radius; /* RW; inner radius of gdc correction region */
td_u32 out_radius; /* RW; out radius of gdc correction region */
td_u32 x; /* RW; range: x-coordinate of the centre point of correction region */
td_u32 y; /* RW; range: y-coordinate of the centre point of correction region */
td_u32 hor_zoom; /* RW; horizontal zoom of correction region */
td_u32 ver_zoom; /* RW; vertical zoom of correction region */
ot_rect out_rect; /* RW; out imge rectangle attribute */
} ot_fisheye_rgn_attr_ex;
【成员】
成员名称 |
描述 |
|---|---|
view_mode |
该校正区域的校正模式。 |
in_radius |
360°全景模式表示该校正区域所对应原图的内半径,其他模式无效。 取值范围:[0,out_radius) |
out_radius |
360°全景模式表示该校正区域所对应原图的外半径,其他模式为校正区域的可视半径。 取值范围:[1,3 x max(width of input picture/4, height of input picture/4)] |
x |
选择区域的中心点X坐标。 取值范围:[0,width of input picture-1] |
y |
选择区域的中心点Y坐标。 取值范围:[0,height of input picture-1] |
hor_zoom |
该校正区域PTZ参数的水平Zoom值。 取值范围:
|
ver_zoom |
该校正区域PTZ参数的垂直Zoom值。 取值范围:[1,4095] |
out_rect |
该校正区域的输出位置及宽高。 取值范围:位置及宽高不能超出整个鱼眼矫正输出图的范围;且宽高需满足鱼眼输出图像规格限制 |
【注意事项】
鱼眼支持对一幅图像的多个区域分别进行校正,每个区域的属性配置是各自独立的。
NORMAL矫正模式下,当hor_zoom值大于4875时,也就是视场角大于150度时,可能会出现性能不足的情况。
【相关数据类型及接口】
无
OT_GDC_PMF_COEF_NUM¶
【说明】
PMF矫正系数的参数个数。
【定义】
#define OT_GDC_PMF_COEF_NUM 9
【注意事项】
无。
【相关数据类型及接口】
ot_gdc_pmf_attr¶
【说明】
定义PMF属性的相关配置。
【定义】
typedef struct {
td_s64 pmf_coef[OT_GDC_PMF_COEF_NUM]; /* W; PMF coefficient of gdc */
} ot_gdc_pmf_attr;
【成员】
成员名称 |
描述 |
|---|---|
pmf_coef |
PMF矫正系数。 取值范围请参考《GDC调试指南》的2.2.5小节。 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_FISHEYE_MAX_RGN_NUM¶
【说明】
FISHEYE支持的最大校正区域个数。
【定义】
#define OT_FISHEYE_MAX_RGN_NUM 4
【注意事项】
无
【相关数据类型及接口】
ot_fisheye_attr¶
【说明】
定义FISHEYE属性的相关配置。
【定义】
typedef struct {
/*
* RW; range: [0, 1];
* whether gdc len's LMF coefficient is from user config or from default linear config
*/
td_bool lmf_en;
td_bool bg_color_en; /* RW; range: [0, 1];whether use background color or not */
td_u32 bg_color; /* RW; range: [0,0xffffff];the background color RGB888 */
/*
* RW; range: [-511, 511];
* the horizontal offset between image center and physical center of len
*/
td_s32 hor_offset;
/*
* RW; range: [-511, 511];
* the vertical offset between image center and physical center of len
*/
td_s32 ver_offset;
td_u32 trapezoid_coef; /* RW; range: [0, 32];strength coefficient of trapezoid correction */
td_s32 fan_strength; /* RW; range: [-760, 760];strength coefficient of fan correction */
ot_fisheye_mount_mode mount_mode; /* RW; range: [0, 2];gdc mount mode */
td_u32 rgn_num; /* RW; range: [1, 4]; gdc correction region number */
ot_fisheye_rgn_attr fisheye_rgn_attr[OT_FISHEYE_MAX_RGN_NUM]; /* RW; attribution of gdc correction region */
} ot_fisheye_attr;
【成员】
成员名称 |
描述 |
|---|---|
lmf_en |
是否使用用户设置的鱼眼镜头LMF参数。 |
bg_color_en |
是否在输出图像打上背景色。 |
bg_color |
背景色的颜色RGB888格式,取值范围:[0, 0xFFFFFF] |
hor_offset |
镜头中心点相对于SENSOR中心点的水平偏移,取值范围:[-511, 511],单位为像素。 |
ver_offset |
镜头中心点相对于SENSOR中心点的垂直偏移,取值范围:[-511, 511],单位为像素。 |
trapezoid_coef |
梯形校正强度系数。用于壁装时的俯仰角校正,取值范围:[0, 32] |
fan_strength |
扇形校正强度系数,仅在180模式时有效,取值范围:[-760, 760] |
mount_mode |
鱼眼校正安装模式。 |
rgn_num |
一幅图像的校正区域数目,最多支持4个区域。 |
fisheye_rgn_attr |
每个校正区域各自的属性配置。 |
【注意事项】
FISHEYE支持对一幅图像的多个区域分别进行校正处理,每个校正区域的校正模式,PTZ参数等互相独立。同时根据每个校正区域设置的输出位置及宽高,对图像进行拼接后输出。
没有使能背景色时,输出图像的非校正区域是随机数据,可能会出现异常图像。
【相关数据类型及接口】
无。
ot_fisheye_attr_ex¶
【说明】
定义FISHEYE属性的相关配置。
【定义】
typedef struct {
/*
* RW; range: [0, 1];
* whether gdc len's LMF coefficient is from user config or from default linear config
*/
td_bool lmf_en;
td_bool bg_color_en; /* RW; range: [0, 1];whether use background color or not */
td_u32 bg_color; /* RW; range: [0,0xffffff];the background color RGB888 */
/*
* RW; range: [-511, 511];
* the horizontal offset between image center and physical center of len
*/
td_s32 hor_offset;
/*
* RW; range: [-511, 511];
* the vertical offset between image center and physical center of len
*/
td_s32 ver_offset;
td_u32 trapezoid_coef; /* RW; range: [0, 32];strength coefficient of trapezoid correction */
td_s32 fan_strength; /* RW; range: [-760, 760];strength coefficient of fan correction */
ot_fisheye_mount_mode mount_mode; /* RW; range: [0, 2];gdc mount mode */
td_u32 rgn_num; /* RW; range: [1, 4]; gdc correction region number */
ot_fisheye_rgn_attr_ex fisheye_rgn_attr[OT_FISHEYE_MAX_RGN_NUM]; /* RW; attribution of gdc correction region */
} ot_fisheye_attr_ex;
【成员】
成员名称 |
描述 |
|---|---|
lmf_en |
是否使用用户设置的鱼眼镜头LMF参数。 |
bg_color_en |
是否在输出图像打上背景色。 |
bg_color |
背景色的颜色RGB888格式,取值范围:[0, 0xFFFFFF]。 |
hor_offset |
镜头中心点相对于SENSOR中心点的水平偏移,取值范围:[-511, 511],单位为像素。 |
ver_offset |
镜头中心点相对于SENSOR中心点的垂直偏移,取值范围:[-511, 511],单位为像素。 |
trapezoid_coef |
梯形校正强度系数。用于壁装时的俯仰角校正,取值范围:[0, 32] |
fan_strength |
扇校正强度系数,仅在180模式时有效,取值范围:[-760, 760] |
mount_mode |
鱼眼校正安装模式。 |
rgn_num |
一幅图像的校正区域数目,最多支持4个区域。 |
fisheye_rgn_attr |
每个校正区域各自的属性配置(XY模式属性)。 |
【注意事项】
FISHEYE支持对一幅图像的多个区域分别进行校正处理,每个校正区域的校正模式,PTZ参数等互相独立。同时根据每个校正区域设置的输出位置及宽高,对图像进行拼接后输出。
没有使能背景色时,输出图像的非校正区域是随机数据,可能会出现异常图像。
【相关数据类型及接口】
无。
ot_fisheye_correction_attr¶
【说明】
定义鱼眼矫正属性的相关配置。
【定义】
typedef struct {
td_bool enable;
ot_fisheye_attr fisheye_attr;
ot_size dst_size;
} ot_fisheye_correction_attr;
【成员】
成员名称 |
描述 |
|---|---|
enable |
控制鱼眼矫正使能开关。 |
fisheye_attr |
鱼眼属性。 |
dst_size |
鱼眼矫正后的输出图像大小。范围:[OT_FISHEYE_MIN_OUT_IMAGE_WIDTH x OT_FISHEYE_MIN_OUT_IMAGE_HEIGHT, OT_GDC_MAX_IMAGE_WIDTH x OT_GDC_MAX_IMAGE_HEIGHT] |
【注意事项】
无。
【相关数据类型及接口】
无。
ot_gdc_fisheye_point_query_attr¶
【说明】
鱼眼矫正坐标点查找属性参数。
【定义】
typedef struct {
td_u32 rgn_index;
ot_fisheye_attr *fisheye_attr;
td_u16 lmf_coef[OT_FISHEYE_LMF_COEF_NUM];
} ot_gdc_fisheye_point_query_attr;
【成员】
成员名称 |
描述 |
|---|---|
rgn_index |
鱼眼校正区域号。 取值范围:[0, OT_FISHEYE_MAX_RGN_NUM-1] |
fisheye_attr |
鱼眼属性参数。 |
lmf_coef |
LMF系数。 |
【注意事项】
无。
【相关数据类型及接口】
无。
OT_FISHEYE_MIN_IN_IMAGE_WIDTH¶
【说明】
FISHEYE校正输入图像最小宽度。
【定义】
#define OT_FISHEYE_MIN_IN_IMAGE_WIDTH 1280
【注意事项】
无
【相关数据类型及接口】
无
OT_FISHEYE_MIN_IN_IMAGE_HEIGHT¶
【说明】
FISHEYE校正输入图像最小高度。
【定义】
#define OT_FISHEYE_MIN_IN_IMAGE_HEIGHT 720
【注意事项】
无
【相关数据类型及接口】
无
OT_FISHEYE_MIN_OUT_IMAGE_WIDTH¶
【说明】
FISHEYE校正输出图像最小宽度。
【定义】
#define OT_FISHEYE_MIN_OUT_IMAGE_WIDTH 640
【注意事项】
无
【相关数据类型及接口】
无
OT_FISHEYE_MIN_OUT_IMAGE_HEIGHT¶
【说明】
FISHEYE校正输出图像最小高度。
【定义】
#define OT_FISHEYE_MIN_OUT_IMAGE_HEIGHT 360
【注意事项】
无
【相关数据类型及接口】
无
OT_LDC_MIN_IMAGE_WIDTH¶
【说明】
LDC校正输入输出图像最小宽度。
【定义】
#define OT_LDC_MIN_IMAGE_WIDTH 640
【注意事项】
仅SS928V100支持。
【相关数据类型及接口】
无
OT_LDC_MIN_IMAGE_HEIGHT¶
【说明】
LDC校正输入输出图像最小高度。
【定义】
#define OT_LDC_MIN_IMAGE_HEIGHT 480
【注意事项】
仅SS928V100支持。
【相关数据类型及接口】
无
OT_SPREAD_MIN_IMAGE_WIDTH¶
【说明】
SPREAD输入输出图像最小宽度。
【定义】
#define OT_SPREAD_MIN_IMAGE_WIDTH 640
【注意事项】
仅SS928V100支持。
【相关数据类型及接口】
无
OT_SPREAD_MIN_IMAGE_HEIGHT¶
【说明】
SPREAD输入输出图像最小高度。
【定义】
#define OT_SPREAD_MIN_IMAGE_HEIGHT 480
【注意事项】
仅SS928V100支持。
【相关数据类型及接口】
无
OT_ROTATION_EX_MIN_IMAGE_WIDTH¶
【说明】
自由角度旋转输入输出图像最小宽度。
【定义】
#define OT_ROTATION_EX_MIN_IMAGE_WIDTH 480
【注意事项】
无
【相关数据类型及接口】
无
OT_ROTATION_EX_MIN_IMAGE_HEIGHT¶
【说明】
自由角度旋转输入输出图像最小高度。
【定义】
#define OT_ROTATION_EX_MIN_IMAGE_HEIGHT 360
【注意事项】
无
【相关数据类型及接口】
无
OT_PMF_MIN_IMAGE_WIDTH¶
【说明】
PMF校正输入输出图像最小宽度。
【定义】
#define OT_PMF_MIN_IMAGE_WIDTH 480
【注意事项】
无
【相关数据类型及接口】
无
OT_PMF_MIN_IMAGE_HEIGHT¶
【说明】
PMF校正输入输出图像最小高度。
【定义】
#define OT_PMF_MIN_IMAGE_HEIGHT 360
【注意事项】
无
【相关数据类型及接口】
无
OT_GDC_MAX_IMAGE_WIDTH¶
【说明】
GDC模块支持的图像最大宽度。
【定义】
#define OT_GDC_MAX_IMAGE_WIDTH 8192
【注意事项】
无
【相关数据类型及接口】
无
OT_GDC_MAX_IMAGE_HEIGHT¶
【说明】
GDC模块支持的图像最大高度。
【定义】
#define OT_GDC_MAX_IMAGE_HEIGHT 8192
【注意事项】
无
【相关数据类型及接口】
无
OT_GDC_DSP_MAX_NUM¶
【说明】
GDC模块支持绑定DSP核的最大个数。
【定义】
#define OT_GDC_DSP_MAX_NUM 2
【注意事项】
无
【相关数据类型及接口】
无
ot_gdc_dsp_lut_cfg¶
【说明】
定义DSP LUT参数配置。
【定义】
typedef struct {
td_bool is_dsp_lut_support;
td_bool is_dsp_id_bind[OT_GDC_DSP_MAX_NUM];
} ot_gdc_dsp_lut_cfg;
【成员】
成员名称 |
描述 |
|---|---|
is_dsp_lut_support |
是否支持DSP LUT功能。 |
is_dsp_id_bind |
是否绑定对应的DSP核。 支持绑定0、1核。 |
【注意事项】
要绑定DSP核,需要调用DSP相关接口加载对应的DSP Bin,具体参考《SVP2.0 API 参考》。
【相关数据类型及接口】
错误码¶
GDC错误码¶
GDC错误码如下所示。
表 1 GDC错误码
错误代码 |
宏定义 |
描述 |
|---|---|---|
0xa0258015 |
OT_ERR_GDC_NO_BUF |
分配内存失败。 |
0xa0258016 |
OT_ERR_GDC_BUF_EMPTY |
GDC的job,task或node节点已经使用完毕。 |
0xa025800a |
OT_ERR_GDC_NULL_PTR |
输入参数空指针错误 |
0xa0258007 |
OT_ERR_GDC_ILLEGAL_PARAM |
GDC参数设置无效。 |
0xa0258018 |
OT_ERR_GDC_NOT_READY |
系统未初始化。 |
0xa025800c |
OT_ERR_GDC_NOT_SUPPORT |
操作不支持。 |
0xa025800d |
OT_ERR_GDC_NOT_PERM |
操作不允许。 |
0xa0258022 |
OT_ERR_GDC_BUSY |
GDC通道号申请失败 |
0xa0258003 |
OT_ERR_GDC_INVALID_CHN_ID |
GDC通道号无效 |
0xa0258009 |
OT_ERR_GDC_CHN_UNEXIST |
GDC通道号不存在 |
0xa0258017 |
OT_ERR_GDC_BUF_FULL |
缓冲区数据已满 |