一种HUD图像矫正的自适配方法与流程
本发明涉及hud图像矫正的技术领域,特别涉及一种hud图像矫正的自适配方法。
背景技术:
hud成像原理是通过背光源将lcd屏幕上的显示内容,经过hud内部的大小反射镜系统投射到汽车的前挡风玻璃上。因为大小反射镜加工工艺以及hud安装时差异,导致最终显示在前挡风玻璃上的虚像存在畸变,影响用户的体验。
为了解决hud图像畸变的问题,目前的行业内普遍做法是,整车下线时通过在hud图像中心眼盒位置进行畸变矫正生成矫正数据,并且该矫正数据在hud图像所有位置都适用,这样就导致hud只能在特定的图像高度范围内显示出人眼不可识别的无畸变的图像,而在其余图像高度hud显示效果仍然存在畸变,并且当hud图像高度远离中心眼盒位置时,hud图像畸变愈加严重,用户看到的显示效果愈差。
技术实现要素:
为克服现有技术中存在的hud图像畸变在不同的hud图像高度表现不一致,特别当hud图像高度远离特定位置如:中心眼盒位置时,hud图像畸变愈加严重,图像显示效果愈差的问题,本发明提供了一种hud图像矫正的自适配方法。
具体技术方案如下:
一种hud图像矫正的自适配方法,包括以下步骤
步骤1:获取上、中、下眼盒的矫正数据,并进行预处理;
步骤2:获取hud当前的位置;
步骤3:根据hud位置计算对应的矫正数据;
步骤4:使用矫正数据对图像进行矫正;
步骤5:输出图像到lcd驱动。
优选的,所述步骤1具体包括以下步骤:
步骤11:根据特征点点坐标,将上、中、下三个眼盒放置在指定位置,cpu通过flash驱动在外部flash预定义的存储地址读取上、中、下眼盒的矫正数据,存储在flash中的图像矫正数据是hud产品下线时,在上、中、下三个眼盒位置进行图像矫正时,由诊断设备发送给hud的矫正数据;
步骤12:对读取到的矫正数据进行校验,当且仅当上、中、下眼盒的矫正数据都通过校验时,flash中的矫正数据才是可用数据,如果flash中的矫正数据可用,那么选择flash中的保存的矫正数据作为矫正数据源,否则选择rom中预置的默认矫正数据作为矫正数据源;
步骤13:插值到非上、中、下眼盒位置,分别得到位置1、2、3、4的矫正数据,上、中、下眼盒及位置1、2、3、4将图像整个调节范围均分成7个部分;
步骤14:将预处理后的矫正数据保存在cpu的ram中。
优选的,所述步骤12中校验包括以下步骤:
步骤121:使用crc32算法,进行数据完整性校验,将读出的矫正数据计算出的crc32与从flash中读取的crc32进行比较,如果不一致说明数据被破坏,不可用;
步骤122:当数据完整性校验通过时,进行数据合法性校验,数据合法性校验为计算每个矫正坐标最大值或最小值是否超出了预设的门限值,如果超出则数据不可用。
优选的,所述步骤13中的插值计算公式为:f(x,d)=f(x,d)+δ,其中f(x,d)为当前位置距离中心眼盒位置距离为d时,所求矫正坐标点水平方向上某点x的理论值,δ为实际偏差;f(x,d)为根据理论位置及实际偏差计算出的实际位置,同样对于垂直方向上某点y也有相同的公式f’(y,d)=f’(y,d)+δ’;对于f(x,d),f’(y,d)光学设计阶段可以给出,而δ及δ’可以根据上、中、下眼盒的矫正数据计算得出。
优选的,所述步骤2具体为:根据车身can总线输入的hud高度调节信号,hud进行高度调节,并实时反馈出自身所处高度。
优选的,所述步骤3具体为:图像矫正数据处理模块根据hud当前的高度计算hud所处的位置区间,cpu根据hud当前所处的位置区间,切换对应的矫正数据,并输入到图像矫正模块。
优选的,所述步骤4具体包括以下步骤:
步骤41:将输入的矫正数据插值为适应lcd显示屏480行*240列尺寸的矫正参数,具体的为将25行*11列,行间距为18,列间距为12的矫正数据,插值为480行*240列,行列间距都为1的矫正数据,插值完成的图像矫正数据存放于图像矫正模块专用的warpingframebuffer中,且插值方法为双线性插值;
步骤42:通过图像生成模块或图像捕获模块输入到图像矫正模块的图像数据,保存在inputframebuffer中,且该buffer为双buffer。
优选的,步骤5具体为:lcd驱动读取outputframebuffer中的图像数据,输出给lcd屏幕,lcd屏幕显示矫正后的图像。
本发明与现有技术相比具有以下有益效果:
(1)本发明提供了一种hud图像矫正的自适配方法,该方法能根据通过车身can总线输入给hud的图像高度,自动适配hud图像矫正数据,对hud显示图像进行矫正,使hud显示图像在整个眼盒区域内人眼都观测不到图像畸变。
附图说明
图1为本发明一种hud图像矫正的自适配方法中的矫正数据预处理的流程图;
图2为本发明一种hud图像矫正的自适配方法中的实时矫正流程图;
图3为本发明中hud的图像矫正自适应系统的系统框图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
本申请公开了一种hud图像矫正的自适配方法基于hud的图像矫正自适应系统完成,如图3所示,该系统从硬件角度分为以下几个模块:
1.can收发器模块,can收发器模块的作用是将can总线的差分信号转换为ttl电平,从而和微控制器中的can模块输入电平匹配,使得mcu中的can模块可以正确的从can总线上接收数据,以及发送数据到can总线上。
2.cpu,cpu模块接收来自can总线的车速、导航等车辆状态信息以及其他can网络节点发送给hud的高度调节信息;数据处理模块将车辆状态信息处理后,送入图像生成模块生成相关图像;同时数据处理模块将hud高度调节信息处理为图像矫正数据处理模块所需的矫正数据索引号;图像矫正数据处理模块根据索引值输出对应的矫正数据给图像矫正模块,该模块使用矫正数据和图像生成模块输出的图像或图像捕获模块捕获到的外部输入图像最终生成用于hud显示的图像。
flash驱动用于对外部flash模块读写操作,以存储或读取相关图像矫正数据和图像切图数据。
lcd驱动用于将图像显示信息转换为特定时序的能被lcd模块电平信号。
3.flash模块,flash模块用于存储图像矫正数据及图像切图数据。
4.lcd模块,lcd模块用于图像显示单元,显示cpu模块经过lcd驱动输出的图像信息。
本申请公开了一种hud图像矫正的自适配方法,包括矫正数据预处理流程和实时矫正流程,如图1所示为矫正数据预处理流程,如图2所示为实时矫正流程,该自适配方法具体包括以下步骤,
步骤1:获取上、中、下眼盒的矫正数据,并进行预处理;具体包括,
步骤11:根据特征点点坐标,将上、中、下三个眼盒放置在指定位置,cpu通过flash驱动在外部flash预定义的存储地址读取上、中、下眼盒的矫正数据,存储在flash中的图像矫正数据是hud产品下线时,在上、中、下三个眼盒位置进行图像矫正时,由诊断设备发送给hud的矫正数据;这三组矫正数据能保证hud在上、中、下眼盒图像畸变最小。
步骤12:对读取到的矫正数据进行校验,当且仅当上、中、下眼盒的矫正数据都通过校验时,flash中的矫正数据才是可用数据,如果flash中的矫正数据可用,那么选择flash中的保存的矫正数据作为矫正数据源,否则选择rom中预置的默认矫正数据作为矫正数据源,rom中预置的上、中、下眼盒位置是光学仿真后的参数,预置参数能保证flash中的数据不可用时,最大限度的保证图像显示质量。
优选的,步骤12中校验包括以下步骤:
步骤121:使用crc32算法,进行数据完整性校验,将读出的矫正数据计算出的crc32与从flash中读取的crc32进行比较,如果不一致说明数据被破坏,不可用;
步骤122:当数据完整性校验通过时,进行数据合法性校验,数据合法性校验为计算每个矫正坐标最大值或最小值是否超出了预设的门限值,如果超出则数据不可用。
步骤13:插值到非上、中、下眼盒位置,分别得到位置1、2、3、4的矫正数据,上、中、下眼盒及位置1、2、3、4将图像整个调节范围均分成7个部分;插值出位置1、2、3、4矫正数据的目的为了保证显示效果在hud图像调节过程中的平滑;当然是否只需要上、中、下眼盒的矫正数据不需要再进行插值或插值几组位置的矫正数据这都与hud光学系统以及调节范围有关。本申请中优选为中心眼盒和下眼盒矫正数据插值出位置1、2的矫正数据;使用中心眼盒和上眼盒插值出位置3、4的矫正数据。
优选的,步骤13中的插值计算公式为:f(x,d)=f(x,d)+δ,其中f(x,d)为当前位置距离中心眼盒位置距离为d时,所求矫正坐标点水平方向上某点x的理论值,δ为实际偏差;f(x,d)为根据理论位置及实际偏差计算出的实际位置,同样对于垂直方向上某点y也有相同的公式f’(y,d)=f’(y,d)+δ’;对于f(x,d),f’(y,d)光学设计阶段可以给出,而δ及δ’可以根据上、中、下眼盒的矫正数据计算得出。
步骤14:将预处理后的矫正数据保存在cpu的ram中。
步骤2:获取hud当前的位置;优选的,步骤2具体为:根据车身can总线输入的hud高度调节信号,hud进行高度调节,并实时反馈出自身所处高度。
步骤3:根据hud位置计算对应的矫正数据;优选的,步骤3具体为:图像矫正数据处理模块根据hud当前的高度计算hud所处的位置区间,其中,位置区间为滞回区间,防止图像高度在某个高度请求点左右频繁波动时,造成的不必要的矫正数据的切换,浪费系统资源cpu根据hud当前所处的位置区间,切换对应的矫正数据,并输入到图像矫正模块。
步骤4:使用矫正数据对图像进行矫正;优选的,步骤4具体包括以下步骤:
步骤41:将输入的矫正数据插值为适应lcd显示屏480行*240列尺寸的矫正参数,优选的,本申请中具体的为将25行*11列,行间距为18,列间距为12的矫正数据,插值为480行*240列,行列间距都为1的矫正数据,插值完成的图像矫正数据存放于图像矫正模块专用的warpingframebuffer中,且插值方法为双线性插值。
双线性插值公式为:
u=((x2-x)*(y2-y)*dx(x1,y1)+(x-x1)*(y2-y)*dx(x2,y1)+(x2-x)*(y-y1)*dx(x1,y2)+(x-x1)*(y-y1)*dx(x2,y2)/((x2-x1)*(y2-y1))+x;
v=((x2-x)*(y2-y)*dy(x1,y1)+(x-x1)*(y2-y)*dy(x2,y1)+(x2-x)*(y-y1)*dy(x1,y2)+(x-x1)*(y-y1)*dy(x2,y2)/((x2-x1)*(y2-y1))+y;
已知480*240屏幕上未经矫正处理点(x,y)邻域四个特征点坐标(x1,y1),(x2,y2),(x1,y2),(x2,y2)及对应的相对于矫正数据对应特征点的x,y方向上的偏移量{dx(x1,y1),dy(x1,y1)},{dx(x2,y1),dy(x2,y1)},{dx(x1,y2),dy(x1,y2)},{dx(x2,y2),dy(x2,y2)},(x1,y1),(x2,y2),(x1,y2),(x2,y2)四个点不存在重合情况即(x2-x1)*(y2-y1)≠0;那么对于该(x,y)点可以根据如上插值公式计算出矫正后点的坐标(u,v)。
备注:对于特征点任意特征点(x,y),其经过矫正后的点在矫正数据中已知为(u,v),那么(x,y)点的x,y方向上的偏移量为:dx(x,y)=u-x,dy(x,y)=v-y;因此{dx(x1,y1),dy(x1,y1)},{dx(x2,y1),dy(x2,y1)},{dx(x1,y2),dy(x1,y2)},{dx(x2,y2),dy(x2,y2)}可知。
步骤42:通过图像生成模块或图像捕获模块输入到图像矫正模块的图像数据,保存在inputframebuffer中,且该buffer为双buffer。当inputframebuffer双buffer中任意一个framebuffer接收完一个完整的图像帧后,那么该framebuffer图像数据可用另一个framebuffer变为空闲,用于接收输入的图像数据,将该framebuffer中的图像像素点按照warpingframebuffer中的矫正数据进行像素位置偏移,并将矫正后的图像数据输出到outputframebuffer。
步骤5:输出图像到lcd驱动。优选的,步骤5具体为:lcd驱动读取outputframebuffer中的图像数据,输出给lcd屏幕,lcd屏幕显示矫正后的图像。
以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除