NeRF从入门到放弃6:两种OpenCV去畸变模型

news2024/11/19 1:45:10

针孔相机和鱼眼相机的去畸变模型是不一样的。

针孔相机的畸变参数有12个,k1~k6是径向畸变参数,p1 p2是切向畸变,s1s4;而鱼眼相机是等距模型,畸变参数只有4个k1k4。

针孔相机

畸变分为径向畸变和切向畸变。

把相机平面坐标系下的点表示为极坐标(r,θ),则径向畸变表示径r变化δr,而切向变换表示角度θ变化δθ。

径向畸变是透镜改变了光线传播,使得光不再直线传播导致的;切向变换是由于透镜安装与成像平面不平行导致的。(SLAM 14讲)

此图是OpenCV官方文档示例https://docs.opencv.org/3.4/d9/d0c/group__calib3d.html,很清晰。

在这里插入图片描述

桶形畸变和枕形畸变

假设只有k1,如果k1大于0,则x’’ = x’(1+k1r2),x’‘>x’,去畸变后的图像会变大,为帧形畸变;反之为桶形畸变。

在这里插入图片描述

针孔相机去畸变函数

cv2.undistort(image, K, distCoeffs)

distCoeffs格式为

img

也就是说,如果只传入4个参数,则是k1,k2,p1,p2,后面的参数都是0.

鱼眼相机

官方文档公式推导https://docs.opencv.org/3.4/db/d58/group__calib3d__fisheye.html
在这里插入图片描述

鱼眼相机去畸变函数

distCoeffs为k1,k2,k3,k4

image_undis = cv2.fisheye.undistortImage(image, K, distCoeffs, None,
                                                     np.copy(K))

  1. 图片去畸变
def undistort_images(image_dir,
                     output_dir,
                     K,
                     distCoeffs,
                     is_equidistant: bool = False):
    for img in tqdm(sorted(os.listdir(image_dir))):
        image = cv2.imread(f'{image_dir}/{img}')
        if is_equidistant:
            image_undis = cv2.fisheye.undistortImage(image, K, distCoeffs, None,
                                                     np.copy(K))
        else:
            image_undis = cv2.undistort(image, K, distCoeffs)
        cv2.imwrite(f'{output_dir}/{img}', image_undis)

  1. 参考链接

​ 针对OpenCV官方文档的翻译:https://blog.csdn.net/Thomson617/article/details/103987952
https://github.com/nerfstudio-project/nerfstudio/issues/868

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

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

相关文章

链式结构二叉树练习

一.二叉树的前序遍历 想要输出所给值,就要先用数组将数据存储起来,所以这里我们单独创建一个前序遍历函数,将所要数据前序遍历并放入数组,代码如下: void preOrder(struct TreeNode* root, int* a, int* pi)//前序遍历…

新鲜出炉的信息化一机两用方案

在信息化日益发展的今天,网络安全问题愈发凸显其重要性。尤其是在政府和企事业单位中,如何在保证业务流畅和工作效率的同时,确保信息高安全性,成为了一个亟待解决的问题。而“一机两用”政策,正是针对这一需求而提出的…

如何理解:业务架构、应用架构、数据架构、技术架构与系统和复杂度

关于系统的理解 1.1 系统的概述 随着人类社会的发展,人们面对越来越多的规模巨大、关系复杂、参数众多地复杂问题,这些问题的复杂度已经远远超出人类的理解能力,系统论就是为了分析和解决这些问题而生。我们平时接触的计算机系统包括软件系统…

C语言 | 文件操作(下)【必收藏】

文件操作(下) 5、文件的顺序读写5.1 顺序读写函数介绍5.1.1 fputc与fgetc5.1.2 fputs与fgets5.1.3 fprintf与fscanf5.1.4 fread与fwrite 5.2 对比一组函数 6. 文件的随机读写6.1 fseek6.2 ftell6.3 rewind 7. 文件读取结束的判定7.1 被错误使用的feof 8.…

Python爬虫实战:利用代理IP批量下载哔哩哔哩美女视频

文章 目录 1.前言2.爬取目标3.准备工作3.1 环境安装3.2 代理免费获取 四、爬虫实战分析4.1 翻页分析4.2 获取视频跳转链接4.3 下载视频4.4 视频音频合并4.5 完整源码 五、总结 1.前言 粉丝们(lsp)期待已久的Python批量下载哔哩哔哩美女视频教程它终于来…

Java中File文件和IO流

File文件和IO流 概述 FIle是java.io.下面的包,用于代表当前操作系统的文件 可以获文件信息,判断文件类型,创建删除文件夹 注意:File只能对文件本身进行操作,不能读写文件里面存储的数据 …

Docker三分钟部署ElasticSearch平替MeiliSearch轻量级搜索引擎

👩🏽‍💻个人主页:阿木木AEcru (更多精彩内容可进入主页观看) 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、 …

基于web的摩托车销售系统的设计与实现-计算机毕业设计源码031706

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对摩托车销售系统等问题,对摩托车…

手把手教你使用kimi创建流程图【实践篇】

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 引言 在昨日的文章中,我们介绍了如何使用Kimi生成论文中的流程图。今天,我们将更进一步,通过实践案例来展示Kimi在生成流程图方面的应用。这不仅将加…

火绒被骂惨,良心居然也翻车?剩下3款软件还被误认为外国人开发

万万没想到,公认的国产良心软件“火绒”,居然也翻车,很多网友对其大失所望,甚至忍不住吐槽让他不要砸了自己的招牌。 事情的起因是这样的,火绒推出应用商店,并于正式公测,这是要逐渐走向全家桶的…

淘宝店铺商家订单API-接入ERP,多平台订单同步的利器

淘宝开放平台给商家们提供了丰富的API,以方便大家扩展业务流程。但是需要调用这些API,商家们要提交资质审核,审核条件也是很严格的。第三方数据公司的存在可以为大家解决这个问题。 custom-自定义API操作 请求参数 请求参数:ap…

联发科MT6775(Helio P70)_MTK6775处理器规格参数_处理器资料

联发科MT6775(Helio P70)采用了台积电12nm工艺制程八核处理器,由4颗 Arm Cortex-A73 2.1GHz 4颗Arm Cortex-A53 2.0GHz组成。其GPU为ARM Mali-G72 MP3,运行时高达900MHz,比上一代Helio P60效能提升了13%。 值得注意的是,联发科MT…

java打印金字塔paremid和空心金字塔

java打印金字塔 首先确定每行打印几个空格,在确定每行打印几个* 设总层数为layers,当前层数为i。 则每行打印空格数layers-i,每行打印星号数2*i-1 import java.util.Scanner;public class Paremid{public static void main(String[] args) …

搜索引擎的“道”

目录 1. 网页下载(解决有没有的问题) 1.1 遍历算法 1.1.1 广度优先搜索 1.1.2 深度优先搜索 1.2 网络爬虫 1.2.1 用BFS 还是DFS? 1.2.2 URL提取 1.2.3 哈希表存储URL下载记录 2. 索引构建(解决快不快的问题) 2.1 布尔…

AI作画Prompt不会写?Amazon Bedrock Claude3.5来帮忙

最新上线的Claude3.5 Sonnet按照官方介绍的数据来看,在多方面超越了CPT-4o,是迄今为止最智能的模型。 而跟上一个版本相比,速度是Claude 3 Opus的两倍,成本只有其五分之一。 Claude3.5 Sonnet不仅擅长解释图表、图形或者从不完…

AI赋能影视解说:Rap说唱玩法拆解!

在影视解说的领域,竞争一直非常激烈,众多创作者纷纷涌入这个热门的赛道。为了在众多声音中脱颖而出,创新成为了关键。最近,一种结合AI技术的解说方式——Rap说唱解说,以其新颖的形式和高效的创作过程,赢得了…

Linux学习第52天:Linux网络驱动实验(三):一往(网)情深

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 许久没有更新,的确是最近有点懈怠了。没有任何借口,接受所有的批评。接下来无论如何也要坚持下去,不管处于什么境地、什么原因&am…

vue3 Cesium 离线地图

1、vite-plugin-cesium 是一个专门为 Vite 构建工具定制的插件,用于在 Vite 项目中轻松使用 Cesium 库。它简化了在 Vite 项目中集成 Cesium 的过程。 npm i cesium vite-plugin-cesium vite -D 2、配置vite.config.js import cesium from vite-plugin-cesiumexp…

生产环境:CentOS 7 Docker 20.10.19离线部署(为离线部署k8s做准备)

背景描述:离线部署Docker环境 在现代IT基础设施中,Docker已经成为应用容器化的标准工具。它简化了应用程序的部署和管理,使开发者和运维工程师能够以更高的效率和一致性进行工作。然而,在某些场景下,由于安全性、网络…

WMS在发展过程中会遇到哪些挑战?

在仓库管理系统(Warehouse Management System, WMS)的发展过程中,会遇到以下一些挑战: 1、技术整合: 将WMS与现有的ERP(企业资源计划)、TMS(运输管理系统)等系统进行有效…