免定标便捷的单目镜头鱼眼图像畸变矫正方法与流程

文档序号:13626147阅读:669来源:国知局
免定标便捷的单目镜头鱼眼图像畸变矫正方法与流程

本发明涉及图像处理领域中摄像头图像的后期处理技术,尤其涉及一种免定标便捷的单目镜头图像鱼眼畸变矫正技术。



背景技术:

由于摄像机镜头并不符合理想的针孔成像模型,所以摄取的图像普通存在桶形畸变、枕形畸变和鱼眼畸变。其中鱼眼畸变一般都是广角镜头形成的,远离镜头光轴区域的放大率比光轴附近的低,在像平面内出现外凸的情景。摄像头图像的畸变矫正在机器视觉领域和图像处理领域都有着非常重要的应用价值。如何使用免定标技术,在无法预知各种镜头参数的情况下来矫正这些畸变的图像和视频一直是图像处理领域的技术难题。本专利针对单目摄像头的鱼眼畸变图片,发明了一种免定标免参数的畸变图片自动矫正技术,填补了这一技术空白。

为了消除摄像机镜头的鱼眼图像畸变,目前的矫正方法主要分为四种。

第一种是模板定标法。模板定标法需要制定一块定标模板,定标模板一般采用标准网格或者同心圆图像。将定标模板放在摄像机下拍摄采样图像,然后在采样图像上提取采样点,形成采样点群组,再利用采样点图像坐标和预知的采样点真实世界坐标,运用多项式拟合或样条拟合等方法,拟合出摄像机镜头的各种参数和畸变参数。这种方法的矫正精度高,是目前应用最广泛的矫正方法。此方法最大的缺陷是:在很多实际应用中,根本无法用摄像机对定标模板进行拍摄和采样,也就无法进行矫正了。

第二种是基于镜头特征参数的矫正方法。这种方法不需要制作定标模板,但必须预知镜头的某些特定的光学参数(如焦距等)值,然后根据选用的校正模型对畸变图像实施校正的方法。这种基于特征参数的方法无需制定模板,计算过程也较为简单。但是矫正的精确度比较低,适应范围也比较窄,只能针对某些特定的镜头。在很多实际应用中,根本无法预先获知镜头的特征参数和畸变模型。

第三种是多目镜头矫正法。利用多个摄像机从不同角度对同一目标进行拍摄,利用两幅或多幅图像间的特征点匹配,在某种约束下(如交比的投影不变性)进行畸变参数估计来实现自标定。比如基于径向基本矩阵的矫正方法和基于圆心共线约束的矫正方法。这类方法的缺点是需要多个摄像头拍摄的多幅标定图像,计算过程繁琐。

第四种方法主要针对鱼眼镜头的复原展开法。这类方法首先在鱼眼图像上和矫正图像都生成一种网格布局,两个网格布局上的网格点一一对应,形成一种映射关系。然后将畸变图片上的点根据网格布局上的坐标,映射到矫正图像上。比较经典的基于经度的鱼眼校正算法,在畸变图像上采用经纬度网格布局,在矫正图片上采用标准网格布局,将畸变图片按经纬度进行矫正,即把同一经线上点映射为竖向直线,同一纬线上的点映射为横向直线。该算法的不足之处是对沿着经线的上下两顶端处图像的畸变校正效果非常差。基于圆分割的鱼眼校正算法,在畸变图像上采用同心圆网格布局,在矫正图像上采用同心正方形布局,将畸变图像上的圆形映射为相应的正方形。该算法虽然改进了图像两端的矫正质量,但是在矫正图像上,每一个正方形布局对应的对角线处矫正质量非常差,会出现图像的严重扭曲。这类方法目前最大的缺陷是无法准确预估镜头的焦距和视角,所以无法合理安排网格布局的疏密变化,而且总是存在一定的矫正死角。后期出现的大量改进方法为了提高网格布局的合理度,都需要大量的采样点或者预知镜头的焦距或视角等参数。

本发明提出的免定标单目摄像头鱼眼畸变图片自动矫正技术,用户无需任何辅助定标图像,也无需输入任何摄像头参数,只要便捷地交互输入3个点,即可实时实现图像矫正。



技术实现要素:

针对上述问题,本发明的目的针对单目摄像头拍摄的径向畸变图片,提供一种免定标的图片自动矫正技术。用户无需任何辅助定标图像,也无需预知或输入任何摄像头参数,只要交互输入3个点,即可实时实现图像矫正。鱼眼畸变参数只需要求取一次,本发明的矫正技术不仅能对图像的所有像素进行并行处理,而且能够对视频的所有帧画面进行并行处理,所以此技术也适用于视频的实时鱼眼畸变矫正。

本发明解决上述技术问题所采用的技术方案是:免定标便捷的单目镜头图像鱼眼畸变矫正技术,分为以下步骤:

1)对于单目摄像头所获取的单个图像或视频中的某一帧图像,在图像上按一定准则便捷地标出3个矫正标记点;

2)根据图像的鱼眼畸变特征,构造鱼眼畸变矫正计算模型;

3)对矫正标记点进行数据优化,以消除各种误差(比如输入误差和坐标转换误差)和提高矫正算法的鲁棒性;

4)运用优化后的矫正标记点,对畸变矫正计算模型进行数值求解,反求鱼眼畸变参数;

5)进行图像矫正,计算矫正图片上每一点的像素值,计算矫正图片上每一点的像素值。

1.矫正标记点

在步骤1)中输入的矫正标记点,其输入准则为:

1)这三点在畸变前是一条直线,畸变后按输入顺序形成一条折线段。折线段不能有重叠和迂回,最好选择靠近中心;

2)畸变中心点必须在这3个点所形成的三角形之外;

3)3个点和畸变中心点的连线,必须按照顺时针或逆时针统一排列;

4)3个矫正标记点中的任两点和畸变中心点不能三点共线。

这折线段主要用来标记原本是直线而被摄像头镜头畸变成弧线的地方,本发明的目标就是将图片中因畸变弯曲的地方还原变直。一般情况下可以沿着门的边框、房子柱子的边缘、马路的边缘,地板的直线纹路等地方依次输入3点即可。

准则2)中所述的畸变中心点是指畸变图像上摄像机镜头中心所获取的像素点。一般情况是指畸变图片的中心点。如果图像有偏移,畸变中心点就不一定是整个图像的中心点,这时需要重新定位。如果摄像头为鱼眼镜头,而且所获取的畸变图像为一个圆形图片,那么畸变中心点为这个圆形的圆心。用户可以直接用鼠标交互输入畸变中心点。对于圆形图片,也可以通过输入边界圆上的3点来定位,这3个点的外接圆圆心既是畸变中心点。畸变中心点非常重要,下面的矫正算法都是基于这个中心点来完成的。

2.矫正计算模型

图像上的畸变特征是图像中物体所表现出来的畸变弯曲情况,本发明可以支持图像的鱼眼畸变矫正。不同的图像畸变特征需要构造不同的矫正计算模型。首先建立以畸变中心点为原点,像素的行方向为x轴方向,像素的列方向为y方向的笛卡尔坐标系。在此坐标系下,第i行第j列的像素坐标为p(px,py):

px=j–(w-1)/2j=0…w-1

py=i–(h-1)/2i=0…h-1

其中w是图像的宽度,即一行的像素个数,而h是图像的高度,即一列的像素个数。设点p矫正后的坐标为p’(px’,py’),p相对于原点的距离为rp,那么对于鱼眼畸变采用如下计算模型:

p’=k1f(rp)p

其中k1,k2为畸变系数,f为鱼眼镜头的投影变换方程。根据摄像机镜头的不同构造,本专利支持四种投影模式,分别为:

等距投影模式,

f(r)=k2tg(r/k2)

等立体角投影模式:

f(r)=k2tg(arcsin(r*0.5/k2)*2)

体视投影模式

f(r)=k2tg(arctg(r*0.5/k2)*2)

正交投影模式

f(r)=k2tg(arcsin(r/k2))

3.矫正标记点的数据优化

为消除数据的各种误差(比如输入误差和坐标转换误差)并提高矫正算法的鲁棒性,需要对矫正标记点进行数据优化。记矫正标记点为p1,p2,p3,它们的坐标分别表示为:p1(x1,y1),p2(x2,y2),p3(x3,y3)。考虑到空间的对称性并简化计算,仅需对p2进行调整优化。设p2调整后的点为p4,取p4=sp2,sa=s0,sb=1,k1=0.6,ka=w/π,kb=2w/π。其中s0计算方式为:

s0=(y1(x3-x1)–x1(y3-y1))/(y2(x3-x1)–x2(y3-y1))

计算k2=ka时的fa=sin(∠p2’p1’p3’)和k2=kb时的fb=sin(∠p2’p1’p3’),如果fa<fb,那么无需调整标记点,即s=1,p4=p2。否则按以下两步循环迭代优化搜索最优的s,直到sb–sa小于预定的阀值:

1)取s=(sa+sb)/2,p4=sp2,以p4坐标代替p2坐标分别计算k2=ka时的fa=sin(∠p2’p1’p3’)和k2=kb时的fb=sin(∠p2’p1’p3’);

2)如果fa<fb,sa=s,否则sb=s。

迭代结束后取p4=sap2。

4.求解鱼眼畸变参数

畸变矫正的关键就在于如何优化求解这些计算模型中的k1,k2,使得步骤1)中输入的标记点p1,p2,p3矫正后得到的p1’,p2’,p3’趋于共线。也就是使得角度∠p2’p1’p3’等于0或者最小。考虑到∠p2’p1’p3’为锐角时sin()函数的单调性,将∠p2’p1’p3’的最小化转化为sin(∠p2’p1’p3’)的最小化。通过向量叉乘这个有向角度可以表示为:

sin(∠p2’p1’p3’)=p2’p1’xp3’p1’/(‖p2’p1’‖x‖p3’p1’‖)

鱼眼畸变参数k1,k2可以通过求解以下非线性优化来得到

min│sin(∠p2’p1’p3’)│sin(∠p2p1p3)sin(∠p2’p1’p3’)≥0

k1∈[0.6,0.8],k2∈[w/π,2w/π]

鱼眼畸变的视角很广,摄取的场景往往很大,所以矫正后的真实图像会被放大很多。特别是接近视角接近或超过180度的鱼眼镜头,矫正后的真实图像边缘会延伸至无限远。所以必须对矫正图像的真实视角和显示范围进行限制。畸变参数k1用于限制矫正图像的显示范围,一般取0.6至0.8之间。固定k1后,根据计算模型不同的k2可计算出不同的sin(∠p2’p1’p3’)。在保持sin(∠p2’p1’p3’)与sin(∠p2p1p3)同号(都大于0或都小于0)的情况下,采用二分法不断缩小在k2的取值范围,求出sin(∠p2’p1’p3’)最接近0时的k2。具体方法为:取ka=w/π,kb=2w/π,fmin=│sin(∠p2p1p3)│。按以下两步循环迭代优化搜索最优的k2,直到kb–ka小于预定的阀值:

1)取k2=(ka+kb)/2,计算f=sin(∠p2’p1’p3’);

2)如果f和sin(∠p2p1p3)同号且│f│<fmin,那么ka=k2,fmin=f,否则kb=k2。

迭代结束后取k2=ka即可。

5.图像矫正

图像矫正分为正向矫正和逆向矫正。正向矫正是指对畸变图像上的每一点,找到矫正后的新位置,并把像素值复制至矫正图片的该位置。而逆向矫正是指对于矫正图片上的每一点,找到畸变图像上的一点来填充像素值。正向矫正可以通过求取的畸变参数和畸变计算模型直接实现。逆向变换通过计算模型的逆变换实现,计算方法为:

p=p’rp/(k1rp’)

其中rp通过投影变换的逆变换求解,四种投影模式下的逆变换分别为:

等距投影模式,

rp=k2arctg(rp’/k2)

等立体角投影模式:

rp=2k2sin(arctg(rp’/k2)*0.5)

体视投影模式

rp=2k2tg(arctg(rp’/k2)*0.5)

正交投影模式

rp=k2sin(arctg(rp’/k2))

6.投影模式的选择

不同的投影模式能模拟不同的畸变弯曲情况。如果事先无法预知摄像头的投影模式,而且从畸变图片上也无法直接分辨出到底采用的是什么投影模式。可以把四种投影模式都计算一次,取矫正效果最好的那个。由于畸变参数只需求解一次,畸变矫正时畸变参数无需重复求取,所以并不影响矫正的实时性。在比较矫正效果时,不仅要看标记点的矫正情况,而且还要看全局的矫正情况,再某些投影模型下,标记点处虽然拉成了直线,但是其它地方也许会矫枉过正。一般情况下用户只需直接选择等距投影模式,在等距投影模式矫正失败的情况下再选择其它投影模式。

本发明的优点在于:

本发明了一种免定标的图片自动矫正技术。用户无需任何辅助定标图像,也无需预知或输入任何摄像头参数,只要交互输入3个点,即可实时实现图像矫正。鱼眼畸变参数只需要求取一次,本发明的矫正技术不仅能对图像的所有像素进行并行处理,而且能够对视频的所有帧画面进行并行处理,所以此技术也适用于视频的实时鱼眼畸变矫正。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为摄像头产生鱼眼畸变时的图像

图2为将图1中的图像进行鱼眼畸变矫正后的图像

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

针对不同的畸变特征,给定单幅畸变图像。如图所示,图1显示了摄像头产生鱼眼畸变时的图像。在图1中,在鱼眼镜头的折射下,门的上边框和栅栏都畸变成了圆弧,整个图像呈圆形。本发明的功能就是在无定标板、无摄像头参数和其它辅助图像的情况下,矫正图像中的畸变。

步骤1用户须在畸变图中输入矫正标记点,3个矫正标记点形成的折线段在图中用红色标记。在图1中沿着栅栏的下边沿按顺时针方向输入输入3个矫正标记点。

步骤2根据图像的畸变特征,建立畸变的计算模型。设图像有h行,w列像素,那么建立以图像中心点为原点,像素的行方向为x轴方向,像素的列方向为y方向的笛卡尔坐标系。在此坐标系下,第i行第j列的像素坐标pi,j(xi,j,yi,j)为:

xi,j=j–(w-1)/2j=0…w-1

yi,j=i–(h-1)/2i=0…h-1

对于图1,畸变中心点为圆形图像的圆心。那么pi,j’在鱼眼畸变下的计算模型为:

ri,j=((xi,j-xc)2+(yi,j-yc)2)1/2

xi,j’=k1f(ri,j)xi,j

yi,j’=k1f(ri,j)yi,j

其中(xc,yc)畸变中心点的坐标。f为鱼眼镜头的投影变换方程。根据摄像机镜头的不同构造,本专利支持四种投影模式,分别为:

等距投影模式,

f(r)=k2tg(r/k2)

等立体角投影模式:

f(r)=k2tg(arcsin(r*0.5/k2)*2)

体视投影模式

f(r)=k2tg(arctg(r*0.5/k2)*2)

正交投影模式

f(r)=k2tg(arcsin(r/k2))

针对图1,采用等距投影模式。

步骤3反求畸变参数k1,k2。记3个矫正标记点的坐标为p1(x1,y1),p2(x2,y2),,

p3(x3,y3)。

在鱼眼畸变计算模式下,还需要求解以下非线性优化来得到k1,k2

min│sin(∠p2’p1’p3’)│sin(∠p2p1p3)sin(∠p2’p1’p3’)≥0

k1∈[0.6,0.8],k2∈[w/π,2w/π]

鱼眼畸变的视角很广,摄取的场景往往很大,所以矫正后的真实图像会被放大很多。特别是接近视角接近180度的鱼眼镜头,矫正后的真实图像边缘会延伸至无限远。所以必须对矫正图像的真实视角和显示范围进行限制。畸变参数k1用于限制矫正图像的显示范围,这里取值0.6。固定k1后,根据计算模型不同的k2可计算出不同的sin(∠p2’p1’p3’)。在保持sin(∠p2’p1’p3’)与sin(∠p2p1p3)同号(都大于0或都小于0)的情况下,采用二分法不断缩小在k2的取值范围,求出sin(∠p2’p1’p3’)最接近0时的k2。

步骤4畸变矫正。得到矫正系数k1,k2后直接运用矫正计算模型即可进行正向矫正。对于畸变图像上的每一点pi,j,利用变换式找到矫正后的新位置pi,j’,并把pi,j的像素值复制至矫正图片的第i’行第j’列。i’和j’的计算方法为:

i’=int(yi,j’+(h-1)/2)

j’=int(xi,j’+(w-1)/2)

其中int()为取整操作。而逆向矫正是指对于矫正图片上的每一点pi,j’,找到畸变图像上的一点pi,j来填充像素值。

对于鱼眼畸变,矫正计算方法为:

xi,j=xi,j’ri,j/(k1ri,j’)

yi,j=yi,j’ri,j/(k1ri,j’)

ri,j通过投影变换的逆变换求解,四种投影模式下的逆变换分别为:

等距投影模式,

ri,j=k2arctg(ri,j’/k2)

等立体角投影模式:

ri,j=2k2sin(arctg(ri,j’/k2)*0.5)

体视投影模式

ri,j=2k2tg(arctg(ri,j’/k2)*0.5)

正交投影模式

ri,j=k2sin(arctg(ri,j’/k2))

对图1中的畸变图像采用等距投影模式,矫正后的图像如图2所示,矫正后柜台、围栏、广告显视屏的上下边沿均矫正成为原来的直线。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1