LDC 用户指南
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.0 | 07/13/2022 | |
1.1 | 06/19/2023 |
1. 概述¶
1.1. 基本概念¶
1.1.1. 视场角¶
用于描述画面的视野范围,分别称为水平视场角α和垂直视场角β。对于带有畸变的镜头,视场角由于镜头折射的光学关系,会具有更大的视场角。
图 1-1 无畸变视场角示意图 |
图 1-2 有畸变视场角示意图 |
视场角的移动表现为画面内容的变化,视场角的移动不会改变视场角的大小,是绕光心旋转的过程。
图 1-3 视场角水平向右移动示意图 |
图 1-4 市场角垂直向上移动示意图 |
1.1.2. 桶形畸变¶
越靠近边角图像越向外向后延伸,失真越厉害,视觉上造成中间拱起的桶形效果。
![]() 无畸变图像 |
![]() 桶形畸变 |
1.1.3. 枕形畸变¶
越靠近边角图像越向外向前延伸,失真越厉害,视觉上造成中间凹陷的枕形效果。
![]() 无畸变图像 |
![]() 枕形畸变 |
1.1.4. 镜头¶
镜头作为摄像头的一个重要光学器件,其透光率,焦距、视场角、畸变等都会直接影响图像的整体效果,表 1-1针对LDC功能描述其一些特性和推荐的矫正模式。
镜头类型 | 样例 | 说明 |
---|---|---|
无畸变镜头 |
![]() |
畸变可以忽略,无需进行畸变矫正。 |
广角镜头 |
![]() |
带有一定程度的畸变,具有更广的视场角,由于视场角不够大使用360/180全景矫正无法获得很好的视野效果。推荐使用Normal矫正消除畸变。 |
鱼眼镜头 |
![]() |
视场角极大,可以囊括整个视野平面,但畸变程度较大。推荐使用180度全景矫正和360度全景矫正对画面进行处理以获得更多的视野,或者使用多region配合Normal矫正的方式来处理。 |
1.1.5. 图像无效区域¶
无效区域指在LDC处理生成输出图像时,超出原图像素范围内的区域,如通过模拟移动视场角将视野范围移出了原图的视场范围外。无效区域会被填充为黑色。
无效区域示意图 |
1.1.6. 绘制区域¶
输出图像我们可以将其视为一个输出的屏幕(screen),可以在上面根据实际的需求在指定区域(region)绘制我们经过LDC模块处理之后的图像(view)。绘制的区域之间相交、相切、相离均可。区域(region)的宽高对齐限制保持和屏幕(screen)一致,例如screen宽对齐要求16pixel,则region的宽也要求16pixel对齐。
绘制区域之间的关系 | 效果 |
---|---|
相交 | 序号大的区域(后绘制)将会覆盖重叠区域的图像 |
相离 | 空洞区域将会被绘制为背景色 |
相切 | 各个区域图像各自显示。无空洞区域;无重叠区域。 |
如图 1-6 为用于展示绘制区域的视图关系。黑色部分为空洞区域,可自由配置背景色进行填充。
图 1-6 绘制区域视图关系 |
2. 调试指南¶
2.1. 基础参数¶
对于 LDC 功能需要进行一些基础参数的配置以用于进行功能的正常输出,如表 2-1 所示。
RegionAttr参数 | 说明 | 参数范围 | |
---|---|---|---|
RegionMode | 当前区域的所使用的LDC功能 | ||
360 度全景矫正 |
畸变矫正功能
参考 2.2 章节进行详细参数的配置 |
1 | |
180度全景矫正 | 2 | ||
Normal 矫正 | 3 | ||
映射表模式(Map2bin) | 参考 2.3 章节进行详细参数的配置 | 4 | |
旁路模式(No Transformation) | 参考 2.5 章节进行详细参数的配置 | 5 | |
OutRect |
在输出图像中选定一块区域用于绘制当前区域的输出图像。
|
||
X | 绘制区域左上角的横坐标 | [0, out_w] | |
Y | 绘制区域左上角的纵坐标 | [0, out_h] | |
Width | 绘制区域宽度 | [0, out_w - X] | |
Height | 绘制区域高度 | [0, out_h - Y] | |
RegionNum |
配置绘制区域的数量
配置该数量后需要对数量内的每个区域的功能和详细参数进行配置,超出该数量的区域的参数无需进行配置。 |
(0, 9] | |
BgColor |
背景色(底色)的配置。颜色格式:RGB888
|
[0x0, 0xFFFFFF] |
2.2. 镜头畸变矫正¶
2.2.1. 模式说明¶
镜头畸变矫正模式(Lens Distortion Correction),MI LDC模块通过镜头标定信息 (CalibInfo)配合用户指定的矫正方式进行矫正,并根据需要进行裁切,缩放输出到指定区域的功能。
2.2.2. 流程框图¶
|
2.2.3. 摄像头的安装方式¶
摄像头的安装支持地装、顶装、壁装三种安装模式,其特性和典型场景示例如表 2-2 所示:
安装方式 | 特性说明 |
---|---|
地装(DM) | 摄像头安装在期望仰视视角的场景,如安装在地面、桌面等。 |
顶装(CM) | 摄像头安装在期望俯视视角的场景,如安装在天花板、楼顶等。 |
壁装(WM) | 摄像头安装在期望平视视角的场景,如安装在楼间、院墙等。 |
不同的安装方式和使用的矫正模式并非一一绑定,实际使用时可选择与之相配的矫正模式以达到最佳的视野和效果。
2.2.4. 矫正模式和参数说明¶
360 度全景矫正:
典型场景 | 顶装、地装 | |
---|---|---|
参数说明 | Pan |
矫正区域相对于原图,在圆周方向上的起始位置;
影响输出图像的左边界。 |
Tilt |
矫正区域相对于原图中心点,在半径方向上的起始位置;
影响输出图像的上边界。 |
|
ZoomH |
矫正区域相对于原图中心点,在圆周方向上的结束位置;
影响输出图像的右边界。 |
|
ZoomV |
矫正区域相对于原图原点,在半径方向上的结束位置;
影响输出图像的下边界。 |
|
矫正模型 |
|
180度全景矫正:
典型场景 | 壁装 | |
---|---|---|
参数说明 | Pan | 视场角进行左右转动,模拟摄像头左右转动。 |
Tilt | 视场角进行上下转动,模拟摄像头上下转动。 | |
ZoomH |
水平视场角的大小;
影响输出图像的横向视野范围。 |
|
ZoomV |
垂直视场角的大小;
影响输出图像的纵向视野范围。 |
|
矫正模型 |
|
Normal 矫正:
典型场景 | 壁装、顶转、地装 | |
---|---|---|
参数说明 | Pan | 视场角进行左右转动,模拟摄像头左右转动。 |
Tilt | 视场角进行上下转动,模拟摄像头上下转动。 | |
ZoomH | 视场角(水平&垂直)的大小。影响输出图像的整体视野范围 | |
ZoomV | 无效参数,无需进行配置。 | |
Rotate | 模拟摄像头旋转。 | |
矫正模型 |
|
2.2.5. 应用场景和参数配置说明¶
顶装、地装:
摄像头顶装或者地装时,推荐使用 360 度矫正模式或者 Normal 矫正模式。
- 360度矫正模式参数说明及范围如表 2-6 所示。
- Normal矫正模式参数说明及范围如表 2-7 所示。
参数 | 说明 | 参数范围 | |
---|---|---|---|
Pan |
矫正区域相对于原图,在圆周方向上的起始位置;
|
ZoomH > Pan
ZoomH – Pan <= 360 |
|
Tilt |
矫正区域相对于原图中心点,在半径方向上的起始位置;
|
[InRadius,OutRadius] | |
ZoomH |
矫正区域相对于原图,在圆周方向上的结束位置;
对于跨越0°(360°)的区域,例如展开270°到45°的区域,用(Pan=270°,ZoomH=360°+45°=405°)即可 |
ZoomH > Pan
ZoomH – Pan <= 360 |
|
ZoomV |
矫正区域相对于原图中心点,在半径方向上的结束位置;
|
[InRadius,OutRadius] | |
InRadius |
在原图中最大有效区域内边界距离中心点的半径。
如果设置为0则会生效为1;如果超过 FisheyeRadius 则等于 FisheyeRadius。 单位:pixel |
(0,FisheyeRadius] | |
OutRadius |
在原图中最大有效区域外边界距离中心点的半径。
如果设置为0则会生效为1;如果超过 FisheyeRadius 则等于 FisheyeRadius。 单位:pixel |
(0,FisheyeRadius] | |
MountMode | 必须配置为顶装或地装。 | 0,1 | |
0 | 地装 | ||
1 | 顶装 |
参数 | 说明 | 参数范围 | |
---|---|---|---|
Pan |
模拟摄像头的左右转动,影响输出图像的视野位置。
如果超过范围则等于边界值。 单位:角度 |
[-90,90] | |
= 0 | 不进行转动 | ||
< 0 | 向左转动 | ||
> 0 | 向右转动 | ||
Tilt |
模拟摄像头的上下转动,影响输出图像的视野位置。
如果超过范围则等于边界值。 单位:角度 |
[-90,90] | |
= 0 | 不进行转动 | ||
< 0 | 向下转动 | ||
> 0 | 向上转动 | ||
ZoomH |
调整视场角(水平&垂直)的大小(比例)。
影响输出图像的整体视野范围。 如果超过范围则等于边界值。 |
[0,500] | |
= 100 | 不进行调整 | ||
> 100 | 视野变窄,看到更少画面,但会损失画质。 | ||
< 100 | 视野变宽,看到更多画面,但会带来无效区域。 | ||
ZoomV | 无效参数 | ||
Rotate |
模拟摄像头的旋转。
单位:角度。 |
[0,360] | |
= 0 | 不进行旋转。 | ||
> 0 | 逆时针旋转,360为一圈。 | ||
MountMode | 配置为顶装、地装、壁装均可。 | 0、1、2 | |
0 | 地装 | ||
1 | 顶装 | ||
2 | 壁装 |
壁装:
摄像头壁装时,推荐使用180度矫正模式或者Normal矫正模式。
- 180度矫正模式参数说明及范围如表 2-8 所示。
- Normal矫正模式参数说明及范围如表 2-7 所示。
参数 | 说明 | 参数范围 | |
---|---|---|---|
Pan |
模拟摄像头的左右转动,影响输出图像的视野位置。
如果超过范围则等于边界值。 单位:角度。 |
[-90,90] | |
= 0 | 不进行转动 | ||
< 0 | 向左转动 | ||
> 0 | 向右转动 | ||
Tilt |
模拟摄像头的上下转动,影响输出图像的视野位置。
如果超过范围则等于边界值。 单位:角度。 |
[-90,90] | |
= 0 | 不进行转动 | ||
< 0 | 向下转动 | ||
> 0 | 向上转动 | ||
ZoomH |
调整水平视场角的大小。
如果超过范围则等于边界值。 |
[0,500] | |
= 100 | 不进行调整 | ||
> 100 | 视野变窄,看到更少画面,但会损失画质。 | ||
< 100 | 视野变宽,看到更多画面,但会带来无效区域。 | ||
ZoomV |
调整垂直视场角的大小。
如果超过范围则等于边界值。 |
[0,500] | |
= 100 | 不进行调整 | ||
> 100 | 视野变窄,看到更少画面,但会损失画质。 | ||
< 100 | 视野变宽,看到更多画面,但会带来无效区域 | ||
MountMode | 必须配置为壁装。 | 2 | |
2 | 壁装 |
以上各自模式下参数的配置均在其对应模式下有不同的作用效果,以下为公共参数部分的说明,对各矫正模式均有相同的作用效果。
参数 | 说明 | 参数范围 | |
---|---|---|---|
OutRotate |
将输出图像进行中心旋转。
单位:角度。 |
[0,360] | |
= 0 | 不进行旋转。 | ||
> 0 | 逆时针旋转,360为一圈。 | ||
DistortionRatio |
减弱畸变矫正的力度,用于提升视场角。
|
[-100,100] | |
= 0 | 不进行矫正力度的调整 | ||
> 0 |
适用于减弱桶形失真的矫正力度。
绝对值越大减弱的效果越强,会导致画面畸变大,视场角变大。过大会形成枕形失真。 |
||
< 0 |
适用于减弱枕形失真的矫正力度。
绝对值越大减弱的效果越强,会导致画面畸变大,视场角变大。过大会形成桶形失真。 |
||
FocalRatio |
改变虚拟焦距。
通过改变该参数可以达到调整图像到投影面的距离,达到推/拉图像的效果,不会损失视野。 如果设置为0则会生效为10000;如果超过范围则等于边界值。 |
(0,50000] | |
= 10000 | 不进行矫正力度的调整 | ||
> 10000 | 数值越大,画面越平滑曲率越小 | ||
< 10000 | 数值越小,画面越弯曲曲率越大 | ||
CropMode |
对输出图像进行无效区域检测并裁剪,以剔除无效区域。
若输出图像全为无效区域时该值为非0将会报错,所以可先配置其它参数,待确认输出图像符合预期后后再根据该需要配置该参数。 |
0,1,2 | |
0 | 不进行无效区域检测,按照原始输出图像输出 | ||
1 |
使用画面最大有效区域,拉伸形成和原始输出图像相同的宽高比例。
此方式能获得最大的有效区域但画面可能会形变。 |
||
2 |
保持和原始输出图像的宽高比例,去框出最大有效区域,然后再放大到输出图像大小。
此方式能保证画面不发生形变但可能会损失视野。 |
||
CalibInfo 参数 | 镜头信息 | ||
CalibPolyBin |
镜头畸变信息数据。
通过PC端LDC Tool生成,设置LDC通道属性时进行设置,该数据必须和实际使用的镜头想匹配。否则会影响畸变矫正的效果。 |
||
CenterXOffset
CenterYOffset |
CMOS中心点和镜头中心点的偏移量,可用于消除由于组装带来的镜头中心点和CMOS中心点带来的偏差。
单位:pixel |
配置超出图像范围会导致无有效区域输出。 | |
0 | 无偏移。 | ||
> 0 | 画面中心点位于图像中心点偏右/偏下。 | ||
< 0 | 画面中心点位于图像中心点偏左/偏上。 | ||
FishEyeRadius |
镜头半径,用来描述图像内整个有效画面的半径
|
和镜头畸变信息相匹配 |
2.2.6. 360度全景矫正效果示例¶
参数设置 | 矫正效果演示 | ||
---|---|---|---|
srcWidth | 1600 |
![]() 鱼眼输入图像 1600x1200 有效画面其相对图像的中心点靠上靠右,导致其上方缺失部分内容 |
|
srcHeight | 1200 | ||
MountMode | 0 | ||
CenterXOffset | 75 | ||
CenterYOffset | -34 | ||
FishEyeRadius | 620 | ||
InRadius | 0 | ||
OutRadiusght | 600 | ||
FocalRatio | 10000 | ||
CropMode | 0 | ||
参数序列1 | |||
Pan | 0 |
将原图整个从里到外全部展开,形成全景展开图的效果。
其下边界存在模糊的一条对应于鱼眼镜头的边缘区域,原图上方缺失的部分在输出图像里显示为黑色无效区域。 |
|
ZoomH | 360 | ||
Tilt | 0 | ||
ZoomV | 600 | ||
|
|||
![]() 360全景矫正输出图像 3768x600 |
|||
参数序列2 | |||
Pan | 0 |
相对于参数序列1
减少ZoomV(远离鱼眼外边界),去除边缘模糊部分。 加大tilt(远离鱼眼中心点),去除上边界的拉伸较多的部分。 |
|
ZoomH | 360 | ||
Tilt | 100 | ||
ZoomV | 520 | ||
|
|||
![]() 360全景矫正输出图像 3768x420 |
|||
参数序列3 | |||
Pan | 90 |
仅对90度到270度之间的画面进行校正
对比与参数序列2的效果图可以看出,其左右两侧各被除去了1/4的画面,上下边界不变 |
|
ZoomH | 270 | ||
Tilt | 100 | ||
ZoomV | 520 | ||
|
|||
![]() 360全景矫正输出图像 1884x420 |
|||
参数序列4 | |||
Pan | 315 |
对315°到405°之间的画面进行展开,其等效于-45°到45°
(Pan)->(ZoomH) == (Pan-360°) ->(ZoomH-360°) |
|
ZoomH | 405 | ||
Tilt | 100 | ||
ZoomV | 600 | ||
|
|||
![]() 360全景矫正输出图像 942x600 |
2.2.7. 180度全景矫正效果示例¶
参数设置 | 矫正效果演示 | ||
---|---|---|---|
srcWidth | 1600 |
![]() 鱼眼输入图像 1600x1200 有效画面其相对图像的中心点靠上靠右,导致其上方缺失部分内容 |
|
srcHeight | 1200 | ||
MountMode | 2 | ||
CenterXOffset | 75 | ||
CenterYOffset | -34 | ||
FocalRatio | 10000 | ||
CropMode | 0 | ||
参数序列1 | |||
Pan | 0 | 不进行上下转动, 不进行视场角的缩放,效果图如下。 | |
Tilt | 0 | ||
ZoomH | 100 | ||
ZoomV | 100 | ||
FishEyeRadius | 620 | ||
|
|||
![]() 1600x1200 |
|||
参数序列2 | |||
Pan | 0 | 相对于参数序列1,减少了FishEyeRadius的数值,将模糊的边界图像去掉,提升效果 | |
Tilt | 0 | ||
ZoomH | 100 | ||
ZoomV | 100 | ||
FishEyeRadius | 580 | ||
|
|||
![]() 1600x1200 |
|||
参数序列3 | |||
Pan | 0 | 相对于参数序列2,改变了水平和垂直的视野,将边缘拉伸较大的地方去除,并根据图像效果调整二者的数值 | |
Tilt | 0 | ||
ZoomH | 120 | ||
ZoomV | 200 | ||
FishEyeRadius | 580 | ||
|
|||
![]() 1300x600 |
|||
参数序列4 | |||
Pan | 0 | 对比参数序列1,改变tilt,调整相机视角位置。向下转动50°, 形成俯视的视角 | |
Tilt | -50 | ||
ZoomH | 100 | ||
ZoomV | 100 | ||
FishEyeRadius | 620 | ||
|
|||
![]() 1600x1200 |
|||
参数序列5 | |||
Pan | -50 | 相较于参数序列4,再调整Pan参数, 使摄像机在向左转动50°,向下转动50°。 | |
Tilt | -50 | ||
ZoomH | 100 | ||
ZoomV | 100 | ||
FishEyeRadius | 620 | ||
|
|||
![]() 1600x1200 |
2.2.8. Normal矫正效果示例¶
参数设置 | 矫正效果演示 | ||
---|---|---|---|
srcWidth | 1600 |
![]() 鱼眼输入图像 1600x1200 有效画面其相对图像的中心点靠上靠右,导致其上方缺失部分内容。 |
|
srcHeight | 1200 | ||
MountMode | 2 | ||
CenterXOffset | 75 | ||
CenterYOffset | -34 | ||
Rotate | 0 | ||
CropMode | 0 | ||
参数序列1 | |||
Pan | 0 | 不进行上下转动, 不进行视场角的缩放。 | |
Tilt | 0 | ||
ZoomH | 100 | ||
|
|||
![]() 1600x1200 |
|||
参数序列2 | |||
Pan | 0 | 相较于参数序列1,改变了tilt的值,使相机向下转动50°。 | |
Tilt | -50 | ||
ZoomH | 100 | ||
|
|||
![]() 1600x1200 |
|||
参数序列3 | |||
Pan | -50 |
相较于参数序列2,改变了Pan的值。
使相机向左转动50°,向下转动50°。 |
|
Tilt | -50 | ||
ZoomH | 100 | ||
|
|||
![]() 1300x600 |
|||
参数序列4 | 相较于参数序列1,改变了ZoomH的值。 | ||
Pan | 0 | ||
Tilt | 0 | ||
ZoomH | 200 |
![]() |
|
ZoomH | 100 |
![]() |
|
ZoomH | 50 |
![]() 上方黑色弧形区域为无效区域,是因为有部分内容超出原图有效区域。 |
|
参数序列5 | |||
Pan | 0 | 修改Rotate的值,模拟摄像头旋转。在壁装场景,矫正画面一定是正的,且在Pan和Tilt都为0时没有效果。 | |
Tilt | 32 | ||
MountMode | 2 | ||
Rotate | 0 |
![]() |
|
Rotate | 90 |
![]() |
|
Rotate | 270 |
![]() |
|
参数序列6 | |||
Pan | 0 | 相较于参数序列5,将摄像头改成地装。 | |
Tilt | 32 | ||
MountMode | 0 | ||
Rotate | 0 |
![]() |
|
Rotate | 90 |
![]() |
|
Rotate | 270 |
![]() |
2.2.9. 其它参数效果示例¶
![]() 输入图像 |
||
CropMode = 0
按矫正后原始图像输出 |
![]() 输出图像 |
|
CropMode = 1
框出最大有效区域,并自适应缩放到输出图像大小 |
![]() crop 示意图 |
![]() 输出图像 |
CropMode = 2
按输出图像比例框住有效区域,然后等比放大到输出图像大小 |
![]() crop 示意图 |
![]() 输出图像 |
FocalRatio = 2000 |
![]() |
FocalRatio = 10000 |
![]() |
FocalRatio = 20000 |
![]() |
OutRotate = 0 |
![]() |
OutRotate = 45 |
![]() |
DistortionRatio = -10 |
![]() |
DistortionRatio = 0 |
![]() |
DistortionRatio = 10 |
![]() |
2.3. 映射表模式¶
2.3.1. 模式说明¶
映射表模式(convert displacement map to ldc bin [MAP2BIN]), 为了方便用户直接使用LDC硬件实现客制化的LDC功能的特殊模式。
当 Region 处于该模式下,MI LDC模块将会接收用户设置下来的输入输出图像映射数据(displacement map),根据用户的map转化为LDC硬件能处理的数据,交由硬件完成输出图像的构建。
映射表(displacement map):存储输出图像到输入图像的像素坐标映射,分为xmap和ymap,分别记录每个输出图像像素坐标(xout,yout)对应的输入图像像素坐标(xin,yin)。
2.3.2. 流程框图¶
|
2.3.3. 参数配置说明¶
参数 | 说明 | 参数范围 |
---|---|---|
Grid |
为了提高处理性能,map通常都是进行了降采样之后的,用于减少运算量,map里并非将每个像素点都包含在内,而是在硬件处理时进行插值恢复。所以引入了Grid的参数,用于描述采样的间隔(精度)。
比如一张3840x2160的输出图像,其原始map为3840x2160,在Grid = 16的情况下map宽高降低为241x136 |
1,2,4,8,16,32,64 |
Xmap
Ymap |
分为 x 坐标映射表和 y 坐标映射表。按照采样点分别存储其对应坐标的横纵坐标值。
输出图像中P点(X~out~, Y~out~),其对应原图的坐标点为P1 (X~in~, Y~in~),map buff存储的坐标关系如: 这里由于进行了降采样,所以并非每个点都需要进行计算,只需按照Grid步进进行计算即可,如果末尾的像素点无法除尽Grid,则需根据实际情况,进行扩展或者截断到实际边界,区别可见2.3.6节 项 1 所示。 |
NA |
XmapSize
YmapSize |
Map数据buff里每个元素数据类型为float类型, 大小为四字节。
|
NA |
2.3.4. Map生成示例¶
输入输出1:1 的Map示例:
处理的输入图像为1920x1080, Grid为16,其宽度1080/16 = 67.5 无法除尽,将其截断到1080。Map宽高为121x69, 一个生成的示例如表 2-18所示
行/列 | 0 | 1 | 2 | … | 118 | 119 | 120 |
---|---|---|---|---|---|---|---|
0 | 0, 0 | 16, 0 | 32, 0 | …,0 | 1888,0 | 1904,0 | 1919,0 |
1 | 0,16 | 16,16 | 32, 16 | …,16 | 1888,16 | 1904,16 | 1919,16 |
2 | 0,32 | 16,32 | 32,32 | …,32 | 1888,32 | 1904,32 | 1919,32 |
… | 0,…. | 16,… | 32,… | ...,… | 1888,… | 1904,… | 1919,… |
… | 0, …. | 16,… | 32,… | ...,… | 1888,… | 1904,… | 1919,… |
66 | 0,1056 | 16,1056 | 32,1056 | …,1056 | 1888,1056 | 1904,1056 | 1919,1056 |
67 | 0,1072 | 16,1072 | 32,1072 | …,1072 | 1888,1072 | 1904,1072 | 1919,1072 |
68 | 0,1079 | 16,1079 | 32,1079 | …,1079 | 1888,1079 | 1904,1079 | 1919,1079 |
2.3.5. 参数配置示例及效果¶
如下为一个做EIS防抖,右下角带有额外细碎变化的map。
其所需设置的参数表 2-19所示:
参数 | 说明 | |
---|---|---|
RegionMode | 4 | MI_LDC Region所使用的模式 |
srcWidth | 1920 |
输入图像尺寸
单位: pixel |
srcHeight | 1080 | |
dstWidth | 1920 |
输出图像尺寸
单位: pixel |
dstHeight | 1080 | |
Grid | 16 | 采样精度 |
XmapSize | 33396 |
Map所需的内存大小
单位: Bytes |
YmapSize | 33396 |
其xymap的映射图示和将其运用在板端的输入输出图像比对如表 2-20 所示。
![]() Xmap 映射图 |
![]() Ymap 映射图 |
![]() 输入输出网格图 |
|
![]() 输入图像 |
![]() 输出图像 |
![]() 输入输出比对图 |
2.3.6. Map 规范及限制¶
-
如果图像的宽高不能被Grid整除则会出现以下情况。 如果map按照Grid将其扩展的话,则会导致黑边产生
SrcImage: 1920x1080 Map range: 1920x1088 输入图像
输出图像
如果截断到边界,则会产生边界处拉伸导致缺失一部分像素的问题。
SrcImage: 1920x1080 Map range: 1920x1080 输入图像
输出图像
-
对于map复杂度的限制:
因为硬件限制,无法一次处理完整幅图像,所以需要将图像划分成多个区域依次处理。而划分这个处理区域的限制如下:
2.4. 投影变换函数¶
2.4.1. 模式说明¶
投影变换函数(Projection Mapping Function[PMF])模式,通过该模式可根据用户配置的投影变换矩阵完成对于图像的平面几何变换,生成输出图像。
常见的平面几何变换类型有:平移变换、旋转变换、剪切(错切)变换、缩放变换、透视变换。每种变换均可进行相互叠加使用。叠加的过程就是矩阵点乘。
图 2-3 常见投影变换示意图
刚性变换:平移变换、旋转变换
线性变换:缩放变换、剪切(错切)变换、旋转变换
仿射变换:线性变换、刚性变换
投影变换:仿射变换、透视变换
输出图像生成过程是将像素坐标和指定的3X3矩阵进行运算,获得其在输入图像中对应的坐标点。 式子如下:
2.4.2 流程框图¶
|
2.4.3 矩阵使用说明¶
该矩阵 (m33) 描述的是从输出坐标到输入坐标的映射关系。矩阵中各项与投影变换的对应关系如图 2-5所示。 不同的投影变换之间,项的数值会相互影响,所以一般都需要通过工具计算得到变换矩阵, 只有简单的单一变换可通过手动调整来实现。
图 2-5 m33 项和效果关系示意图
|
矩阵的计算方法如下:
矩阵的计算按照需求可分为如下几种类型,注意这里提供的矩阵模板是从输入图到输出图(xy->uv)的映射,根据此模板直接计算出来的结果需要求其逆矩阵(uv->xy),方可作为API的m33~origin的值。
1. 平移矩阵模板: 沿着原点向右平移Δy(右为正向),向下平移Δy(下为正向)。
|
2. 旋转矩阵模板:围绕原点(输入图左上角)逆时针旋转θ度。
|
3. 缩放矩阵模板:将图像横向缩放Scalex倍、纵向缩放Scaley倍(可实现镜像、翻转效果)。
|
4. 剪切矩阵模板:将图像沿着横轴倾斜α度,沿着纵轴倾斜β度。
|
5. 透视矩阵需要通过目标平面的四个点和在当前图像中的坐标,求出变换矩阵。
m33_origin矩阵(uv->xy)的使用需要经过量化和定点化两个步骤,操作如下:
1.量化:
其中m_8为量化因子,求出初始的M33后需要每个项除以m_8得出量化后的M33'。
|
2.定点化:
为了方便使用需要将每个m33进行定点化,将其统一转化为精度为1/(225) 的定点数进行表示,定点化规则如下,将每项乘 225即可。
|
2.4.4 参数配置说明¶
参数 | 说明 | 参数范围 | |
---|---|---|---|
as64PMFCoef |
1、用于存储量化+定点化后的m33矩阵
2、m33内的元素m_n按照下标 n 在 as64PMFCoef 里进行存储 |
m_0 | [-67108864,67106816] |
m_1 | [-67108864,67106816] | ||
m_2 | [-137438963472, 137434759168] | ||
m_3 | [-67108864,67106816] | ||
m_4 | [-67108864,67106816] | ||
m_5 | [-137438963472, 137434759168] | ||
m_6 | [-32768,32767] | ||
m_7 | [-32768,32767] | ||
m_8 | 33554432 |
2.4.5 参数配置示例¶
PMF的一个实例M33_origin(uv->xy)到API参数的计算过程为:
最终设置到接口里的参数as64PMFCoef即为:
2.4.6 单一变换示例¶
![]() 输入图像800x800 |
|
平移变换 | |
---|---|
向右平移200pixel,向下平移100pixel
Origin m33 (uv->xy): as64PMFCoef: |
![]() |
旋转变换: | |
围绕原点逆时针旋转10°
Origin m33 (uv->xy): as64PMFCoef: |
![]() |
缩放变换 | |
横轴缩小为原来的0.5,纵轴扩大为原来的1.5
Origin m33 (uv->xy): as64PMFCoef: |
![]() |
剪切(错切)变换 | |
横轴方向剪切(错切)15°,纵轴方向剪切(错切)5°
Origin m33 (uv->xy): as64PMFCoef: |
![]() |
透视变换 | |
将倾斜棋盘格平面恢复到垂直
图像四个角点坐标为:(244,139),(770,141),(765,613),(213,605) 映射到新的输出平面上的四个点为:(244,139),(770,139),(770,599),(244,599) Origin m33 (uv->xy): as64PMFCoef: |
![]() |
2.4.7 组合变换计算示例¶
一个复杂的效果可以拆解使用多种变换组合,单种效果的叠加需要使用矩阵的点乘进行运算获得。其使用需要分为下面几个步骤:
1. 确认目标效果,即最后实现的效果是怎么样的,将其拆解为子步骤。每个步骤可用上面所列的基本矩阵完成;
2. 子步骤的矩阵分别生成;
3. 根据子步骤逆序
进行矩阵的点乘运算,(矩阵乘法不适用交换律,不可随意调换顺序进行!);
4. 将输出m33求其逆矩阵(LDC需要输出图到输入图的映射矩阵),将其变为nv->xy的m33;
5. 按照上面参数配置示例的方案将其进行量化和定点化的处理后成为LDC API可使用的参数;
注意:
1. 关于矩阵运算在图像中的两种"视角"(坐标系不变和图像不变)。我们使用坐标系不变的视角去理解和拆分子步骤;
2. 所有的操作都是以坐标原点(图像左上角),所以想要实现诸如依某点为中心的操作,都需要搭配平移矩阵进行实现,使用平移矩阵将操作的中心点移动到原点,操作完毕后再移动回去;
案例1:
实现将图像进行中心旋转45度:需要使用平移矩阵和旋转矩阵。效果的叠加顺序为:
step0. 先将图像中心点移动到坐标原点(旋转矩阵依照原点为旋转中心);
step1. 将图像逆时针旋转45°;
step2. 将图像中心点移动回坐标中心点。
其相关矩阵如下:
m33_origin_comb (xy->uv)
step2 · step1 · step0
m33_origin (xy->uv)
m33_origin (xy->uv) 计算得出 m33_api (uv->xy)

围绕中心旋转45度输入输出效果
案例2:
将图像进行镜像处理:需要使用缩放矩阵和平移矩阵。效果的叠加顺序为:
step0. 将图像使用缩放矩阵将图像变为 x=-x, y=y,形成依Y轴为对称轴的镜像效果;
step1. 将图像向右移动到坐标系内。
其相关矩阵如下:
m33_origin_comb (xy->uv)
(step1 · step0)^-1 -> 量化和定点化:
m33_origin (xy->uv) 计算得出 m33_api (uv->xy)

镜像效果输入输出图
2.5. LDC 旁路模式¶
2.5.1. 模式说明¶
旁路模式(No Transformation),工作在此模式下,当前Region将不会进行畸变校正的处理,包括镜头畸变校正,映射表等方式,但支持对输出图像做旋转和自适应缩放(当输出和输入分辨率不一致的时候将输入进行缩放到输出的分辨率)的操作。
2.5.2. 流程框图¶
|
2.5.3. 参数配置说明¶
旁路模式参数 | 参数说明 | 参数范围 | |
---|---|---|---|
OutRotate |
将输出图像进行中心旋转
单位:角度 |
[0,360] | |
= 0 | 不进行旋转 | ||
> 0 | 逆时针旋转,360为一圈 |
2.5.4. 参数效果示例¶
![]() 输入图像1600x1200 |
|
自适应缩放到输出图像 |
![]() 输出图像1920x1080 |
OutRotate = 45 |
![]() 输出图像1600x1200 |
3. 标定工具¶
请查看 CV Tool 使用文档。