基于除法模型和核密度估计算法的镜头径向失真校正方法

引言

在数字图像处理中径向失真是一个对图像损害比较严重的问题,广角照相机、鱼眼照相机和短焦距的相机拍出来的图像都普遍存在着径向失真的现象。径向失真分为桶形失真和枕形失真

桶形失真使得图像向中心压缩,并且越边缘失真得越厉害,而枕形失真则刚好相反。如果使用径向失真图像进行几何测量,就必须对图像进行几何校正。

目前镜头失真校正的方法主要分为3类。

第一类方法利用定制的标定模板求解失真参数。根据失真图像与模板的特征点对应关系,把标定问题转化为一个非线性优化问题,并同时求解包括径向失真在内的所有标定参数。该类方法需要确定模板点阵的物理坐标,其优点是校正精度比较高,但需要较多的人工干预。

第二类方法利用场景中的直线约束来校正镜头的径向失真,通常也称之为铅垂线方法。它要求图像中存在某些线状结构如建筑物、道路等等,并且需要标记出这些线状结构的边缘。

第三类方法主要利用多幅图像的几何约束实现镜头失真的校正。

本文提出的径向失真校正方法基于DM模型和核密度估计算法。先确定径向失真模型为DM模型,用sift方法对同一场景两视点的失真图像进行特征点的提取和匹配,然后选取50组特征点对联立方程式组,采用核密度估计算法求解方程组的根,绘制出根的分布密度函数曲线,峰值所对应的横坐标即为校正参数,利用这个参数实现对两幅失真图像的校正。

#1径向失真模型
由于实际的镜头失真曲线比较复杂,通常采用多项式模型(PM)进行逼近。

PM模型是一种常用的径向失真模型,对于普通相机的径向失真,该模型的一阶形式已经足够描述非线性畸变。在失真比较严重的情况下,用PM模型表示可能会包含太多的阶数,造成求解困难。FitzgibbonI5提出了除法模型(DM),表达式为

DM模型相对于PM模型而言,最明显的优势是需要少得多的要求却能够描述大的失真J。特别是对大多数相机而言只需要一个参数就足以能够讨论镜头的失真程度

本文采用一个参数DM模型进行研究。

2失真校正算法

虑同一个场景中两张非失真图像I和I’,XX’分别为这两张图像的一对特征点,它们的关系可以表示为

其中,矩阵F是基本矩阵.(这里使用了对极约束)

将式(4)代入式(5),可以把一对非失真图像特征点之问的关系转化为一对失真图像特征点之间的关系,关系式为:

任意一对特征点失真程度都是相同的,即任意选取一对特征点的坐标代人表达式(6)都不改变它的恒等性,那么等式两边可以同时乘L(r,d)L(r,d)L(r,d),,并将具体的坐标形式(x,y,z)(x,y,z)(x,y,z)代入式

因为两幅失真图像的特征点坐标之问存在一种映射关系,需要用
到张量积符号o,最终表达式变形为

上式反映了失真图像特征点对的坐标与失真参数这3个变量之问的关系,我们可以记,X,X’为两幅失真图像的一对特征点,用式(8)代替式(7)简单反映这个关系

其中,M叫做测量矩阵,它取决于特征点对的坐标和失真参数k,f为全零向量

因为最终要求的只是失真参数k,所以要在M中约去变量X和X’,
,得到一个仅含有变量k的表达式。

因为矩阵的逐行缩放对向量f的零空间没有影响,并且当且仅当M矩阵是奇异阵时方程式(8)才有非平凡解。

外,方程的解应该是一个有效的基本矩阵,所以它本身重新排列后也必须是奇异的。根据这两个奇异条件,可以得到一个非线性
方程组对


其中,Ker[]是零空间算子,Mtx[]是矩阵算子,它可以把一个向量重新安排为一个矩阵。

们把式(9)、(10)两个方程式称为基本方程式。失真参数k仅仅取决于这两个方程式,而和矩阵F的值没有一点关系。

在根据基本方程式选取特征点对联立方程组求解时,如果使用N组特征点对,那么我们就可以联立N个方程式组。

理论上讲应该有一个k值满足这些方程,但由于噪声的原因,可能没有解满足这个方程组。为了解决这个问题,我们采用核密度估计的方法。

通过实验发现:虽然噪声在很大程度上影响了基本方程式,但解出的根实际上仍然包围着真正的根。从各种测量得到所有根的分布显示为一个峰形。只要我们收集足够的特征点对,通常30~70
足够,就能找到这个根。

核密度估计函数定义为:

其中,函数称为核函数,h是带宽。本文中固定高斯核的带宽为0.3。

我们绘制出根的分布密度函数曲线,找到峰值对应的横坐标值即为我们需要求解的校正参数值。

3一个参数DM模型的失真校正

对大多数失真图像而言,只需要一个参数就能够讨论它的失真。因此使用一个参数DM模型作为要研究的失真模型。

假设失真中心e为图像坐标系统的原点,L(r,d)=1+kr2L(r,d)=1+kr^2L(r,d)=1+kr2,则表达式(4)变形为:

根据算法思想,失真校正的具体步骤如下:
(1)输入同一场景两视点的失真图像,归一化图像坐标,使得归一化的失真半径总是在0和1之间变化。归一化坐标可以提高失真参数的估计精度,对于DM模型,失真参数k的变化范围在一2到0之间。

(2)采用sift方法进行特征点的提取和匹配。

(3)选取50组特征点对,采用核密度估计算法求解方程组的根,以根的实部为横坐标,根的分布密度函数为纵坐标绘制曲线,峰值所对应的实部即为校正参数。

(4)根据校正参数对两幅失真图像进行校正

结束

【鱼眼镜头3】[鱼眼畸变模型]:除法模型(核密度估计径向失真校正方法)相关推荐

  1. 【深度学习】深度学习模型中的信任危机及校正方法

    ‍ ‍作者: 北邮 GAMMA Lab 硕士生 刘洪瑞,副教授 王啸 1 前言 深度学习在计算机视觉.自然语言处理.数据挖掘等诸多研究领域中的潜力被广泛认可,在目标检测.语音识别.医疗检测.金融欺诈检 ...

  2. 核密度估计及其Python实践

    一.参数估计简介 很多情况下,我们只有有限的样本集,而类条件概率密度函数p(x|ωi)和先验概率P(ωi)是未知的,需要根据已有样本进行参数估计,然后将估计值当作真实值来使用. 由给定样本集求解随机变 ...

  3. 鱼眼相机的成像模型与畸变校正

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨11号线人 来源丨十一号组织 "800万像素","250m测距能力 ...

  4. 从普通相机模型到鱼眼畸变模型--标定与去畸变

    目录 普通相机模型 普通成像模型 针孔模型与透镜组: 径向畸变 切向畸变 现代手机摄像头的基本组成 内参矩阵 畸变模型 张氏标定法 鱼眼模型 透镜组 r和f的进一步说明 等距投影模型(OpenCV:: ...

  5. 鱼眼畸变矫正-S样板图处理小记

    3月底接到合作方S发过来的他拍的产品图像, 让我用畸变校正程序帮他校正一下,并把效果图发给他,说效果可以的话可以进行合作. 我接到需求后,先打开S发过来的图像,一看就是用鱼眼镜头所拍摄的图像,视角应该 ...

  6. 【水声通信】使用Bellohop模型产生水声信道,采用相干检测的方法进行PSK、QAM调制解调【matlab代码】

    源码 https://blog.csdn.net/qq_44394952/article/details/124490764?spm=1001.2014.3001.5502 1.实验目的 (1)学习并 ...

  7. R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估

    R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...

  8. 为多模型寻找模型最优参数、多模型交叉验证、可视化、指标计算、多模型对比可视化(系数图、误差图、混淆矩阵、校正曲线、ROC曲线、AUC、Accuracy、特异度、灵敏度、PPV、NPV)、结果数据保存

    使用randomsearchcv为多个模型寻找模型最优参数.多模型交叉验证.可视化.指标计算.多模型对比可视化(系数图.误差图.classification_report.混淆矩阵.校正曲线.ROC曲 ...

  9. R语言构建logistic回归模型:构建模型公式、拟合logistic回归模型、模型评估,通过混淆矩阵计算precision、enrichment、recall指标

    R语言构建logistic回归模型:构建模型公式.拟合logistic回归模型.模型评估,通过混淆矩阵计算precision.enrichment.recall指标 目录

  10. R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图、混淆矩阵、准确率、精确度、召回率、ROC、AUC)、PRTPlot函数获取logistic模型最优阈值(改变阈值以优化)

    R语言glm拟合logistic回归模型:模型评估(模型预测概率的分组密度图.混淆矩阵.Accuray.Precision.Recall.ROC.AUC).PRTPlot函数可视化获取logistic ...

最新文章

  1. Linux 文件查找命令
  2. 《30天自制操作系统》前言、目录、样章欢迎阅读!
  3. java kmp算法_KMP算法java版实现
  4. java----DBUtils知识点补充
  5. 【转】LCS和LCS服务器应用程序概述
  6. 开始使用Google Analytics 示例
  7. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源
  8. linux内核的外部接口函数,linux内核中GPIO的使用(二)--标准接口函数
  9. 打开计算机属性的命令,电脑双击打开的是属性怎么办
  10. Handler用法总结
  11. java 国家名称排序,我有一个国家名单。我想按字母顺序对它进行排序,除了两个我想放在第一位的国家...
  12. NumPy Essentials 带注释源码 二、NumPy 数组对象
  13. 生命中的七堂课(转)
  14. Redis 官方推出可视化工具,颜值爆表,功能真心强大!这是不给其他工具活路啊!...
  15. 5.3 数据通路-专用通路
  16. 安装VMware出现Error 1406:could not write value installpath to key的解决办法
  17. Excel表格快捷键使用
  18. css实现六边形图片(最简单易懂方法实现高逼格图片展示)
  19. 基于改进胶囊网络的文本分类-论文研读
  20. 使用QuickBI制作企业报表门户

热门文章

  1. Windows开发——内存读写API
  2. GAOT工具箱设置交叉概率和变异概率
  3. 安装双系统后无法进入第二系统
  4. 腾讯看点基于 Flink 构建万亿数据量下的实时数仓及实时查询系统
  5. 从 1.9 到 1.11,聊聊 PyFlink 的核心功能演进(附 Demo 代码)
  6. Apache Flink 零基础入门(二):开发环境搭建和应用的配置、部署及运行
  7. Android自定义View【实战教程】3⃣️----Paint类、Path类以及PathEffect类详解
  8. Android View框架总结(三)View工作原理
  9. freebsd mysql tmp_FreeBSD下安装MySQL与MySQLdb笔记
  10. python语言的单行注释以单引号开头_Python语言基础-基本概念、运算符、数据结构、条件与循环...