基于双经度模型的鱼眼图像畸变校正

文章目录

    • 1. 简介
    • 2. 基本原理
      • 基本思路
      • 从目标图到半球面模型的投影
      • 从半球面模型到鱼眼图像的投影
        • 正交投影
        • 等距投影
    • 3.实际效果示例
      • 论文中的原图去畸变
    • 4. 有意思的玩法
      • 5. 对生成的鱼眼图去畸变

1. 简介

算法来自论文《基于双经度模型的鱼眼图像畸变矫正方法》

2. 基本原理

在这里插入图片描述

基本思路

去畸变需要建立一个投影链路,这里是从目标图(最终要得到的去畸变的图)到半球面模型的投影,再从半球面模型到鱼眼图投影。目标图的ij坐标转换为半球面模型上的经度值(类比地球经纬度描述表面位置),半球面模型到鱼眼图的投影有多种方式,这里采用的正交投影和等距投影。目标图到半球面再到鱼眼图上都是一一对应的。

从目标图到半球面模型的投影

α \alpha α为y方向的经度值, β \beta β为x方向的经度值,经度值范围 [ 0 , π ] [0,\pi] [0,π]
下面的公式5 6就建立了从目标图到半球面的坐标的一一对应关系
在这里插入图片描述

在这里插入图片描述
注意:这里的公式有点问题,z一定是正数,但是x,y却不一定,忽略x,y的符号会导致最终得到一个只有一个象限的图,看起来像是一朵四片重复的花瓣的花。

从半球面模型到鱼眼图像的投影

正交投影

下面的公式20 21建立了从半球面到鱼眼图的一一对应关系。
在这里插入图片描述

等距投影

下面的公式28 29建立了从半球面到鱼眼图的一一对应关系。
在这里插入图片描述

3.实际效果示例

论文中的原图去畸变

在这里插入图片描述
下面左边是最近邻插值的效果,右侧为双线性插值的结果
在这里插入图片描述

4. 有意思的玩法

正常去畸变的链路是从目标图—>半球面—>鱼眼图,这样可以去畸变,那链路反过来呢?那不是就可以制造鱼眼图的效果了吗!yes,是的。那后面验证效果可以用生成的鱼眼图来做去畸变。(目前有的数据不能发,所以才有了这个自己造鱼眼图的想法!)
左边为原图,右侧为生成的鱼眼图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5. 对生成的鱼眼图去畸变

左侧为输入图,右侧为去畸变的图。从效果来看对生成的鱼眼图去畸变效果非常好,这也就说明了在去畸变的时候,建立和真实的投影模型一致的模型是多么重要,用简单的模型来模拟真实的物理世界,还是很有意思,但是怎么去近似这个真实的物理过程真是件需要创造力的事情。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法也还算是很简单,初版一天完成,后面稍微修改了一点,总的代码量300-400行左右。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java实现的网上书店系统(附带完整源码)

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者 实现技术:JSP技术;javaBean;servlet;MySql数据库。 系统功能结构图 该系统为MVC结构,它的运行环境分客户端、应用服务器端和数据库服务器端三部分 书店系统需求分析: 通过…

charts3D地球--添加航线

要在地球视角下画出海运路线图 方案 添加 globl 地球创建geo地理坐标系创建canvas对象用于承载地图世界地图this.worldChart //初始化canvas节点let cav document.createElement("canvas");this.$echarts.registerMap("world", geoJson);this.worldCha…

【Linux】环境变量是什么?如何配置?详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

相同的树——java

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&…

C#高级编程笔记-泛型

本章的主要内容如下: ● 泛型概述 ● 创建泛型类 ● 泛型类的特性 ● 泛型接口 ● 泛型结构 ● 泛型方法 目录 1.1 泛型概述 1.1.1 性能 1.1.2 类型安全 1.1.3 二进制代码的重用 1.1.4 代码的扩展 1.1.5 命名…

SpringBootWeb 篇-深入了解请求响应(服务端接收不同类型的请求参数的方式)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 请求响应概述 1.1 简单参数 1.2 实体参数 2.3 数组集合参数 2.4 日期参数 2.5 json 参数 2.6 路径参数 3.0 完整代码 1.0 请求响应概述 当客户端发送不同的请求参…

【驱动】SPI

1、简介 SPI(Serial Peripheral interface)串行外设接口。 特点: 高速:最大几十M,比如,AD9361的SPI总线速度可以达到40MHz以上全双工:主机在MOSI线上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它一主多从:主机产生时钟信号,通过片选引脚选择…

微火全域外卖城市合伙人究竟是什么?详细介绍

随着外卖市场的蓬勃发展,微火全域外卖团购业务正逐渐崭露头角,成为商家与消费者之间的新桥梁。这种业务模式,也被称为全域合伙人,其魅力在于其独特的多平台销售策略和简便的管理系统。那么,这种全域外卖城市合伙人&…

N1077B keysight 是德 光/电时钟恢复设备,参数

Keysight N1077B是一款光/电时钟恢复设备,支持115 MBd至24 GBd的数据速率范围,适用于多模和单模光信号以及电信号。该设备能够处理PAM4和NRZ两种类型的数据信号,并提供符合标准的时钟恢复功能。 型 号:N1077B/A 名 称&#xff1a…

【教程向】从零开始创建浏览器插件(四)探索Chrome扩展的更多常用API

探索Chrome扩展的更多常用API 在Chrome扩展开发中,除了最基础的API外,Chrome还提供了一系列强大的API,允许开发者与浏览器的各种功能进行交互。本文将介绍其中几个常用的API,并提供详细的示例代码帮助您开始利用这些API。 书签…

【Spring】初识 Spring AOP(面向切面编程)

目录 1、介绍AOP 1.1、AOP的定义 1.2、AOP的作用 1.3、AOP的核心概念及术语 2、AOP实现示例 3、EnableAspectJAutoProxy注解 1、介绍AOP 1.1、AOP的定义 AOP(Aspect Orient Programming),直译过来就是面向切面编程,AOP 是一…

大型模型技术构建本地知识库

使用大型模型技术构建本地知识库是一个复杂的过程,涉及到数据科学、机器学习和软件工程等多个领域的知识。以下是构建本地知识库的一般步骤。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.需求分析: 确定知…

软件工程经济学--期末复习资料

软件工程经济学--期末复习资料 前言第一章 绪论第二章 软件工程经济学基础第三章 软件的成本管理与定价分析第四章 软件工程项目评价方法与经济效果评价第五章 软件生产函数、效益分析及不确定性分析第六章 软件工程项目进度计划的制定结尾总结 前言 软件工程经济学&#xff0…

书生作业:XTuner

作业链接: https://github.com/InternLM/Tutorial/blob/camp2/xtuner/homework.md xtuner: https://github.com/InternLM/xtuner 环境配置 首先,按照xtuner的指令依次完成conda环境安装,以及xtuner库的安装。 然后,我们开始尝试…

VBA信息获取与处理第四节:获取唯一非重复值返回数组的代码

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…

scanf留下的那一片云彩

【题目描述】 给出一个由O和X组成的串(长度为1~80),统计得分。每个O的得分为目前连续出现的O的个数,X的得分为0。例如,OOXXOXXOOO的得分为1200100123。 输入第一行表示有n个字符串,后续是n行字…

【matlab基础知识代码】(十八)无约束最优化问题

min下面的x称为优化向量或者是决策变量 匿名函数法 >> f(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)); x0[0; 0]; [x,b,c,d]fminsearch(f,x0), x 0.6111 -0.3056 b -0.6414 c 1 d 包含以下字段的 struct: iterations: 72 funcCount: 137 algor…

Hive SQL-DML-insert插入数据

Hive SQL-DML-insert插入数据 1. 插入静态数据 可以直接插入具体的值到Hive表中: INSERT INTO TABLE tablename (column1, column2, column3) VALUES (value1, value2, value3),(value4, value5, value6),...;2. 插入查询结果 将一条查询的结果直接插入到另一个表中…

软件工程基础知识,软考选择题的重点

本篇知识来自:软件设计师考试同步辅导 ---考点。。。。。,钟彩华 博伟玉 清华出版社,那本书。仅供学习。以下理解都是本人自己认为的。仅供参考。 本书的第132页,第五章知识。 目录 软件工程叙述 软件的生命周期 软件过程 软…

android studio配置Http Proxy

1、问题描述: Error:Unable to tunnel through proxy. Proxy returns “HTTP/1.1 400 Bad Request” 解决:HTTP Proxy设置 1.File→Settings…→System Settings → HTTP Proxy → Auto-detect proxy settings”; 2.勾选下方“Automatic prox…