鱼眼相机模型-MEI

参考文献: Single View Point Omnidirectional Camera Calibration from Planar Grids

1. 相机模型如下:

   // 相机坐标系下的点投影到畸变图像// 输入:相机坐标系点坐标cam  输出: 畸变图像素点坐标disPtvoid FisheyeCamAdapter::cam2DistImg(cv::Point3f &cam, cv::Point2f &disPt){double r = cv::norm(cam);double dx_u = 0, dy_u = 0;if (r != 0){cv::Point3f ps = cam / r;double x = ps.x / (ps.z + camInt.fXi);double y = ps.y / (ps.z + camInt.fXi);distortion(x, y, &dx_u, &dy_u);x += dx_u;y += dy_u;disPt.x = x * camInt.fGammaX + camInt.fCx;disPt.y = y * camInt.fGammaY + camInt.fCy;}else{disPt.x = camInt.fCx;disPt.y = camInt.fCy;}}// 无畸变图像到畸变图像void FisheyeCamAdapter::distortion(double mx_u, double my_u, double *dx_u, double *dy_u){double mx2_u = 0., my2_u = 0., mxy_u = 0., rho2_u = 0., rad_dist_u = 0.;double k1 = camInt.distortCoeff[0];double k2 = camInt.distortCoeff[1];double p1 = camInt.distortCoeff[2];double p2 = camInt.distortCoeff[3];double k5 = camInt.distortCoeff[4];mx2_u = mx_u * mx_u;my2_u = my_u * my_u;mxy_u = mx_u * my_u;rho2_u = mx2_u + my2_u;rad_dist_u = k1 * rho2_u + k2 * rho2_u * rho2_u + k5 * rho2_u * rho2_u * rho2_u;*dx_u = mx_u * rad_dist_u + 2 * p1 * mxy_u + p2 * (rho2_u + 2 * mx2_u);*dy_u = my_u * rad_dist_u + 2 * p2 * mxy_u + p1 * (rho2_u + 2 * my2_u);}

   反投影过程:畸变图中的像素坐标计算相机坐标系下坐标

    cv::Point3f FisheyeCamAdapter::pointDis2Camera(const cv::Point2f &disPoint){double mx_d, my_d, mx_u, my_u;double lambda;double xi = camInt.fXi;// Lift points to normalised planefloat inv_K11 = 1 / camInt.fGammaX;float inv_K13 = -camInt.fCx / camInt.fGammaX;float inv_K22 = 1 / camInt.fGammaY;float inv_K23 = -camInt.fCy / camInt.fGammaY;mx_d = inv_K11 * (disPoint.x) + inv_K13;my_d = inv_K22 * (disPoint.y) + inv_K23;undistortGN(mx_d, my_d, &mx_u, &my_u, 100); // 去畸变坐标// Lift normalised points to the sphere (inv_hslash)cv::Point3f camera;if (xi == 1){lambda = 2 / (mx_u * mx_u + my_u * my_u + 1);camera.x = lambda * mx_u;camera.y = lambda * my_u;camera.z = lambda - 1;}else{double sqrt_i = 1.0 + (1.0 - xi * xi) * (mx_u * mx_u + my_u * my_u);if (sqrt_i < 0){camera.x = -1000000;camera.y = -1000000;camera.z = 1;}else{lambda = (xi + sqrt(sqrt_i)) / (1.0 + mx_u * mx_u + my_u * my_u);camera.x = lambda * mx_u;camera.y = lambda * my_u;camera.z = lambda - xi;}}return camera;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java基础面试题003】Java的JIT | AOT是什么?

回答重点 Java中的JIT编译器&#xff08;Just-In-Time&#xff0c;即时编译&#xff09;是一种在程序运行时将字节码转为机器码的技术。 因为这种转换是在程序运行时即时进行的&#xff0c;因此得名"Just-In-Time"。 JIT监测到热点代码&#xff08;频繁执行的代码段…

使用 `aircrack-ng`扫描、获取握手包

使用 aircrack-ng 工具集来扫描 5GHz WiFi 网络的过程与扫描 2.4GHz 网络类似&#xff0c;但需要注意一些特定的配置和命令。以下是一个详细的步骤指南&#xff0c;帮助你在 5GHz 频段上扫描 WiFi 网络并捕获握手包。 ### 前提条件 1. **操作系统**&#xff1a;通常在 Linux 系…

[GKCTF 2021]签到

[GKCTF 2021]签到 wireshark跟踪http流&#xff0c;基本编解码&#xff0c;倒叙&#xff0c;栅栏密码 找到cat /f14g 把包里返回的字符串先hex解码&#xff0c;再base64解码&#xff0c;看到一个时间是倒叙&#xff0c;不含flag 继续往下面翻&#xff0c;可以看到cat%2Ff14g%7…

【Linux】【字符设备驱动】深入解析

Linux字符设备驱动程序用于控制不支持随机访问的硬件设备&#xff0c;如串行端口、打印机、调制解调器等。这类设备通常以字符流的形式与用户空间程序进行交互。本节将深入探讨字符设备驱动的设计原理、实现细节及其与内核其他组件的交互。 1. 引言 字符设备驱动程序是Linux内…

【论文笔记】Tool Learning with Foundation Models 论文笔记

Tool Learning with Foundation Models 论文笔记 文章目录 Tool Learning with Foundation Models 论文笔记摘要背景&#xff1a;工作&#xff1a; 引言工具学习的发展本文工作&#xff08;大纲&目录&#xff09; 背景2.1 工具使用的认知起源2.2 工具分类&#xff1a;用户界…

电阻可靠性的内容

一、影响电阻可靠性的因素&#xff1a; 影响电阻可靠性的因素有温度系数、额定功率&#xff0c;最大工作电压、固有噪声和电压系数 &#xff08;一&#xff09;温度系数 电阻的温度系数表示当温度改变1摄氏度时&#xff0c;电阻阻值的相对变化&#xff0c;单位为ppm/℃.电阻温…

GitLab: You cannot create a branch with a SHA-1 or SHA-256 branch name

最近在迁移git库&#xff0c;把代码从gerrit迁移到gitlab&#xff0c;有几个库报错如下&#xff1a; GitLab: You cannot create a branch with a SHA-1 or SHA-256 branch name ! [remote rejected] refs/users/73/373/edit-95276/1 -> refs/users/73/373/edit-95276/1 (p…

Redis等Spring Cache 框架 实现基于注解的缓存功能

Spring Cache 框架 实现基于注解的缓存功能 底层 基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法 如果缓存没有数据 则通过反射走方法。 概念 缓存 相当于之前的事务处理 同步更改 只是提供了一层抽象 底层可以切换不同的缓存实现 EHCach…

C#中的工厂模式

在C#中&#xff0c;工厂模式&#xff08;Factory Pattern&#xff09; 是一种常见的设计模式&#xff0c;它属于创建型模式&#xff0c;主要用于定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。通过使用工厂模式&#xff0c;客户端代码不需要直接实例化具体…

【Zookeeper】三,Zookeeper的安装与基本操作

文章目录 安装Zookeeper下载解压解压后的目录结构运行Zookeeper 基本操作 安装Zookeeper 下载 官网下载Zookeeper&#xff0c;会得到一个tar包&#xff0c;如&#xff1a;apache-zookeeper-3.8.4-bin.tar.gz 解压 tar -xvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/loca…

MyBatis(mybatis_plus)中TypeHandler的使用教程

MyBatis&#xff08;mybatis_plus&#xff09;中TypeHandler的使用教程 一.TypeHandler作用及其使用场景 在我们平常开发操作数据库时&#xff0c;查询、插入数据等操作行为&#xff0c;有时会报数据类型不匹配异常&#xff0c;就可以得知数据的类型是不唯一的必然是多种不同…

【Python TensorFlow】进阶指南(续篇四)

在前面的文章中&#xff0c;我们探讨了TensorFlow在实际应用中的多种高级技术和实践。本文将继续深入讨论一些更为专业的主题&#xff0c;包括模型压缩与量化、迁移学习、模型的动态调整与自适应训练策略、增强学习与深度强化学习&#xff0c;以及如何利用最新的硬件加速器&…

C++基础入门详细教程-6函数

6函数 6.1概述 作用&#xff1a;将一段经常使用的代码封装起来&#xff0c;减少重复代码 一个较大的程序&#xff0c;一般分为若干个程序块&#xff0c;每个模块实现特定的功能。 6.2函数的定义 函数的定义一般主要有5个步骤&#xff1a; 1.返回值类型 2.函数名 3.参数…

HASH256开源代码计算错误问题

计算量超500KB报错 OTA升级中可能会涉及到CRC、hash校验等算法&#xff0c;小编从网上抄到了HASH256的源码&#xff0c;拿来使用的时候却发现了一个问题&#xff0c;当源文件约大于500KB的时候会发现其计算出的hash值出现错误。 经过实际测试得知&#xff0c;当源文件大于约50…

【人工智能】Python常用库-TensorFlow常用方法教程

TensorFlow 是一个广泛应用的开源深度学习框架&#xff0c;支持多种机器学习任务&#xff0c;如深度学习、神经网络、强化学习等。以下是 TensorFlow 的详细教程&#xff0c;涵盖基础使用方法和示例代码。 1. 安装与导入 安装 TensorFlow&#xff1a; pip install tensorflow…

Spring Boot教程之十一:获取Request 请求 和 Put请求

如何在 Spring Boot 中获取Request Body&#xff1f; Java 语言是所有编程语言中最流行的语言之一。使用 Java 编程语言有几个优点&#xff0c;无论是出于安全目的还是构建大型分发项目。使用 Java 的优点之一是 Java 试图借助类、继承、多态等概念将语言中的每个概念与现实世…

uniapp实现组件竖版菜单

社区图片页面 scroll-view scroll-view | uni-app官网 (dcloud.net.cn) 可滚动视图区域。用于区域滚动。 需注意在webview渲染的页面中&#xff0c;区域滚动的性能不及页面滚动。 <template><view class"pics"><scroll-view class"left"…

Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架

一、项目构建环境准备 在构建Vue项目之前&#xff0c;需要搭建Node环境以及Vue-CLI脚手架&#xff0c;由于本篇文章为上一篇文章的补充&#xff0c;也是为了给大家分享更为完整的搭建vue项目方式&#xff0c;所以环境准备部分采用Vue教程&#xff5c;搭建vue项目&#xff5c;V…

Rust面向对象特性

Rust的面向对象特性 本文已同步至自建博客 Rust在设计的时候受到很多编程范式的影响&#xff0c;包括面向对象。面向对象的语言共有一些共同的特征&#xff0c;即对象、封装和继承。 封装 一个对象的实现细节对使用该对象的代码不可访问。因此&#xff0c;对象交互的唯一方…

前海湾地铁的腾通数码大厦背后的临时免费停车点探寻

临时免费停车点&#xff1a;前海湾地铁的腾通数码大厦背后的桂湾大街&#xff0c;目前看不仅整条桂湾大街停了​车&#xff0c;而且还有工地餐点。可能是这个区域还是半工地状态&#xff0c;故暂时还不会有​罚单的情况出现。 中建三局腾讯数码大厦项目部A栋 广东省深圳市南山…