zoukankan      html  css  js  c++  java
  • 【CV】相机畸变

    相机畸变

    由于摄像机制造工艺偏差,以及入射光线在通过各个透镜时的折射误差和CCD点阵位置误差等,世纪的光学系统存在着非线性几何失真,从而使目标像点与理论像点之间存在着多种几何畸变。

    其中影响最大的是径向畸变和切向畸变。径向畸变来自于透镜形状,切向畸变来自于整个摄像机的组装过程。

    径向畸变主要有桶形畸变,枕形畸变和胡子畸变。主要原因是镜头形状的缺陷。

    其中径向畸变成像仪中心畸变为0,随着向边缘移动,畸变越来越严重。可以通过下面的泰勒级数展开式进行校正:

    Xc = x ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 )

    Yc = y ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 )

    r是该点距离成像中心的距离,r = x^2 + y^2xy是图像中畸变后的位置坐标,XcYc是通过校正后得到的真实坐标,k1k2k3...是参数。

     

    切向畸变主要有薄棱镜畸变和离心畸变。主要原因是由于透镜制造上的缺陷使得透镜本身与图像平面不平行。可以通过如下公式来矫正:

    Xc = x + [ 2p1y + p2 ( r^2 + 2x^2 )]

    Yc = y + [ 2p2x + p1 ( r^2 + 2y^2 )]

    r是该点距离成像中心的距离,r = x^2 + y^2 xy是图像中畸变后的位置坐标,XcYc是通过校正后得到的真实坐标,p1p2是参数。

     

    opencv畸变模型

    径向畸变模型:

    Xc = x ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 )

    Yc = y ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 )

    切向畸变模型:

    Xc = xd + [ 2p1xdyd + p2 ( r^2 + 2xd^2 )]

    Yc = yd + [ 2p2xdyd + p1 ( r^2 + 2yd^2 )]

    可得(一般情况下,薄棱镜畸变可以忽略不计,故opencv2.0版本只考虑了径向畸变和切向畸变):

    Xc = xd ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 ) + [ 2p1xdyd + p2 ( r^2 + 2xd^2 )] ( 1 + p3r^2 + … )

    Yc = yd ( 1 + k1r^2 + k2r^4 + k3r^6 ) / ( 1 + k4r^2 + k5r^4 + k6r^6 ) + [ 2p2xdyd + p1 ( r^2 + 2yd^2 )] ( 1 + p3r^2 + … )

    p3为考虑切向畸变的扩展,此外设为0即可。

    张正友标定中只有k1,k2,k3,p1,p2五个参数,对于质量比较好的相机切向畸变很小可忽略,k3也可忽略,张正友标定中默认p1,p20

     

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    87 求先序排列
    iOS App用WKWebView加载h5, h5多页面手势返回,h5返回App
    H5判断是手机端浏览器or原生App Webview
    vue-router笔记
    我的博客园页面定制 CSS 代码
    用swiper实现不规则分页滚动 & 给分页器加颜色
    Angular1.6.9 选择本地文件上传后台
    Vue移动端上拉加载更多实现请求分页数据
    导航折叠菜单
    类似于Flipboard页面翻折效果
  • 原文地址:https://www.cnblogs.com/ldudxy/p/14821382.html
Copyright © 2011-2022 走看看