OpenCV中去畸变的方法一种是:通过cv::getOptimalNewCameraMatrix()得到新的内参矩阵,再通过cv::initUndistortRectifyMap()得到原图和去畸变后图的映射关系,最后通过cv::remap()将原图映射到新图;另一种是使用cv::undistort()直接得到去畸变的图像,The function is simply a combination of initUndistortRectifyMap (with unity R ) and remap (with bilinear interpolation)。也就是说这两种方法本质上是一样的,只需要理解第一种方法就行。

void cv::undistort(InputArray src,

OutputArray dst,

InputArray cameraMatrix,

InputArray distCoeffs,

InputArray newCameraMatrix = noArray()

)

首先要关注cv::getOptimalNewCameraMatrix()函数,在cv::initUndistortRectifyMap()和cv::undistort()都需要用到(参数newCameraMatrix )。

Mat cv::getOptimalNewCameraMatrix(InputArray cameraMatrix,

InputArray distCoeffs,

Size imageSize,

double alpha,

Size newImgSize = Size(),

Rect * validPixROI = 0,

bool centerPrincipalPoint = false

)

主要关注参数alpha:Free scaling parameter between 0 (when all the pixels in the undistorted image are valid) and 1 (when all the source image pixels are retained in the undistorted image).

OpenCV对该函数的介绍:The function computes and returns the optimal new camera matrix based on the free scaling parameter. By varying this parameter, you may retrieve only sensible pixels alpha=0 , keep all the original image pixels if there is valuable information in the corners alpha=1 , or get something in between. When alpha>0 , the undistorted result is likely to have some black pixels corresponding to "virtual" pixels outside of the captured distorted image. The original camera matrix, distortion coefficients, the computed new camera matrix, and newImageSize should be passed to initUndistortRectifyMap to produce the maps for remap .意思就是alpha控制着下图中红色框的大小,alpha=0时,去畸变后的图像为小的红色框;alpha=1时,图像为大的红色框,包含全部原始图像的像素。alpha为0到1之间时去畸变后的图像介于两个红色框之间。

实现过程是

// Interpolate between the two optimal projections

M[0][0] = fx0*(1 - alpha) + fx1*alpha;

M[1][1] = fy0*(1 - alpha) + fy1*alpha;

M[0][2] = cx0*(1 - alpha) + cx1*alpha;

M[1][2] = cy0*(1 - alpha) + cy1*alpha;

其中fx0,cx0和cy0是alpha=0时的内参,fx1,cx1和cy1是alpha=1时的内参。

我们可以通过cv::getOptimalNewCameraMatrix()得到对应的内参矩阵用于后面我们的计算。

unity 畸变_去畸变过程中内参矩阵的变化相关推荐

  1. 水磨石地面分隔条设置示意图_水磨石抛光过程中什么时候用百洁垫?什么时候用百亮钢丝棉?...

    近年来,高亮度的水磨石经常出现在大家的视线里,这是一种水磨石固化打磨工艺广泛运用地结果.高亮度的水磨石给传统水磨石带来的不仅仅是漂亮,更是一种档次的提升,把一种原本很普通的水磨石变成了如同大理石一样有 ...

  2. 怎么查找电脑中的流氓软件_玻璃丝网印刷过程中油墨出现问题怎么查找原因解决问题?...

    在印刷过程中,假如呈现油墨不上色.刮不干净.咬(吃或溶色)色.不干.返黏.干板.印刷速度快不起来等状况,或制品上呈现着色力差.附着力低.橘皮色.飞丝.拉毛.挂脏.白点.漏印等现象时,我们一般能够从以下 ...

  3. 电脑开机一会就蓝屏怎么回事_电脑使用过程中会蓝屏,老板三分钟做系统:硬盘坏了,四百换好!...

    我们常见的电脑故障有电脑蓝屏.电脑黑屏.电脑卡顿.卡logo.死机等,这些故障现象有的是硬件问题引起,有的是软件问题引起,对于硬件故障最坏的打算就是更换硬件,软件故障的话最坏的打算就是重装系统了,今天 ...

  4. 动态域名解析服务器离线会引起什么_动态域名解析过程中可能出现的问题及解决方案...

    动态域名在企业中应用非常广泛,金万维动态域名作为一款平稳运行10余年的软件,已是被业界所熟知.该系统由两部分构成,一部分是客户端,运行在用户的主机上:另一部分是服务器,由金万维负责运行. 谓动态域名解 ...

  5. sftp工具都有哪些_古钱币收藏过程中必不可少的工具都有哪些?(建议收藏)...

    摘要:笔者将从对版和分类两个部分去详细介绍钱币收藏过程中必须用到地各种工具.对版包括量.测.查三个步骤:分类工具包括大.小册子.铜钱木板.铜钱环以及单页册等多种分类方式.从而让大家更好地对钱币进行了解 ...

  6. 在哪里刷题_刷题过程中,这些坑你踩了几个?

    练习卷做了一套又一套,题目刷了一遍又一遍,一考试却发现,分数进步并不大,有些同学甚至没有进步.刷刷刷,为什么分刷不上来?你可能掉进了这些刷题误区--一看就会不少同学在做题的过程中遇到不会的题目的时候, ...

  7. 神经网络测试集loss不变_神经网络训练过程中不收敛或者训练失败的原因

    在面对模型不收敛的时候,首先要保证训练的次数够多.在训练过程中,loss并不是一直在下降,准确率一直在提升的,会有一些震荡存在.只要总体趋势是在收敛就行.若训练次数够多(一般上千次,上万次,或者几十个 ...

  8. 安装python系统找不到指定的路径_解决安装过程中显示“系统找不到指定的路径”-百度经验...

    解决软件安装过程中显示"系统找不到指定的路径"?有些用户在变声专家一半时候弹出"无法打开....系统找不到指定的路径"字样,解决方法非常简单,如遇上述问题的小伙 ...

  9. 冲压过程中,冲裁力的变化过程

    冲裁力即冲剪产品时, 所需的冲床压力, 计算冲裁力, 是为了合理选择冲床的吨位, 使冲床得到更合理更经济的利用. 1.1 冲压过程中, 冲裁力的变化过程 首先冲头下降达到材料板上开始冲剪, 冲剪力会逐 ...

最新文章

  1. Python应用实战-如何通过python对Excel进行常规性操作
  2. 英语语法---介词详解
  3. Class Diagram
  4. hadoop服务器系统设置win10,win10系统hadoop安装配置的设置技巧
  5. 数据结构 (一) ----- 数据结构基本概念基于数组实现线性表
  6. UnityShader23:顶点动画
  7. Spring面试问题和答案
  8. 程序员工作交接文档怎么写_IT交接事项.doc
  9. JS获取屏幕宽度高度
  10. 洛谷P3369 【模板】普通平衡树 红黑树实现
  11. 无线通信——C-V2X是什么?
  12. JAVA公司网站系统毕业设计 开题报告
  13. 如何优雅使用JDK8中的Stream对list集合中的某值求和
  14. 脚本小子--------python脚本循环导出H3C华三核心防火墙context虚拟防火墙配置(你凝视bug,bug也在凝视你)
  15. 【matlab】spm数据处理
  16. Android证书生成(android studio)
  17. 想参加多人运动?并行流(ParallelStream)模式教你成为时间管理大师
  18. 追寻凌云梦——对话阿里云总裁王坚
  19. info()函数与describe函数
  20. 互联网+制造上演两马战:腾讯向左、阿里向右

热门文章

  1. 职场上个人的核心技术_职场上千万要对这三个人做背景调查,否则就会出大事 !...
  2. zabbix监控日志
  3. 使用Zabbix监控Tomcat
  4. 单片机芯片之——图解74HC595(第一部分)
  5. canvas toDataURL
  6. No.5 因果图法与正交试验法
  7. 跨境电商必读,WhatsApp营销入门指南!
  8. UE4C++基础(二)
  9. 必须学会看官方的英文文档资料等
  10. YYModel 源码分析:字典转模型