具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中畸变参数的寻优装置所属终端的结构示意图。
本发明实施例终端可以是PC,也可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及畸变参数的寻优程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的畸变参数的寻优程序。
在本实施例中,畸变参数的寻优装置包括:存储器1005、处理器1001及存储在所述存储器上并可在所述处理器上运行的畸变参数的寻优程序,其中:
处理器1001调用存储器1005中存储的畸变参数的寻优程序时,执行以下操作:
获取鱼眼图像对应的第一参数集组,其中,所述第一参数集组包括多组参数集;
按照第一预设顺序依次基于所述第一参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第一参数集组中的各个所述参数集对应的第一直线度误差;
基于所述第一参数集组中满足预设条件的第一直线度误差对应的参数集,生成所述鱼眼图像对应的第二参数集组,其中,所述第二参数集组包括多组参数集;
按照第二预设顺序依次基于所述第二参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第二参数集组中的各个所述参数集对应的第二直线度误差;
获取所述第二直线度误差中最小的直线度误差对应的参数集,并将获取到的参数集中的畸变参数作为所述鱼眼图像的目标畸变参数。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
按照第一预设规则获取所述鱼眼图像的第一特征点集;
按照第一预设顺序依次基于第一参数集组中的参数集,及获取到的所述第一特征点集计算目标图像的第二特征点集;
基于计算得到的所述第二特征点集,计算所述第一直线度误差。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
获取所述目标图像的预设中心点坐标;
按照第一预设顺序依次基于第一参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第二特征点集。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
按照第一预设规则计算所述第二特征点集对应的各行的第一直线方程和各列的第二直线方程;
根据所述第一直线方程及所述第二特征点集中各个特征点的坐标计算行误差,并根据所述第二直线方程及所述第二特征点集中各个特征点的坐标计算列误差;
基于各个所述行误差及各个所述列误差计算所述第一直线度误差。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
按照第二预设顺序依次基于第二参数集组中的参数集,及所述第一特征点集计算目标图像的第三特征点集;
基于计算得到的所述第三特征点集,计算所述第二直线度误差。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
获取所述目标图像的预设中心点坐标;
按照第二预设顺序依次基于第二参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第三特征点集。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
基于所述鱼眼图像的中心坐标、畸变中心的调整范围,计算畸变中心坐标的取值范围;
基于所述鱼眼图像的参考半径和畸变半径的放缩系数,计算畸变半径的取值范围;
基于畸变中心坐标的取值范围、畸变半径的取值范围、第一调整步长,获取所述第一参数集组。
进一步地,处理器1001可以调用存储器1005中存储的畸变参数的寻优程序,还执行以下操作:
获取所述第一直线度误差中最小的前预设个数的直线度误差对应的参数集;
依次根据获取到的所述参数集及第二调整步长,生成所述第二参数集组。
本发明第一实施例提供一种畸变参数的寻优方法,参照图2,图2为本发明畸变参数的寻优方法第一实施例的流程示意图,所述畸变参数的寻优方法包括:
步骤S100,获取鱼眼图像对应的第一参数集组,其中,所述第一参数集组包括多组参数集;
鱼眼图像的畸变校正首先需要建立鱼眼镜头的几何模型,再根据几何关系进行平面透视投影校正。本实施例中采用的是等距投影模型,这种几何模型在镜头制造中使用得最广泛,也是进行鱼眼图像校正时效果较好的一种几何模型。由于本发明的鱼眼图像校正方法中采用的是等距投影模型,因此其畸变参数主要为鱼眼图像的畸变中心坐标和畸变半径,畸变中心坐标又可以细化为水平方向的X坐标和竖直方向的Y坐标。鱼眼图像对应的第一参数集组包括多组参数集,其中,每一组参数集都包括3种畸变参数,第一畸变参数是指在第一次确定畸变参数范围时所使用的畸变参数。
在本实施例中,可以按照预设规则设置畸变中心点坐标取值范围及畸变半径的取值范围,同时根据鱼眼图像的分辨率等参数设定一个第一调整步长,优选地,本实施例中的鱼眼图像分辨率为1280×720,因此将第一调整步长设置为10。其中,畸变中心点坐标取值范围及畸变半径的取值范围的计算公式分别为:
CenterX∈[ImgCenterX-Range,ImgCenterX+Range]
CenterY∈[ImgCenterY-Range,ImgCenterY+Range]
R∈[REFER_R*MinCoe,REFER_R*MaxCoe]
其中,Center X和Center Y为所求的畸变中心X坐标和Y坐标,R为所求的畸变半径,ImgCenterX和ImgCenterY为待校正鱼眼图像的中心点X坐标和Y坐标,REFER_F为用户根据待校正鱼眼图像的大小所设置的参考半径,优选地,本实施例中的待校正鱼眼图像的分辨率为1280×720,因此将参考半径设置为600。Range为畸变中心的调整范围,优选地,本实施例中的Range取值为100。MaxCoe和MinCoe分别为畸变半径的放缩系数,优选地,本实施例中的MaxCoe和MinCoe分别为1.2和0.8。例如,一个分辨率为1280×720的待校正鱼眼图像的中心坐标为(640,360),畸变中心的调整范围是100,可以得到畸变中心点X坐标的取值范围是(540,740),畸变中心点Y坐标的取值范围是(260,460);参考半径的取值为600,再分别乘以放缩系数可以得到畸变半径的取值范围是(480,720)。由于在本实施例中,调整步长的取值为10,根据调整步长遍历三个第一畸变参数的取值范围可以得到他们的取值集合,分别是畸变中心点X坐标的取值集合,即CenterX∈{540,550,560...730,740},畸变中心点Y坐标的取值集合,即CenterY∈{260,270,280...450,460},以及畸变半径R的取值集合,即R∈{480,490,500...700,710,720}。
之后,对上述三个第一畸变参数的取值集合中的元素进行组合操作,使得其中每一个元素都能够跟另外两个集合中的元素进行所有可能的组合,其中,总的组合数目等于畸变中心点X坐标取值集合中的元素个数乘以畸变中心点Y坐标取值集合中的元素个数乘以畸变半径R取值集合中的元素个数。例如,畸变中心点X坐标的取值集合中包含2个元素,分别是[1,2],畸变中心点Y坐标的取值集合中包含2个元素,分别是[3,4],畸变半径的取值集合中包含2个元素[5,6],则在对该第一畸变参数的取值集合进行排列组合之后,可以得到的所有可能的畸变参数的组合包括:(1,3,5),(2,3,5),(1,4,5),(2,4,5),(1,3,6),(2,3,6),(1,4,6),(2,4,6)。将所有第一畸变参数的取值集合进行排列组合之后得到的所有可能的组合,即为第一参数集组,其中包含多组参数集,每一个参数集包含三个参数,分别是畸变中心点X坐标,畸变中心点Y坐标以及畸变半径R。
步骤S200,按照第一预设顺序依次基于所述第一参数集组中的参数集及所述鱼眼图像的第一特征点集,计算所述第一参数集组中的各个所述参数集对应的第一直线度误差;
本实施例只能够,通过对待校正的鱼眼图像上的棋盘布角点进行标定的方式得到第一特征点集。优选地,在本实施例中采用黑白棋盘标定的方式对待校正鱼眼图像上的特征点集进行标定并确定为第一特征点集。在待校正鱼眼图像上可以获取到M行N列特征点集{(uij,vij)},0≤i<M,0≤j<N,其中uij为该点在鱼眼图像上的横坐标,vij为该点在鱼眼图像上的纵坐标。
处理器会按照第一预设顺序依次从第一参数集组中选出所有参数集,基于参数集计算第一特征点集对应的第二特征点集。第一预设顺序是指从畸变中心点X坐标的取值集合中按照从小到大的顺序取出一个值之后,再依次从畸变中心点Y坐标的取值集合以及畸变半径R的集合中按照从小到大的顺序取出一个值进行组合生成一个第一参数集组中的参数集,直到取完所有可能的情况,容易理解,第一畸变参数中的三个参数均可采用从大到小的顺利或从小到大的顺利进行取值,因此,第一预设顺序可以为上述三个参数取值顺序的任意组合,其过程与上述过程类似,在此不再赘述。对于一个特定的参数集(CenterX,CenterY,R),可以根据下面的公式计算出第一特征点集中的每一个点对应的第二特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点,(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第二特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
基于计算得到的第二特征点集,计算直线度误差。由于鱼眼图像中心的畸变相对最小,因此选取每一行的最中间两点可以确定M个直线方程fm(x),0≤m<M,基于该M个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的水平方向直线度误差:
同理,选取每一列最中间两点可以确定N个直线方程fn(x),0≤n<N,基于该N个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的竖直方向直线度误差:
基于上述水平方向的直线度误差和竖直方向的直线度误差,可以按照下述公式得到总的直线度误差:
Error=Errorhor+Errorver
计算得到的总的直线度误差即为该特定参数集的直线度误差。对于第一参数集组中的任意一个参数集,可以按照上述步骤和公式计算得到对应的第一直线度误差。
步骤S300,基于所述第一参数集组中满足预设条件的第一直线度误差对应的参数集,生成所述鱼眼图像对应的第二参数集组,其中,所述第二参数集组包括多组参数集;
在得到第一参数集组中的所有参数集对应的第一直线度误差组之后,对其进行排序,输出最小的前Z个直线度误差对应的参数集。优选地,本实施例中在排序结束之后输出直线度误差最小的三组参数集,之后按照预设规则对其进行重新调整,从而获取新的参数集的取值范围。在本实施例中,用户可以按照预设公式设置参数集中的畸变中心点坐标及畸变半径的调整范围,同时设定一个第二调整步长,优选地,本实施例中的第二调整步长设置为1。预设规则主要包括3个公式:
CenterX∈[CenterXk-NEW_RANGE,CenterXk+NEW_RANGE]
CenterY∈[CenterYk-NEW_RANGE,CenterYk+NEW_RANGE]
R∈[R-NEW_RANGE,R+NEW_RANGE]
其中,NEW_RANGE为新的参数调整范围,优选地,本实施例中NEW_RANGE设置为10,即新的取值范围调整为10,每次参数调整步长为1,即PARAMS_STEP为1。第二畸变参数是指基于第一畸变参数获取到的畸变参数,包括畸变中心X坐标、畸变中心Y坐标以及畸变半径这3个参数。对于每一个参数集中的畸变参数,处理器可以在该畸变参数的调整范围内,按照第二调整步长依次从小到大对整个取值范围进行遍历。对于每一个畸变参数,取完所有可能的值之后,将所有取到的数值放入创建的集合中,生成所述鱼眼图像的第二畸变参数对应的第二参数集组,包括,畸变中心的X坐标的取值集合,畸变中心的Y坐标的取值集合,及畸变半径的取值集合。例如,直线度误差最小的前3个参数集组是(1,4,7),(2,5,8),(3,6,9),意味着最小的前三个直线度误差对应的畸变中心X坐标包括[1,2,3],畸变中心Y坐标包括[4,5,6],畸变半径R包括[7,8,9],对其中每一个取值都按照预设规则生成一个畸变参数的取值范围,畸变中心X坐标取1时可以生成[-9,11]的取值范围,同时由于第二调整步长取值为1,可以得到畸变中心X坐标取1时对应的畸变中心X坐标的取值范围{-9,-8,...,0,1,2,...,10,11},相应地,可以得到畸变中心X坐标取2时对应的畸变中心X坐标的取值范围{-8,-7,...,1,2,3,...11,12},畸变中心X坐标取3时对应的畸变中心X坐标的取值范围{-7,-6,...,2,3,4,...,12,13],汇总之后,第二畸变参数中畸变中心X坐标的取值集合为[-9,-8,...,0,1,2,3,4,...,12,13]。同理,可以得到第二畸变参数中畸变中心Y坐标的取值集合为[-6,-5,...,3,4,5,6,7,...,15,16],以及第二畸变参数中畸变半径R的取值集合为[-3,-2,...,6,7,8,9,10,...,18,19]。对该第一畸变参数的取值集合进行排列组合之后,可以得到的所有可能的畸变参数的组合即为第一参数集组,在本实施例中,一共有23×23×23组参数集,每一个参数集包含三个参数,分别是畸变中心点X坐标,畸变中心点Y坐标以及畸变半径R。
步骤S400,按照第二预设顺序依次基于所述第二参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第二参数集组中的各个所述参数集对应的第二直线度误差;
第二预设顺序是指从第二畸变参数包含的各个参数集合中按照从小到大的顺序依次选出一个值形成集合,具体地,首先从畸变中心点X坐标的取值集合中按照从小到大的顺序取出一个值之后,再依次从畸变中心点Y坐标的取值集合以及畸变半径R的集合中按照从小到大的顺序取出一个值进行组合生成一个第一参数集组中的参数集,直到取完所有可能的情况,容易理解,第一畸变参数中的三个参数均可采用从大到小的顺利或从小到大的顺利进行取值,因此,第一预设顺序可以为上述三个参数取值顺序的任意组合,其过程与上述过程类似,在此不再赘述按照预设方法在待校正鱼眼图像上获取M行N列第一特征点集{(uij,vij)},0≤i<M,0≤j<N,其中uij为该点在鱼眼图像上的横坐标,vij为该点在鱼眼图像上的纵坐标。
处理器会按照第二预设顺序依次从第二参数集组中选出所有参数集,对于一个特定的参数集,可以根据下面的公式计算出第一特征点集中的每一个点对应的第三特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点,(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第三特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
基于计算得到的第三特征点集,计算直线度误差。由于鱼眼图像中心的畸变相对最小,因此选取每一行的最中间两点可以确定M个直线方程fm(x),0≤m<M,基于该M个直线方程以及第三特征点集的所有元素点,可以按照下述公式算出所有点的水平方向直线度误差:
同理,选取每一列最中间两点可以确定N个直线方程fn(x),0≤n<N,基于该N个直线方程以及第三特征点集的所有元素点,可以按照下述公式算出所有点的竖直方向直线度误差:
基于上述水平方向的直线度误差和竖直方向的直线度误差,可以按照下述公式得到总的直线度误差:
Error=Errorhor+Errorver
计算得到的总的直线度误差即为该特定参数集的直线度误差。对于第一参数集组中的任意一个参数集,可以按照上述步骤和公式计算得到对应的第二直线度误差。
步骤S500,获取所述第二直线度误差中最小的直线度误差对应的参数集,并将获取到的参数集中的畸变参数作为所述鱼眼图像的目标畸变参数。
在得到第二参数集组中的所有参数集对应的第二直线度误差组之后,对其进行排序,输出最小的直线度误差对应的参数集。将该参数集包含的畸变参数确定为鱼眼图像的目标畸变参数。
本实施例中的畸变参数的寻优方法,通过获取鱼眼图像对应的第一参数集组,其中,所述第一参数集组包括多组参数集;然后按照第一预设顺序依次基于所述第一参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第一参数集组中的各个所述参数集对应的第一直线度误差;接着基于所述第一参数集组中满足预设条件的第一直线度误差对应的参数集,生成所述鱼眼图像对应的第二参数集组,其中,所述第二参数集组包括多组参数集;之后再按照第二预设顺序依次基于所述第二参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第二参数集组中的各个所述参数集对应的第二直线度误差;然后再获取所述第二直线度误差中最小的直线度误差对应的参数集,并将获取到的参数集中的畸变参数作为所述鱼眼图像的目标畸变参数,提高了对畸变参数的寻优精度及准确度,避免了现有方法依赖于鱼眼图像圆形轮廓的缺点,能够有效地利用直线约束生成校正效果比较符合期望的图像,为后续的图像配准提供了坚实的基础。
基于第一实施例,提出本发明畸变参数的寻优方法的第二实施例,参照图3,在本实施例中,步骤S200包括:
步骤S210,按照第一预设规则获取所述鱼眼图像的第一特征点集;
获取第一特征点集的方法是按照预设方法对待校正的鱼眼图像上的棋盘布角点进行标定,从而得到待校正鱼眼图像的特征点集。优选地,在本实施例中采用黑白棋盘标定的方法对待校正鱼眼图像上的特征点集进行标定并确定为第一特征点集。在待校正鱼眼图像上可以获取到M行N列特征点集{(uij,vij)},0≤i<M,0≤j<N,其中uij为该点在鱼眼图像上的横坐标,vij为该点在鱼眼图像上的纵坐标。
步骤S220,按照第一预设顺序依次基于第一参数集组中的参数集,及获取到的所述第一特征点集计算目标图像的第二特征点集;
处理器会按照第一预设顺序依次从第一参数集组中选出所有参数集,基于参数集计算第一特征点集对应的第二特征点集。第一预设顺序是指从畸变中心点X坐标的取值集合中按照从小到大的顺序取出一个值之后,再依次从畸变中心点Y坐标的取值集合以及畸变半径R的集合中按照从小到大的顺序取出一个值进行组合生成一个第一参数集组中的参数集,直到取完所有可能的情况,容易理解,第一畸变参数中的三个参数均可采用从大到小的顺利或从小到大的顺利进行取值,因此,第一预设顺序可以为上述三个参数取值顺序的任意组合,其过程与上述过程类似,在此不再赘述。对于一个特定的参数集(CenterX,CenterY,R),可以根据下面的公式计算出第一特征点集中的每一个点对应的第二特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第二特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
步骤S230,基于计算得到的所述第二特征点集,计算所述第一直线度误差。
基于计算得到的第二特征点集,计算直线度误差。由于鱼眼图像中心的畸变相对最小,因此选取每一行的最中间两点可以确定M个直线方程fm(x),0≤m<M,基于该M个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的水平方向直线度误差:
同理,选取每一列最中间两点可以确定N个直线方程fn(x),0≤n<N,基于该N个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的竖直方向直线度误差:
基于上述水平方向的直线度误差和竖直方向的直线度误差,可以按照下述公式得到总的直线度误差:
Error=Errorhor+Errorver
计算得到的总的直线度误差即为该特定参数集的直线度误差。对于第一参数集组中的任意一个参数集,可以按照上述步骤和公式计算得到对应的第一直线度误差。
本实施例中的畸变参数的寻优方法,通过按照第一预设规则获取所述鱼眼图像的第一特征点集;然后按照第一预设顺序依次基于第一参数集组中的参数集,及获取到的所述第一特征点集计算目标图像的第二特征点集;之后再基于计算得到的所述第二特征点集,计算所述第一直线度误差,提高了第二参数集组的准确度,进而能够提高第一直线度误差的准确性,进一步提高了畸变参数的寻优精度及准确度。
基于第二实施例,提出本发明畸变参数的寻优方法的第三实施例,参照图4,在本实施例中,步骤S220包括:
步骤S221,获取所述目标图像的预设中心点坐标;
由于鱼眼图像对应的校正后目标图像需要满足特定的尺寸要求,因此在畸变参数的寻优过程之前,可根据具体情况判断校正后的目标图像的尺寸,进而确定目标图像的预设中心点坐标。
步骤S222,按照第一预设顺序依次基于第一参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第二特征点集。
处理器会按照第一预设顺序依次从第一参数集组中选出所有参数集,基于参数集计算第一特征点集对应的第二特征点集。第一预设顺序是指从畸变中心点X坐标的取值集合中按照从小到大的顺序取出一个值之后,再依次从畸变中心点Y坐标的取值集合以及畸变半径R的集合中按照从小到大的顺序取出一个值进行组合生成一个第一参数集组中的参数集,直到取完所有可能的情况,容易理解,第一畸变参数中的三个参数均可采用从大到小的顺利或从小到大的顺利进行取值,因此,第一预设顺序可以为上述三个参数取值顺序的任意组合,其过程与上述过程类似,在此不再赘述。对于一个特定的参数集(CenterX,CenterY,R),可以根据下面的公式计算出第一特征点集中的每一个点对应的第二特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点,(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第二特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
本实施例中的畸变参数的寻优方法,通过获取所述目标图像的预设中心点坐标;然后按照第一预设顺序依次基于第一参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第二特征点集;基于第二参数集组中的每一个参数集计算出了第一特征点集对应的第二特征点集,能够准确的得到第二特征点集,提高了第二参数集组的准确度,进而能够提高第一直线度误差的准确性,进一步提高了畸变参数的寻优精度及准确度。
基于第二实施例,提出本发明畸变参数的寻优方法的第四实施例,参照图5,在本实施例中,步骤S230包括:
步骤S231,按照第二预设规则计算所述第二特征点集对应的各行的第一直线方程和各列的第二直线方程;
由于鱼眼图像中心的畸变相对最小,因此选取每一行的最中间两点可以确定M个直线方程fm(x),0≤m<M;同理,选取每一列最中间两点可以确定N个直线方程fn(x),0≤n<N。第二预设规则是指平面中两点可以确定一条直线的方程,由于该两点式方程为现有技术,在此不再赘述。
若该行或者列的特征点数为偶数个,选用最中间两点计算直线方程;若该行或者列的特征点数为奇数个,选用最中间一点两侧的特征点计算直线方程。
步骤S232,根据所述第一直线方程及所述第二特征点集中各个特征点的坐标计算行误差,并根据所述第二直线方程及所述第二特征点集中各个特征点的坐标计算列误差;
基于该M个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的水平方向直线度误差:
同理,基于该N个直线方程以及第二特征点集的所有元素点,可以按照下述公式算出所有点的竖直方向直线度误差:
步骤S233,基于各个所述行误差及各个所述列误差计算所述第一直线度误差。
基于上述水平方向的直线度误差和竖直方向的直线度误差,可以按照下述公式得到总的直线度误差:
Error=Errorhor+Errorver
计算得到的总的直线度误差即为该特定参数集的直线度误差。对于第一参数集组中的任意一个参数集,可以按照上述步骤和公式计算得到对应的第一直线度误差。
本实施例中的畸变参数的寻优方法,首先按照第二预设规则计算所述第二特征点集对应的各行的第一直线方程和各列的第二直线方程;然后根据所述第一直线方程及所述第二特征点集中各个特征点的坐标计算行误差,并根据所述第二直线方程及所述第二特征点集中各个特征点的坐标计算列误差;之后再基于各个所述行误差及各个所述列误差计算所述第一直线度误差。采用比较第一直线度误差的方法对所有参数集进行了第一次筛选,保留符合条件的参数集进行下一步筛选,提高了畸变参数的寻优效率,提高了第一直线度误差的准确性,进一步提高了畸变参数的寻优精度及准确度,节省了技术人员的时间以及处理器的有限资源。
基于第一实施例,提出本发明畸变参数的寻优方法的第五实施例,参照图6,在本实施例中,步骤S400包括:
步骤S410,按照第二预设顺序依次基于第二参数集组中的参数集,及所述第一特征点集计算目标图像的第三特征点集;
第二预设顺序是指从第二畸变参数包含的各个参数集合中按照从小到大的顺序依次选出一个值形成集合,具体地,首先从畸变中心点X坐标的取值集合中按照从小到大的顺序取出一个值之后,再依次从畸变中心点Y坐标的取值集合以及畸变半径R的集合中按照从小到大的顺序取出一个值进行组合生成一个第一参数集组中的参数集,直到取完所有可能的情况。
获取到第一特征点集之后,处理器会按照第二预设顺序依次从第二参数集组中选出所有参数集,对于一个特定的参数集,可以根据下面的公式计算出第一特征点集中的每一个点对应的第三特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点,(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第三特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
步骤S420,基于计算得到的所述第三特征点集,计算所述第二直线度误差。
基于计算得到的第三特征点集,计算直线度误差。由于鱼眼图像中心的畸变相对最小,因此选取每一行的最中间两点可以确定M个直线方程fm(x),0≤m<M,基于该M个直线方程以及第三特征点集的所有元素点,可以按照下述公式算出所有点的水平方向直线度误差:
同理,选取每一列最中间两点可以确定N个直线方程fn(x),0≤n<N,基于该N个直线方程以及第三特征点集的所有元素点,可以按照下述公式算出所有点的竖直方向直线度误差:
基于上述水平方向的直线度误差和竖直方向的直线度误差,可以按照下述公式得到总的直线度误差:
Error=Errorhor+Errorver
计算得到的总的直线度误差即为该特定参数集的直线度误差。对于第一参数集组中的任意一个参数集,可以按照上述步骤和公式计算得到对应的第二直线度误差。
本实施例中的畸变参数的寻优方法,首先按照第二预设顺序依次基于第二参数集组中的参数集,及所述第一特征点集计算目标图像的第三特征点集;然后基于计算得到的所述第三特征点集,计算所述第二直线度误差。第二直线度误差的计算是基于第二参数集组计算得到的,所得参数集范围小而精度高,可以获取到不包含在第一参数集组中的参数集数据,提高了畸变参数的寻优精度和准确度,进一步提高了对鱼眼图像校正的准确性。
基于第五实施例,提出本发明畸变参数的寻优方法的第六实施例,参照图7,在本实施例中,步骤S410包括:
步骤S411,获取所述目标图像的预设中心点坐标;
由于鱼眼图像对应的校正后目标图像需要满足特定的尺寸要求,因此在畸变参数的寻优过程之前,可根据具体情况判断校正后的目标图像的尺寸,进而确定目标图像的预设中心点坐标。
步骤S412,按照第二预设顺序依次基于第二参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第三特征点集。
处理器会按照第二预设顺序依次从第二参数集组中选出所有参数集,对于一个特定的参数集,可以根据下面的公式计算出第一特征点集中的每一个点对应的第三特征点集中对应的点:
其中,(u,v)为待校正鱼眼图像上的一点,(x,y)为校正后图像上的一点,(AmdImgCenterX,AmdImgCenterY)为预设的校正后图像中心点坐标,(CenterX,CenterY)为畸变中心坐标,R为畸变半径。根据上述公式,可以计算出第一特征点集中提取的任意一个鱼眼图像特征点{(uij,vij)}所对应的校正后图像第三特征点集中的点{(xij,yij)},0≤i<M,0≤j<N。
本实施例中的畸变参数的寻优方法,通过获取所述目标图像的预设中心点坐标;接着按照第一预设顺序依次基于第二参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第三特征点集。第二参数集组是基于第一参数集组优化得到的,可以使得第三特征点集在第二特征点集的基础上得到优化,提高了第三特征点集的精度,从而提高了畸变参数的寻优质量。
基于第一实施例,提出本发明畸变参数的寻优方法的第七实施例,参照图8,在本实施例中,步骤S100包括:
步骤S110,基于所述鱼眼图像的中心坐标、畸变中心的调整范围,计算畸变中心坐标的取值范围;
用户可以基于待校正鱼眼图像的中心点坐标和畸变中心的调整范围来设置畸变中心坐标的取值范围。畸变中心的调整范围可以由用户自行设置,优选地,本实施例中的畸变中心的调整范围取值为100。在获取到待校正鱼眼图像的中心点X坐标和Y坐标时,处理器可以根据下面的公式计算畸变中心X坐标和Y坐标的取值范围:
CenterX∈[ImgCenterX-Range,ImgCenterX+Range]
CenterY∈[ImgCenterY-Range,ImgCenterY+Range]
R∈[REFER_R*MinCoe,REFER_R*MaxCoe]
其中,Center X和Center Y为所求的畸变中心X坐标和Y坐标,R为所求的畸变半径,ImgCenterX和ImgCenterY为待校正鱼眼图像的中心点X坐标和Y坐标,Range为畸变中心的调整范围。例如,一个分辨率为1280×720的待校正鱼眼图像的中心坐标为(640,360),畸变中心的调整范围是100,因此可以得到畸变中心点X坐标的取值范围是(540,740),畸变中心点Y坐标的取值范围是(260,460)。
步骤S120,基于所述鱼眼图像的参考半径和畸变半径的放缩系数,计算畸变半径的取值范围;
用户可以基于参考半径和畸变半径的放缩系数来设置畸变半径的取值范围。参考半径的调整范围可以由用户自行设置,优选地,由于本实施例中所使用的待校正鱼眼图像的分辨率为1280×720,因此将参考半径设置为600,同时,将MaxCoe和MinCoe分别设置为1.2和0.8。在获取到待校正鱼眼图像的参考半径和畸变参数时,处理器可以根据下面的公式计算畸变半径R的取值范围:
R∈[REFER_R*MinCoe,REFER_R*MaxCoe]
其中,REFER_F为用户根据待校正鱼眼图像的大小所设置的参考半径,。例如,一个分辨率为1280×720的待校正鱼眼图像的中心坐标为(640,360),MaxCoe和MinCoe分别为畸变半径的放缩系数。例如,参考半径的取值为600,再分别乘以放缩系数可以得到畸变半径的取值范围是(480,720)。
步骤S130,基于畸变中心坐标的取值范围、畸变半径的取值范围、第一调整步长,获取所述第一参数集组。
在本实施例中,用户可以按照预设规则设置畸变中心点坐标取值范围及畸变半径的取值范围,同时设定一个第一调整步长,优选地,本实施例中的第一调整步长设置为10。对于每一个畸变参数,处理器可以在该畸变参数的取值范围内,按照第一调整步长依次从小到大对整个取值范围进行遍历。之后,对上述三个第一畸变参数的集合中的元素进行排列组合操作,使得其中每一个元素都能够跟另外两个集合中的元素进行所有可能的组合,其中,总的组合数目等于畸变中心点X坐标取值集合中的元素个数乘以畸变中心点Y坐标取值集合中的元素个数乘以畸变半径R取值集合中的元素个数。例如,畸变中心点X坐标的取值集合中包含2个元素,分别是[1,2],畸变中心点Y坐标的取值集合中包含2个元素,分别是[3,4],畸变半径的取值集合中包含2个元素[5,6],则在对该第一畸变参数的取值集合进行排列组合之后,可以得到的所有可能的畸变参数的组合包括:(1,3,5),(2,3,5),(1,4,5),(2,4,5),(1,3,6),(2,3,6),(1,4,6),(2,4,6)。将所有第一畸变参数的取值集合进行排列组合之后得到的所有可能的组合,即为第一参数集组,其中包含多组参数集,每一个参数集包含三个参数,分别是畸变中心点X坐标,畸变中心点Y坐标以及畸变半径R。
本实施例中的畸变参数的寻优方法,首先基于所述鱼眼图像的中心坐标、畸变中心的调整范围,计算畸变中心坐标的取值范围;然后基于所述鱼眼图像的参考半径和畸变半径的放缩系数,计算畸变半径的取值范围;之后再基于畸变中心坐标的取值范围、畸变半径的取值范围、第一调整步长,获取所述第一参数集组。通过经验方法对第一参数集组进行估算,满足了图像校正的基本要求,通过科学的手段简化了获取畸变参数的过程,提高了畸变参数的寻优精度。
基于上述实施例,提出本发明畸变参数的寻优方法的第八实施例,参照图9,在本实施例中,步骤S300包括:
步骤S310,获取所述第一直线度误差中最小的前预设个数的直线度误差对应的参数集;
在得到第一参数集组中的所有参数集对应的第一直线度误差组之后,对其进行排序,输出最小的前Z个直线度误差对应的参数集。优选地,本实施例中在排序结束之后输出直线度误差最小的三组参数集,之后按照预设规则对其进行重新调整,从而获取新的参数集的取值范围。
步骤S320,依次根据获取到的所述参数集及第二调整步长,生成所述第二参数集组。
在本实施例中,用户可以按照预设公式设置参数集中的畸变中心点坐标及畸变半径的调整范围,同时设定一个第二调整步长,优选地,本实施例中的第二调整步长设置为1。预设规则主要包括3个公式:
CenterX∈[CenterXk-NEW_RANGE,CenterXk+NEW_RANGE]
CenterY∈[CenterYk-NEW_RANGE,CenterYk+NEW_RANGE]
R∈[R-NEW_RANGE,R+NEW_RANGE]
其中,NEW_RANGE为新的参数调整范围,优选地,本实施例中NEW_RANGE设置为10,即新的取值范围调整为10,每次参数调整步长为1,即PARAMS_STEP为1。第二畸变参数是指基于第一畸变参数获取到的畸变参数,包括畸变中心X坐标、畸变中心Y坐标以及畸变半径这3个参数。对于每一个参数集中的畸变参数,处理器可以在该畸变参数的调整范围内,按照第二调整步长依次从小到大对整个取值范围进行遍历。对于每一个畸变参数,取完所有可能的值之后,将所有取到的数值放入创建的集合中,生成所述鱼眼图像的第二畸变参数对应的第二参数集组,包括,畸变中心的X坐标的取值集合,畸变中心的Y坐标的取值集合,及畸变半径的取值集合。例如,直线度误差最小的前3个参数集组是(1,4,7),(2,5,8),(3,6,9),意味着最小的前三个直线度误差对应的畸变中心X坐标包括[1,2,3],畸变中心Y坐标包括[4,5,6],畸变半径R包括[7,8,9],对其中每一个取值都按照预设规则生成一个畸变参数的取值范围,畸变中心X坐标取1时可以生成[-9,11]的取值范围,同时由于第二调整步长取值为1,可以得到畸变中心X坐标取1时对应的畸变中心X坐标的取值范围{-9,-8,...,0,1,2,...,10,11},相应地,可以得到畸变中心X坐标取2时对应的畸变中心X坐标的取值范围{-8,-7,...,1,2,3,...11,2},畸变中心X坐标取3时对应的畸变中心X坐标的取值范围{-7,-6,...,2,3,4,...,12,13],汇总之后,第二畸变参数中畸变中心X坐标的取值集合为[-9,-8,...,0,1,2,3,4,...,12,13]。同理,可以得到第二畸变参数中畸变中心Y坐标的取值集合为[-6,-5,...,3,4,5,6,7,...,15,16],以及第二畸变参数中畸变半径R的取值集合为[-3,-2,...,6,7,8,9,10,...,18,19]。对该第一畸变参数的取值集合进行排列组合之后,可以得到的所有可能的畸变参数的组合即为第一参数集组,在本实施例中,一共有23×23×23组参数集,每一个参数集包含三个参数,分别是畸变中心点X坐标,畸变中心点Y坐标以及畸变半径R。
本实施例中的畸变参数的寻优方法,通过获取所述第一直线度误差中最小的前预设个数的直线度误差对应的参数集;再依次根据获取到的所述参数集及第二调整步长,生成所述第二参数集组。在获取到一定个数的最优解之后,对其进行细化,用更小的调整步长重新计算出一个第二参数集组,使得本发明的校正方法更精细化,提高了第二参数集组的精度,进而提高了畸变参数的寻优精度。
本发明还提供一种计算机可读存储介质,在本实施例中,计算机可读存储介质上存储有畸变参数的寻优程序,其中:
该畸变参数的寻优程序被所述处理器执行时,实现如下步骤:
获取鱼眼图像对应的第一参数集组,其中,所述第一参数集组包括多组参数集;
按照第一预设顺序依次基于所述第一参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第一参数集组中的各个所述参数集对应的第一直线度误差;
基于所述第一参数集组中满足预设条件的第一直线度误差对应的参数集,生成所述鱼眼图像对应的第二参数集组,其中,所述第二参数集组包括多组参数集;
按照第二预设顺序依次基于所述第二参数集组中的参数集,及所述鱼眼图像的第一特征点集,计算所述第二参数集组中的各个所述参数集对应的第二直线度误差;
获取所述第二直线度误差中最小的直线度误差对应的参数集,并将获取到的参数集中的畸变参数作为所述鱼眼图像的目标畸变参数。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
按照第一预设规则获取所述鱼眼图像的第一特征点集;
按照第一预设顺序依次基于第一参数集组中的参数集,及获取到的所述第一特征点集计算目标图像的第二特征点集;
基于计算得到的所述第二特征点集,计算所述第一直线度误差。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
获取所述目标图像的预设中心点坐标;
按照第一预设顺序依次基于第一参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第二特征点集。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
按照第二预设规则计算所述第二特征点集对应的各行的第一直线方程和各列的第二直线方程;
根据所述第一直线方程及所述第二特征点集中各个特征点的坐标计算行误差,并根据所述第二直线方程及所述第二特征点集中各个特征点的坐标计算列误差;
基于各个所述行误差及各个所述列误差计算所述第一直线度误差。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
按照第二预设顺序依次基于第二参数集组中的参数集,及所述第一特征点集计算目标图像的第三特征点集;
基于计算得到的所述第三特征点集,计算所述第二直线度误差。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
获取所述目标图像的预设中心点坐标;
按照第二预设顺序依次基于第二参数集组中的参数集、所述第一特征点集及所述预设中心点坐标,计算所述第三特征点集。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
获取所述第一直线度误差中最小的前预设个数的直线度误差对应的参数集;
依次根据获取到的所述参数集及第一调整步长,生成所述第二参数集组。
进一步地,该畸变参数的寻优程序被所述处理器执行时,还实现如下步骤:
基于所述鱼眼图像的中心坐标、畸变中心的调整范围,计算畸变中心坐标的取值范围;
基于所述鱼眼图像的参考半径和畸变半径的放缩系数,计算畸变半径的取值范围;
基于畸变中心坐标的取值范围、畸变半径的取值范围、第二调整步长,获取所述第一参数集组。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。