图像畸变与去畸变

本文主要介绍图像畸变产生的原因,广角镜头的一般畸变模型和去畸变的方法。

1.图像畸变

图像畸变是由于透镜制造精度以及组装工艺的偏差会引入畸变,导致原始图像失真。镜头的畸变分为径向畸变和切向畸变两类。

1.1 径向畸变与畸变模型

径向畸变是由于镜头自身凸透镜的固有特性造成的,产生原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲。

畸变沿着透镜半径方向分布,主要包括桶形畸变和枕形畸变两种,如下图所示:

                    正常物体                                                       枕形畸变                                                        桶形畸变

畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,可以增加使用第三项k3来进行描述:

   

其中,(x,y)是非畸变的坐标位置,(x0,y0)是畸变后的坐标位置。成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。

1.2 切向畸变与畸变模型

切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。

畸变模型可以用两个参数p1和p2来描述:

  

其中,(x,y)是非畸变的坐标位置,(x0,y0)是畸变后的坐标位置。

注意:

1)所有的畸变计算均在摄像机坐标系下进行。

2)每个镜头的畸变系数[k1,k2,k3,p1,p2],可以通过标定得出。

 

2.图像去畸变

从镜头获取的原始图像,都是存在第一部分所述的两种畸变的,为了后续进行更好的图像操作,我们需要首先执行去畸变过程:

1)首先将像素坐标(u,v)转到摄像机坐标系下(通过camera内参):

x=(u-cx)/fx;

y=(v-cy)/fy;

z=1;//单位平面

2)计算畸变量:

3)畸变位置:

4)将该摄像机坐标系下的坐标转到像素坐标系下:

for (int v = 0; v < grayimg.rows; v++)
{
     for (int u = 0; u < grayimg.cols; u++)
     {

         image_de_distort.at<unsigned char>(v, u) = imgsrc.at<unsigned char>(v′, u′);

     }

}

imgsrc是直接获取的有畸变的图像, image_de_distort是去畸变后的图像。

        

                                    原始图像(存在畸变)                                                                                    去畸变后的图像

 

第二部分:

摄像头模组的畸变是无法避免的,那为了保证相机的成像质量,必然涉及到图像的畸变处理,这里试图说明Brown畸变模型下的去畸变和加畸变的原理和过程,多项式畸变的处理方式类似。

1. 像素位置加畸变和去畸变

畸变前的像素位置和畸变后的像素位置关系式:

从未畸变的像素位置变换到畸变的位置这一正向过程比较简单,直接套用公式就可以得到。从畸变的像素位置得到去畸变后的像素位置是比较复杂的,这是一个逆向的过程,由于函数关系是单调的,一般采用迭代法,这样方便编程实现和计算机的计算

2. 线性插值和双线性插值

插值法常用于计算周围点的之间点的值,插值法分为线性插值、双线性插值、三次样条插值等,这里介绍线性插值和双线性插值的原理,双线性插值在图像像素的插值中被频繁采用。线性插值如公式:

从公式中可以看出该线性插值的含义:以距离为权重,加权y1、y2得到的值。

双线性插值法:双线性插值是线性插值的扩展,像素值双线性插值的示意如图所示。

X方向的插值为: 

Y方向的插值为:

最后得到双线性的插值结果:

 

双线性插值在图像的过滤、变换、形态学处理、去畸变、加畸变用得很多。

3. 图像去畸变和加畸变的过程

图像去畸变是指依据畸变参数,将图像恢复到畸变前。图像去畸变的过程示意如图所示。

    

图左中rectified image是去畸变后的图像REC,distorted image为畸变后的图像DIS。去畸变流程如下:

  1. 按顺序对REC中的像素位置加畸变处理,得到畸变后的浮点像素位置映射图
  2. 基于映射图,找到REC像素位置在DIS中的对应位置P,对P的4个邻位置的像素值进行双线性插值得到P点的像素值。
  3. 这样REC的每个位置都从DIS中找到了对应的像素值,从而得到去畸变后的图像。

图像加畸变的过程和图像去畸变的过程相反,如图右所示,加畸变的像素位置进行去畸变处理,找到在未畸变图像中的对应位置,双线性插值计算其像素值,从而得到加畸变的图像。

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
图像畸变校正是一种在图像处理中常用的技术,旨在消除摄像头拍摄图像时产生的畸变现象。畸变通常由相机镜头的设计缺陷引起,包括径向畸变和切向畸变。径向畸变是由于镜头导致图像中心附近的物体形状出现拉伸或收缩,而切向畸变则是由于镜头安装位置不正造成的图像边缘的形状扭曲。 FPGA(现场可编程门阵列)是一种可编程的数字逻辑器件,具有高性能和低功耗的优势,广泛应用于图像处理领域。FPGA可以用于实现图像畸变校正算法,提高图像质量和准确性。 在实现图像畸变校正的FPGA系统中,首先需要对摄像头镜头的畸变情况进行建模和分析。可以利用数学模型和相机标定技术来获取畸变系数。然后,根据畸变模型和系数,设计并实现畸变校正算法,用于对输入图像进行去畸变处理。 畸变校正算法的设计可以利用几何方法或像素重采样等技术。其中,几何方法包括极坐标转换和透视变换等,用于恢复图像中心附近物体的形状。像素重采样技术则通过重新分配像素位置,使得图像边缘的形状得以修正。这些算法需要高效的图像处理和变换运算,而FPGA的并行计算能力可以提供实时性能和较低的延迟。 在FPGA系统中,图像畸变校正算法可以通过硬件描述语言编写,并通过FPGA的配置工具将算法逻辑下载到FPGA芯片中。FPGA还可以与其他图像处理模块(如图像传感器和显示器)进行数据交互和控制,实现完整的图像采集、处理和显示过程。 综上所述,利用FPGA实现图像畸变校正能够提供高性能的图像处理能力,改善图像质量和准确性。这在摄像头校正、机器视觉等领域都有广泛的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值