基于圆锥曲线的图像畸变矫正方法及实时矫正装置转让专利

申请号 : CN201610536266.7

文献号 : CN106204480B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 罗启宏曹晶赵青波熊炜胡春美苗俊峰

申请人 : 石家庄域联视控控制技术有限公司

摘要 :

基于圆锥曲线的图像畸变矫正方法及实时矫正装置,属于图像处理技术领域,具体涉及一种基于圆锥曲线的图像畸变矫正方法以及使用该方法对图像进行实时矫正的装置,使用椭圆或双曲线方程式模拟图像畸变,在嵌入式系统中实现。首先进行镜头的标定,再根据标定结果,对畸变图像进行实时矫正。包括以下步骤:步骤1:获得有网格图案图片的照片;步骤2:建立平面直角坐标系;步骤3:根据照片,判断图像畸变类型;步骤4:得到变形线的近似圆锥曲线的方程式;步骤5:得出畸变图像和矫正图像像素点的对应关系。将对应关系写入嵌入式系统的CPU;工作时,CPU读取畸变图像的像素信息,根据对应关系,转换位置后写入矫正图像文件。采用本发明,可以降低CPU的配置要求,同时最大限度地对图像进行矫正,获得可以接受的矫正图像。

权利要求 :

1.一种基于圆锥曲线的图像畸变矫正方法,使用椭圆或双曲线方程式模拟图像畸变,畸变镜头的像素数量为H*W,其特征在于包括以下步骤:步骤1:将一张有矩形或正方形网格图案的图片,放置在畸变镜头前,图片与镜头保持平行,拍摄一张该图片的照片,照片中央为网格的一个交叉点,穿过交叉点的水平方向的网格线处于照片中央的水平位置;

步骤2:在照片上,以照片中央的网格交叉点为原点,穿过交叉点的两条网格线为X轴和Y轴,X轴上相邻两个像素点间的距离为长度单位,建立平面直角坐标系;

步骤3:根据照片,判断图像畸变类型;

步骤4:根据照片得到网格线在水平和竖直方向发生畸变的变形线的近似圆锥曲线的方程式;

步骤5:根据方程式,得出畸变图像和矫正图像像素点的对应关系;

步骤5包括以下步骤:

5.1:建立畸变图像索引表1,索引关键字及表中内容均为y轴坐标值,包括以下步骤:

5.1.1:根据步骤4得到的水平方向变形线的圆锥曲线方程f(x,y)=1,x取值[-W/2,W/

2],x∈N,计算得出对应的y值,相邻两个x的差为1;

存储上述坐标值,并以x=0时的y值作为索引关键字;

记录p0=abs(y),y为上述索引关键字;

5.1.2:p取值[1,p0)∪(p0,H/2],相邻两个p的差为1,对于每个p,将坐标值(0,p)代入到方程K*f(x,y)=1,得到K值;

5.1.3:根据5.1.2得到的结果,x取值[-W/2,W/2],x∈N,依次计算得出对应的y值;

存储上述坐标值,并以x=0时的y值作为索引关键字;

5.2:建立畸变图像索引表2,索引关键字及表中内容均为x轴坐标值,包括以下步骤:

5.2.1:根据步骤4得到的竖直方向变形线的圆锥曲线方程g(x,y)=1,y取值[-H/2,H/

2],y∈N,计算得出对应的x值,相邻两个y的差为1;

存储上述坐标值,并以y=0时的x值作为索引关键字;

记录q0=abs(x),x为上述索引关键字;

5.2.2:q取值[1,q0)∪(q0,W/2],相邻两个q的差为1,对于每个q,将坐标值(q,0)代入到方程M*f(x,y)=1,得到M值;

5.2.3:根据5.2.2得到的结果,y取值[-H/2,H/2],y∈N,依次计算得出对应的x值;

存储上述坐标值,并以y=0时的x值作为索引关键字;

5.3:建立畸变图像和矫正图像像素点的对应关系二维表,表中[i,j]位置的数据获取方式如下:以i为索引表2的索引关键字,j为索引表1的索引关键字;

在两个索引表中,找到两个索引关键字下相同的坐标值,将找到的坐标值 (x,y)写入对应关系二维表中[i,j]位置,-W/2≤i≤W/2,-H/2≤j≤H/2。

2.根据权利要求1所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:步骤3中,肉眼观察图像畸变类型;

步骤4中,将照片显示在显示屏上,根据畸变类型,手工选择圆锥曲线,修改曲线参数,拟合照片中一条水平方向的变形线,记录拟合后的圆锥曲线的参数,得到该水平方向变形线的近似圆锥曲线的方程式:桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:X2/a12+Y2/b12=1,a1>b1>0,枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:Y2/a22-X2/b22=1,a2>0,b2>0;

进而得到图像畸变竖直方向对应位置变形线的近似圆锥曲线的方程式:桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a12+X2/b12=1,a1>b1>0,枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a22-Y2/b22=1,a2>0,b2>0;

所述对应位置为:竖直方向变形线与X轴交点距原点的距离等于拟合的水平方向变形线与Y轴交点距原点的距离。

3.根据权利要求2所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:步骤4中,将照片显示在显示屏上,根据畸变类型,手工选择圆锥曲线,修改曲线参数,拟合照片中一条竖直方向的变形线,记录拟合后的圆锥曲线的参数,得到该竖直方向变形线的近似圆锥曲线的方程式:桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a32+X2/b32=1,a3>b3>0,枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a42-Y2/b42=1,a4>0,b4>0。

4.根据权利要求1所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:步骤3中,在水平方向一条变形线上,选取两个与竖直方向变形线的交点D1和D2,两个点的坐标为D1(x1,y1),D2(x2,y2),选择的条件是abs(x1)≠abs(x2)或 abs(y1)≠abs(y2),如果其中一个点的x坐标的绝对值和y坐标的绝对值都大于另一个点,则图像畸变类型为枕形畸变,否则,图像畸变类型为桶形畸变;

或者,在竖直方向一条变形线上,选取两个与水平方向变形线的交点D3和D4,两个点的坐标为D3(x3,y3),D4(x4,y4),选择的条件是abs(x3)≠abs(x4)或abs(y3)≠abs(y4),如果其中一个点的x坐标的绝对值和y坐标的绝对值都大于另一个点,则图像畸变类型为枕形畸变,否则,图像畸变类型为桶形畸变。

5.根据权利要求4所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:步骤4中,如果是桶形畸变,圆锥曲线为椭圆,将D1、D2的坐标值代入公式X2/a2+Y2/b2=1,解方程得到D1、D2所在的水平方向变形线的椭圆方程式:X2/a12+Y2/b12=1,a1>b1>0;

如果是枕形畸变,圆锥曲线为双曲线,将D1、D2的坐标值代入公式Y2/a2-X2/b2=1,解方程得到D1、D2所在的水平方向变形线的双曲线方程式:Y2/a22-X2/b22=1,a2>0,b2>0;

进而得到图像畸变竖直方向对应位置变形线的近似圆锥曲线的方程式:桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a12+X2/b12=1,a1>b1>0,枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a22-Y2/b22=1,a2>0,b2>0;

所述对应位置为:竖直方向变形线与X轴交点距原点的距离等于D1、D2所在的水平方向变形线与Y轴交点距原点的距离。

6.根据权利要求5所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:步骤4中,如果是桶形畸变,圆锥曲线为椭圆,将D3、D4的坐标值代入公式Y2/a2+X2/b2=1,解方程得到D3、D4所在的竖直方向变形线的椭圆方程式:Y2/a32+X2/b32=1,a3>b3>0;

2 2 2 2

如果是枕形畸变,圆锥曲线为双曲线,将D3、D4的坐标值代入公式X/a-Y/b=1,解方程得到D3、D4所在的竖直方向变形线的双曲线方程式:X2/a42-Y2/b42=1,a4>0,b4>0。

7.根据权利要求1所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:在步骤5.3中,如果找不到相同的坐标值,找到两个索引关键字下最接近的坐标值,将两个坐标值的平均数写入二维表中[i,j]位置。

8.根据权利要求1所述的基于圆锥曲线的图像畸变矫正方法,其特征在于:在步骤5.3中,(x,y)取整数部分写入对应关系二维表。

9.一种图像畸变的实时矫正装置,包括嵌入式系统和安装有畸变镜头的摄像机,基于权利要求1中得出的畸变图像和矫正图像像素点的对应关系实现,其特征在于:嵌入式系统的CPU中存储畸变图像和矫正图像像素点的对应关系;矫正装置工作时,CPU读取每一帧畸变图像的像素信息,根据对应关系,转换位置后写入矫正图像文件。

说明书 :

基于圆锥曲线的图像畸变矫正方法及实时矫正装置

技术领域

[0001] 本发明属于图像处理技术领域,具体涉及一种基于圆锥曲线的图像畸变矫正方法以及使用该方法对图像进行实时矫正的装置。

背景技术

[0002] 目前在监控领域,为了适合不同情境的需求,需采用不同种类的镜头。一般的镜头在成像过程中都存在一定程度的光学畸变,使成像图像的大小和形状发生了某些变化,图像的质量下降,给后面的图像分析和图像测量带来误差,甚至造成误判,因此必须对由摄像机镜头所造成的图像几何畸变进行校正。
[0003] 由于镜头的不同,可能产生的畸变分为两类:桶形畸变和枕形畸变。
[0004] 对于摄像机镜头非线性畸变的校正算法可分为两类:第一类是基于标定模板方法,如采用点阵图、平面网格、同心圆环、西洋棋盘等,根据模板上特征点的位置和其理想点的位置偏差来求取畸变系数;第二类是不使用标定模板,如基于畸变率、基于畸变等效曲面、基于测量设备等校正算法迭代或直接求出畸变系数。
[0005] 中国专利申请《一种鱼眼镜头径向畸变的标定方法及标定装置》(申请号:201410244246.3)公开了一种使用圆心共线圆弧组对畸变进行拟合处理的方法,该方法算法复杂,对CPU性能要求高;中国专利申请《一种校正图像桶形失真的方法及装置》(申请号:
201510019338.6)公开了一种方法,根据镜头参数和像素坐标,确定该坐标处的曲率和压缩率,进而得出该像素坐标校正后的坐标点。该方法依赖镜头参数,并且只能校正图像的桶形畸变。

发明内容

[0006] 随着监控设备的大量投入,应用在嵌入式系统的镜头数量、种类越来越多,如何找到一种可以方便地应用在监控系统,满足监控图像要求的图像矫正方法,是本发明所要解决的问题。
[0007] 为解决上述技术问题,本发明采用的技术方案是:一种基于圆锥曲线的图像畸变矫正方法,使用椭圆或双曲线方程式模拟图像畸变,畸变镜头的像素数量为H*W,包括以下步骤:
[0008] 步骤1:将一张有矩形或正方形网格图案的图片,放置在畸变镜头前,图片与镜头保持平行,拍摄一张该图片的照片,照片中央为网格的一个交叉点,穿过交叉点的水平方向的网格线处于照片中央的水平位置;
[0009] 步骤2:在照片上,以上述网格交叉点为原点,穿过交叉点的两条网格线为X轴和Y轴,X轴上相邻两个像素点间的距离为长度单位,建立平面直角坐标系;
[0010] 步骤3:根据照片,判断图像畸变类型;
[0011] 步骤4:根据照片得到网格线在水平和竖直方向发生畸变的变形线的近似圆锥曲线的方程式;
[0012] 步骤5:根据方程式,得出畸变图像和矫正图像像素点的对应关系。
[0013] 一种图像畸变的实时矫正装置,包括嵌入式系统和安装有畸变镜头的摄像机,关键在于:嵌入式系统的CPU中存储畸变图像和矫正图像像素点的对应关系;矫正装置工作时,CPU读取每一帧畸变图像的像素信息,根据对应关系,转换位置后写入矫正图像文件。
[0014] 监控设备使用的镜头一般为定焦镜头,随着制作工艺的完善,每一批次镜头的技术指标基本相同,因此,选定一个镜头进行标定,所得到的参数可以用于整批的监控设备。另外,监控图像要求不是特别严格,只要能满足后续处理的要求,如车牌的识别,畸变图像矫正的效果就可以接受。
[0015] 镜头的分辨率是H*W,例如1280*960,则照片可以看做水平方向1280行、竖直方向960列组成,行、列的交点就是像素点。
[0016] 图像的畸变,根据镜头的不同,可分为桶形畸变和枕形畸变,如图1和图2所示,图1是桶形畸变的示意图,图2是枕形畸变的示意图。图中,实线是实际图片中的线,虚线是根据图片获得的照片中,实线产生畸变后的变形线。也就是说,单独的实线是原始的图片,单独的虚线是根据图片获得的照片,图1和图2是将原始图片和照片叠加而成的图像。图中,P2、P4是原始图片中两线条的交点,P1、P3是照片中,对应原始图片中两线条的变形线条的交点。
[0017] 畸变矫正,就是在获得的发生畸变的照片基础上,还原原始图片。以图示为例,就是取得照片中P1或P3像素点上的数值,写入矫正图像中,P2或P4像素点上。
[0018] 本发明所要解决的问题,是获得畸变图像和矫正图像之间,各像素点的对应关系,并在后续处理过程中,按照对应关系,处理每个像素点。
[0019] 本发明包括两个过程:1、镜头的标定,2、图像的实时矫正。
[0020] 镜头的标定:
[0021] 图像的畸变,可以用圆锥曲线来近似拟合:桶形畸变,可以用椭圆来近似拟合变形线,枕形畸变,可以用双曲线来近似拟合变形线。
[0022] 为描述方便,我们将通过镜头得到的照片,中心位置设为坐标原点,穿过原点的水平线和垂直线为X轴和Y轴组成坐标系。在X轴和Y轴上,我们认为是没有图像畸变的,其他部位,根据镜头的不同,会产生桶形畸变和枕形畸变,越远离坐标原点,畸变越严重。如图3所示,是对桶形畸变进行椭圆拟合后的示意图,中间交叉部分是得到的照片。图3只是一个示意图,实际的拟合图中,椭圆的长轴很长。可以看到,一系列的椭圆拟合了整副图像中变形线的畸变,通过密集选择椭圆,如从原点向上和向右,每隔一个像素做一个椭圆,计算椭圆上各点的坐标值,可以得到整副畸变图像各点的坐标值。
[0023] 畸变图像上每一个点,都可以看做是两个椭圆的交点,在畸变图像和矫正图像之间,这个点的对应关系,如图1所示,P1点对应到P2。P2的坐标,就是经过P1的两个椭圆,与X轴和Y轴的交点距原点的值。
[0024] 图像的实时矫正:
[0025] 将上述对应关系写入CPU,工作时,CPU取得畸变图像上的一个像素点,找到过这点的两个椭圆,根据椭圆得出该点在校正图像上的像素点,将对应畸变图像像素点的数据写在矫正图像上新像素点位置,形成媒体文件,完成畸变图像的实时矫正。
[0026] 上面是针对桶形畸变图像的处理,针对枕形畸变,原理相同,只是将椭圆换成双曲线,这里不再冗述。
[0027] 另外,由于图像变形造成像素的重叠、缺失,可以采用双线性插值等现有技术手段进行处理。
[0028] 本发明的有益技术效果是:本发明披露的基于圆锥线的图像畸变矫正算法,是一种全新的图像畸变矫正算法。它从形态学分析镜头畸变的形状,选择双曲线或者椭圆方程对畸变进行模拟,根据畸变程度自动计算相关参数,并将畸变前后的对应关系,按照像素点逐一计算,生成对应关系。与传统的矫正算法相比,无论是原理还是运算都极为简单,可自动适配不同畸变形状和畸变率的镜头。针对一批镜头,选取一个进行标定计算,计算结果可嵌入到各种硬件设备当中,在实际运行中,嵌入设备的CPU读取获得的图像,根据写入的对应关系,经查表获得矫正像素地址并完成替换,实现图像的矫正。采用本发明,可以降低CPU的配置要求,同时最大限度地对图像进行矫正,获得可以接受的矫正图像。
[0029] 下面结合附图对本发明进行详细说明。

附图说明

[0030] 图1是桶形畸变和原始图片的叠加示意图,
[0031] 图2是枕形畸变和原始图片的叠加示意图,
[0032] 图3是桶形畸变的线条拟合图,
[0033] 图4是桶形畸变照片形成的坐标图,
[0034] 图5是枕形畸变照片形成的坐标图,
[0035] 图6是桶形畸变的图片,
[0036] 图7是图6矫正后的图片,
[0037] 图8是枕形畸变的图片,
[0038] 图9是图8矫正后的图片,
[0039] 图10是镜头标定过程,
[0040] 图11是实时矫正过程,
[0041] 图12是近似计算坐标点的示意图。

具体实施方式

[0042] 本发明包括两部分:1、镜头的标定过程和2、实时矫正过程。
[0043] 如图10所示,镜头的标定过程是首先获得带网格图片的照片,根据照片上畸变的变形线,判断畸变类型,进而得到圆锥曲线方程,再根据曲线方程计算变形线上各点的坐标值,最后计算得到畸变图像和矫正图像像素点之间的对应关系。
[0044] 将得到的对应关系写入嵌入系统的CPU,嵌入式系统工作时,进行实时矫正过程,如图11所示,首先获取畸变图像,然后读取对应关系,根据对应关系,将畸变图像中的像素信息,转换位置写入矫正图像文件中,完成图像的实时矫正。
[0045] 具体的实现描述如下:
[0046] 镜头的标定过程:
[0047] 一种基于圆锥曲线的图像畸变矫正方法,使用椭圆或双曲线方程式模拟图像畸变,畸变镜头的像素数量为H*W,包括以下步骤:
[0048] 步骤1:将一张有矩形或正方形网格图案的图片,放置在畸变镜头前,图片与镜头保持平行,拍摄一张该图片的照片,照片中央为网格的一个交叉点,穿过交叉点的水平方向的网格线处于照片中央的水平位置;
[0049] 图1是桶形畸变的示意图,图2是枕形畸变的示意图。图中,实线是实际图片中的网格,虚线是根据图片获得的照片中,实线产生畸变后的变形线。也就是说,单独的实线是原始的图片,单独的虚线是根据图片获得的照片,图1和图2是将原始图片和照片叠加而成的图像。选择图片时,在保证线条和交点清晰的情况下,要尽量选择细线条图案。
[0050] 步骤2:在照片上,以上述网格交叉点为原点,穿过交叉点的两条网格线为X轴和Y轴,X轴上相邻两个像素点间的距离为长度单位,建立平面直角坐标系;
[0051] 如图4和图5所示,建立坐标系。读取原点o的像素坐标 (Ox,Oy),其他像素点在坐标系中的位置可以根据该点的像素位置和原点的像素位置计算得出。由于图片中的线条比较粗,照片 上的交叉点可能包含多个像素,这种情况下,取点内各像素坐标位置的平均值作为交点的坐标位置。
[0052] 步骤3:根据照片,判断图像畸变类型;
[0053] 步骤4:根据照片得到网格线在水平和竖直方向发生畸变的变形线的近似圆锥曲线的方程式;
[0054] 将图片放入计算机中,完成上述两步骤。
[0055] 上述两步可以手工完成,也可以计算机自动完成。
[0056] 手工完成:
[0057] 将照片显示在显示屏上,肉眼观察变形线的形态变化,确定图像畸变类型;根据畸变类型,手工选择椭圆或双曲线,修改曲线参数,拟合照片中一条水平方向的变形线,记录拟合后的圆锥曲线的参数,得到该水平方向变形线的近似圆锥曲线的方程式:
[0058] 桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:X2/a12+Y2/b12=1,a1>b1>0,[0059] 枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:Y2/a22-X2/b22=1,a2>0,b2>0;
[0060] 如图3所示,L1-x为变形线的椭圆曲线。
[0061] 对于一个镜头,可以简单地认为,水平方向和竖直方向的畸变是一致的,因此,从上述步骤得到的变形线拟合方程,可以得到图像畸变竖直方向对应位置变形线的近似圆锥曲线的方程式:
[0062] 桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a12+X2/b12=1,a1>b1>0,[0063] 枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a22-Y2/b22=1,a2>0,b2>0;
[0064] 所述对应位置为:竖直方向变形线与X轴交点距原点的距离等于拟合的水平方向变形线与Y轴交点距原点的距离,参看图3,L1-y为L1-x在竖直方向对应位置变形线。
[0065] 为了更精确,对竖直方向的变形线单独进行拟合:将照片显示在显示屏上,根据畸变类型,手工选择圆锥曲线,修改曲线参数,拟合照片中一条竖直方向的变形线,记录拟合后的圆锥曲线的参数,得到该竖直方向变形线的近似圆锥曲线的方程式:
[0066] 桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a32+X2/b32=1,a3>b3>0,[0067] 枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a42-Y2/b42=1,a4>0,b4>0。
[0068] 计算机自动完成判断畸变类型:
[0069] 在水平方向一条变形线上,选取两个与竖直方向变形线的交点D1和D2,两个点的坐标为D1(x1,y1),D2(x2,y2),选择的条件是abs(x1)≠abs(x2)或abs(y1)≠abs(y2),如果其中一个点的x坐标的绝对值和y坐标的绝对值都大于另一个点,则图像畸变类型为枕形畸变,否则,图像畸变类型为桶形畸变;
[0070] 或者,在竖直方向一条变形线上,选取两个与水平方向变形线的交点D3和D4,两个点的坐标为D3(x3,y3),D4(x4,y4),选择的条件是abs(x3)≠abs(x4)或abs(y3)≠abs(y4),如果其中一个点的x坐标的绝对值和y坐标的绝对值都大于另一个点,则图像畸变类型为枕形畸变,否则,图像畸变类型为桶形畸变。
[0071] 如图4所示,选择D1、D2两个点,D1的X坐标值小于D2的X坐标值,D1的Y坐标值大于D2的Y坐标值,因此图4为桶形畸变;或者选择D3、D4两个点,D3的Y坐标值大于D4的Y坐标值, D3的X坐标值小于D4的X坐标值,因此图4为桶形畸变;
[0072] 如图5所示,选择d1、d2两个点,d2的X坐标的绝对值和Y坐标的绝对值都大于d1的的X坐标的绝对值和Y坐标的绝对值,因此图5为枕形畸变;或者选择d3、d4两个点,也可以得出上述结论。
[0073] 计算机自动生成圆锥曲线方程:
[0074] 如果是桶形畸变,圆锥曲线为椭圆,如图4,将D1、D2的坐标值代入公式X2/a2+Y2/b22 2 2 2
=1,解方程得到D1、D2所在的水平方向变形线L2-x的椭圆方程式:X /a1 +Y/b1=1,a1>b1>
0;
[0075] 如果是枕形畸变,圆锥曲线为双曲线,如图5,将d1、d2的坐标值代入公式Y2/a2-X2/b2=1,解方程得到d1、d2所在的水平方向变形线L3-x的双曲线方程式:Y2/a22-X2/b22=1,a2>0,b2>0;
[0076] 基于水平方向和竖直方向的畸变基本一致的理由,得到图像畸变竖直方向对应位置变形线的近似圆锥曲线的方程式:
[0077] 桶形畸变时,圆锥曲线为椭圆,椭圆方程式为:Y2/a12+X2/b12=1,a1>b1>0,[0078] 枕形畸变时,圆锥曲线为双曲线,双曲线方程式为:X2/a22-Y2/b22=1,a2>0,b2>0;
[0079] 所述对应位置为:竖直方向变形线与X轴交点距原点的距离等于D1、D2所在的水平方向变形线与Y轴交点距原点的距离,图4和图5中,L2-x与L2-y,L3-x与L3-y,为对应位置的变形线。
[0080] 为了更精确,对竖直方向的变形线单独进行拟合:如果是桶形畸变,如图4所示,圆锥曲线为椭圆,将D3、D4的坐标值代入公式Y2/a2+X2/b2=1,解方程得到D3、D4所在的竖直方向变形线的椭圆方程式:Y2/a32+X2/b32=1,a3>b3>0;
[0081] 如果是枕形畸变,如图5所示,圆锥曲线为双曲线,将d3、d4的坐标值代入公式X2/a2-Y2/b2=1,解方程得到d3、d4所在的竖直方向变形线的双曲线方程式:X2/a42-Y2/b42=1,a4>0,b4>0。
[0082] 上述步骤,得到了水平方向和竖直方向各一条变形线的圆锥方程。
[0083] 步骤5:根据方程式,得出畸变图像和矫正图像像素点的对应关系;
[0084] 首先建立两个畸变图像索引表,索引表1中,索引关键字及表中内容均为y轴坐标值;索引表2中,索引关键字及表中内容均为x轴坐标值。索引表的初始结构如下:
[0085] 索引表1
[0086]
[0087] 索引表2
[0088]
[0089] 步骤5.1,首先建立索引表1:
[0090] 步骤5.1.1,根据步骤4得到的水平方向变形线的圆锥曲线方程f(x,y)=1,x取值[-W/2,W/2],x∈N,依次计算得出对应的y值,相邻两个x的差为1;如果为桶形畸变,f(x,y)= X2/a12+Y2/b12,如果为枕形畸变,f(x,y)= Y2/a22-X2/b22。
[0091] 存储上述坐标值,并以x=0时的y值作为索引关键字;
[0092] 记录p0=abs(y),y为上述索引关键字;
[0093] 第一步生成的索引表如下所示:
[0094] 索引表1
[0095]
[0096] 索引表中已增加两行,索引关键字分别是为p0和-p0,表中的xxxx为对应X值,以椭圆为例,根据公式y=±b1(1-x2/a12)1/2计算出来的y值。这样,经过Y轴上p0点和-p0点的椭圆,既两条变形线上所有点的坐标已经求出。
[0097] 在实验中我们发现,同一方向上的变形线,可以用一个通式来近似表示,如桶形畸2 2 2 2 2 2 2 2
变的通式为:K*(x/a+y/b) = 1,a>b>0,枕形畸变的通式为:K*(x/a-y/b) = 1,a>0,b>
0。
[0098] 下面,以桶形畸变为例,利用已知的椭圆方程和上述原理,采用以下方法求出经过Y轴每个整数点的变形线上各点的坐标。
[0099] 步骤5.1.2,首先求出各椭圆公式:p取值[1,p0)∪(p0,H/2],相邻两个p的差为1,对于每个p,将坐标值(0,p)代入到方程K*f(x,y)=1,得到K值:
[0100] K*(0/a12+p2/b12)=1,K=b12/p2,
[0101] 进而得到过p点的椭圆公式b12/p2*( x2/a12+ y2/b12)=1。
[0102] 步骤5.1.3,根据以上得到的公式,x取值[-W/2,W/2],x∈N,计算得出对应的y值,相邻两个x的差为1;
[0103] 存储上述坐标值,并以x=0时的y值作为索引关键字。
[0104] 利用已经求出的经过Y轴上p0点和-p0点的椭圆变形线上所有点的坐标和K值,可以用另外一种方法近似求出其他变形线上各点的y值:
[0105] 参看图12,已知过P0点的椭圆方程为X2/a12+Y2/b12=1,
[0106] 过P点的椭圆方程为K*(X2/a12+Y2/b12)=1,
[0107] 经过X=x0的直线,与上述两个椭圆的交点的y值:
[0108] P0y2=(1-x02/a12)*b12
[0109] Py2=(1/K-x02/a12)*b12
[0110] P0y2/Py2= K* ( a12-x02)/(a12-K*x02)
[0111] 由于椭圆的焦点距坐标原点很远,a1远大于x0,因此,P0y2/Py2的近似值为K,有Py=±P0y/K1/2。
[0112] 根据以上关系,计算系数为K的椭圆上各点坐标的Y值:
[0113] py=±p0y/K1/2,
[0114] 其中,p0y是已求出的椭圆上各点的Y坐标,py是要计算的椭圆上的Y坐标,p0y和py对应相同的x值,x的取值范围是[-W/2,W/2],x∈N。
[0115] 存储上述坐标值,并以x=0时的py值作为索引关键字;
[0116] 现在,得到了完整的索引表1。索引表1中,存储的是水平方向直线上各点,产生畸变后的变形线在照片上的位置坐标。共有H+1条,相邻变形线在Y轴上交点间的距离是1个像素,相邻点水平方向的距离是1个像素,索引关键字是该变形线与Y轴的交点坐标。
[0117] 索引表1中的索引关键字为变形线与y轴交点的坐标值,表中的内容为y轴坐标值。索引表1中的某个数据,与对应的X值,组成坐标数据。
[0118] 使用相似的方法建立索引表2:
[0119] 步骤5.2.1,根据步骤3得到的畸变类型和步骤4得到的竖直方向变形线的圆锥曲线方程g(x,y)=1,y取值[-H/2,H/2],y∈N,计算得出对应的x值,相邻两个y的差为1;以椭圆为例,g(x,y)=Y2/a12+X2/b12或g(x,y)=Y2/a32+X2/b32。
[0120] 存储上述坐标值,并以y=0时的x值作为索引关键字;
[0121] 记录q0=abs(x),x为上述索引关键字;
[0122] 步骤5.2.2,q取值[1,q0)∪(q0,W/2],相邻两个q的差为1,对于每个q,将坐标值(q,0)代入到方程M*f(x,y)=1,得到M值;
[0123] 步骤5.2.3,根据上述公式,y取值[-H/2,H/2],y∈N,计算得出对应的x值,相邻两个y的差为1;
[0124] 存储上述坐标值,并以y=0时的x值作为索引关键字;
[0125] 同样,利用已经求出的经过Y轴上q0点和-q0点的椭圆变形线上所有点的坐标和M值,可以用另外一种方法近似求出其他变形线上各点的x值,方法与上述一致。
[0126] 根据上述步骤建立了索引表2;
[0127] 索引表2中,存储的是竖直方向直线上各点,产生畸变后的变形线在照片上的位置坐标。共有W+1条,相邻变形线在Y轴上交点间的距离是1个像素,相邻点竖直方向的距离是1个像素,索引关键字是该变形线与X轴的交点坐标。
[0128] 索引表2中的索引关键字为变形线与x轴交点的坐标值,表中的内容为x轴坐标值。索引表2中的某个数据,与对应的Y值,组成坐标数据。
[0129] 上述实施例中,使用的是椭圆方程。当处理枕形畸变时,使用双曲线方程,两者之间的差别只是使用函数的不同,计算的原理一样,不再叙述。
[0130] 步骤5.3,根据两个索引表,建立畸变图像和矫正图像像素点的对应关系:
[0131] 本例中,对应关系是一个二维表,表的大小是H*W,表中的内容是坐标值。表的结构如下:
[0132] 对应关系二维表
[0133]
[0134] 参看图1,畸变图像中的P1点在矫正图像中的位置是P2点,按照此原则求得二维表中的内容。
[0135] 表中[i,j]位置的数据表示为P(i,j),其中,i,j为整数,-W/2≤i≤W/2,-H/2≤j≤H/2。
[0136] P(i,j)的值按如下方式确定:
[0137] 以i为索引表2的索引关键字,j为索引表1的索引关键字;
[0138] 在两个索引表中,找到两个索引关键字下相同的,或者说共同拥有的坐标值,既坐标数据,找到的坐标数据为(x,y),二维表中,P(i,j)= (x,y)。
[0139] 上述过程的实际意义是找两条曲线的交点,在理想情况下,交点可以通过上述过程找到。但这里是通过一系列的点坐标来描述一条线,是离散的,在计算过程中,由于误差的存在,有可能找不到共同的坐标数据。如果找不到相同的坐标值,找到两个索引关键字下最接近的坐标值,将两个坐标值的平均数写入二维表中[i,j]位置。
[0140] 通过以上步骤,得到了畸变图像和矫正图像像素点的对应关系,完成了对应关系二维表;
[0141] 像素点都是整数,在计算过程中,肯定会出现小数。一种方案是在生成对应关系二维表时,(x,y)取整数部分写入对应关系二维表。为了提高矫正图像的质量,也可以一直保留小数,实时矫正时,读取(x,y)后,x、y取整,得到中心像素点的信息,再根据小数部分,得到周边像素点的信息,将得到的像素点的信息进行加权处理,将处理后的信息写入矫正图像(i,j)像素位置。
[0142] 上述实施例中,对应关系二维表是以镜头正中心为坐标原点,一般镜头是以左下角为像素计数起点。为了在使用时更方便,可以将对应关系二维表通过坐标平移,将坐标原点设定在左下角。如下所示:
[0143] 对应关系二维表
[0144]
[0145] 实时矫正过程:
[0146] 一种图像畸变的实时矫正装置,包括嵌入式系统和安装有畸变镜头的摄像机,嵌入式系统的CPU中存储畸变图像和矫正图像像素点的对应关系;矫正装置工作时,CPU读取每一帧畸变图像的像素信息,根据对应关系,转换位置后写入矫正图像文件。
[0147] 设备制作时,将对应关系,既上述对应关系二维表写入嵌入式系统的CPU中。
[0148] 嵌入式系统工作时,摄像机通过镜头获得实时畸变图像,针对每一帧,CPU读取畸变图像的像素信息;针对每个像素点 (i,j),-W/2≤i≤W/2,-H/2≤j≤H/2,读取对应关系二维表中对应位置的数据(x,y);将畸变图像中(x,y)像素点的信息,写入矫正图像(i,j)像素位置,矫正图像组成新的媒体文件,完成了实时矫正。
[0149] 如果(x,y)的值是整数,按照上述方法进行处理,如果是小数,x、y取整,得到中心像素点的信息,再根据小数部分,得到周边像素点的信息,将得到的像素点的信息进行加权处理,将处理后的信息写入矫正图像(i,j)像素位置。
[0150] 通过图6-9可以看出,使用本发明,可以有效地矫正桶形畸变和枕形畸变。
[0151] 使用图像清晰度检测卡(ISO12233解析度卡)对图像进行测试,该方法矫正的图像,在水平和竖直方向的清晰度损失在2%左右,对图像质量影响不大,能够满足车牌识别、人脸识别等监控要求。