43.Isaac教程--图像变形

news2024/11/15 8:29:55

图像变形

在这里插入图片描述
ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html

文章目录

  • 图像变形
    • 几何畸变
    • 图像投影
    • 透视畸变校正
      • 径向畸变校正
      • 切向畸变校正
    • 其他相机固有参数
      • 焦距
      • 主点(投影中心)
    • 未失真输出的光学特性
      • 输出主点
      • 输出焦距
      • 输出图像大小
      • 输出方向
    • Isaac 不失真Codelet

真实世界拍摄的图像有一定的缺陷,包括:

  • 几何畸变(和其他光学像差)

  • 噪音

  • 渐晕

  • 颜色不平衡

本节介绍用于校正几何失真的可用资源。

大多数计算机视觉算法对渐晕和色彩平衡不敏感。 它们被设计为对噪声具有鲁棒性,但它们往往依赖于理想的透视图像,也称为针孔图像,不会出现失真。

以下是几何扭曲或扭曲图像的示例,后面是校正示例。

扭曲:

矫正:

几何畸变

几何失真通常分为两种形式:径向和切向。

径向畸变本质上是径向对称的,在简单镜头中很常见,目的是尽量减少其他光学像差,例如散光、色差、彗差、场曲率和球面像差。 复合透镜的畸变要小得多,因为它们可以同时最小化所有这些像差,但由于它们体积大且价格昂贵,因此很少出现在机器人等嵌入式应用中。 几何失真可以用单变量多项式建模,并且在采集后很容易在软件中校正。

切向畸变不是径向对称的,尽管它相对于从投影中心辐射的线是对称的。 切向畸变由复合透镜中未对准的元件引起,因此在嵌入式应用中的简单透镜中可以忽略不计。 它是用双变量多项式建模的,也很容易在软件中进行校正。

图像投影

使用典型的相机和镜头获取的投影有两种基本类型:透视/直线/平面和鱼眼/等距/球面。 透视镜头的实际最大视场角 (FOV) 为 120°,而鱼眼镜头可以达到 180° 以上,有些甚至超过 220°。

径向畸变可用于表示具有透视镜头的鱼眼镜头,反之亦然——达到一定的 FOV。 理想透镜与正切(或反正切)函数相关,该函数可以通过靠近投影中心的多项式很好地近似,但在远离投影中心时会迅速发散。 最好使用与镜头最匹配的投影模型。 根据经验,FOV < 90° 应使用透视图作为基础投影,FOV > 120° 应使用鱼眼。

Isaac SDK 支持透视镜头的径向和切向畸变校正,但仅支持鱼眼镜头的径向畸变校正。

透视畸变校正

几何畸变被实现为径向和切向畸变校正的总和。 Isaac SDK 使用 Brown 模型,OpenCV 也使用该模型。 但是,径向和切向系数的顺序不同。 Isaac SDK 使用 { k 0 , k 1 , k 2 , k 3 , k 4 } \{k0,k1,k2,k3,k4\} {k0,k1,k2,k3,k4}
,其中 OpenCV 使用 { k 0 , k 1 , k 3 , k 4 , k 2 } \{k0,k1,k3,k4,k2\} {k0,k1,k3,k4,k2}
. OpenCV 可用于校准相机的固有参数,包括这些系数。

径向畸变校正

径向畸变用以下公式校正:

x 0 = x i + x i ( k 0 r i 2 + k 1 r i 4 + k 2 r i 6 ) x_0 = x_i + x_i(k_0r^2_i + k_1r^4_i + k_2r^6_i) x0=xi+xi(k0ri2+k1ri4+k2ri6)

y 0 = y i + y i ( k 0 r i 2 + k 1 r i 4 + k 2 r i 6 ) y_0 = y_i + y_i(k_0r^2_i + k_1r^4_i + k_2r^6_i) y0=yi+yi(k0ri2+k1ri4+k2ri6)

其中:

r i = x i 2 + y i 2 r_i = \sqrt{x^2_i+y^2_i} ri=xi2+yi2

切向畸变校正

切向畸变用以下公式校正:

x o = x i + 2 k 3 x i y i + k 4 ( r i 2 + 2 x i 2 ) x_o=x_i+2k_3x_iy_i+k_4(r^2_i+2x^2_i) xo=xi+2k3xiyi+k4(ri2+2xi2)

y o = y i + k 3 ( r i 2 + 2 y i 2 ) + 2 k 4 x i y i y_o=y_i+k_3(r^2_i+2y^2_i)+2k_4x_iy_i yo=yi+k3(ri2+2yi2)+2k4xiyi

这也是 OpenCV 使用的模型。

其他相机固有参数

除了畸变之外,相机的另一个固有参数包括焦距和主点。

焦距

数码相机的焦距以像素为单位,但也可以认为是像素/弧度。 理想透视透镜的投影方程为:

r = f tan ⁡ ϑ r=f \tan ϑ r=ftanϑ

理想的鱼眼镜头是:

r = f ϑ r=f ϑ r=fϑ

r r r中是距投影中心的距离, θ θ θ是与光轴的倾斜角。 从这些方程式可以明显看出,焦距等于投影中心的角像素密度——因此解释为像素/弧度。

主点(投影中心)

镜头光轴与成像平面相交的点称为投影的主点或中心。 理想情况下,这将位于所采集图像的中心,但在商用相机中,这已被视为相差多达 100 像素。

未失真输出的光学特性

变形工具是通用的,包括生成的输出图像的参数,包括焦距、主点和方向,以及图像大小。

输出主点

畸变校正会改变输入矩形的形状,使其呈凸形或凹形弯曲。 这种弯曲是相对于主点发生的,因此最好将输出和输入主点保持在相对于其中心的相同位置,以产生对称剪裁或曝光透明度。

输出焦距

为了在输出上保持与输入相同的分辨率,它们的焦距应该大致相同。 Warp API 有一个单独的水平和垂直焦距,不同的焦距也可以在输出中保持。 另一种选择是对两个输出焦距使用两个输入焦距的几何平均值。 第三种选择是将输出焦距减少到 70%,以取消使用拜耳传感器获取彩色图像时发生的插值,以更少的像素产生相同的细节以提高吞吐量。

输出图像大小

校正失真和改变焦距会影响投影图像的大小。 一个合理的选择是保持输出的图像大小、焦距和主点与输入相同。

输出方向

在单眼视觉的情况下,将输出投影定向到与输入相同的方向就足够了。 然而,对于立体视觉,如果两个相机都指向相同的方向并且具有相同的焦距,则可以使用明显更快且更稳健的算法。 旋转矩阵或一组欧拉角都可以指定旋转校正。

Isaac 不失真Codelet

Isaac 无失真Codelet采用彩色相机原型并生成另一个彩色相机原型。 这些原型中的每一个都包括相机内在参数和图像。 输入和输出内在参数之间的唯一区别是输出失真为 0。此外,如果源图像是鱼眼,则会将其转换为透视图像。

更多精彩内容:

https://www.nvidia.cn/gtc-global/?ncid=ref-dev-876561

在这里插入图片描述

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

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

相关文章

最快的树视图组件:Flexible TreeView.NET Crack

为什么要使用灵活的 TreeView&#xff1f; 灵活性 市场上其他类似树视图的组件所不具备的无与伦比的可扩展性和独特功能。 表现 市场上最快的树视图组件。 仅需 0.39 秒即可添加 100,000 个节点。 简单 尽管是一个非常强大的树视图组件&#xff0c;但 Flexible TreeView 被设计…

Java开发基于rmi的数据库中间件设计源码,并利用中间件建立一个数据库应用(Java web项目),分布式对象技术课程实践

基于rmi的数据库中间件设计 介绍 分布式对象技术课程实践&#xff1a;基于rmi的数据库中间件设计&#xff0c;并利用中间件建立一个数据库应用&#xff08;Java web项目&#xff09;。 软件架构 前端&#xff1a;React后端&#xff1a;Springboot数据库中间件&#xff1a;J…

【人脸检测】------MTCNN算法

MTCNN算法出自深圳先进技术研究院,乔宇老师组,是今年2016的ECCV。 正如上图所示,该MTCNN由3个网络结构组成(P-Net,R-Net,O-Net)。 Proposal Network (P-Net):该网络结构主要获得了人脸区域的候选窗口和边界框的回归向量。并用该边界框做回归,对候选窗口进行校准,然后通…

Ubuntu18.04下QT和MYSQL异常问题排查处理常用命令

问题场景 &#xff1a;开年第一天上班&#xff0c;使用GIT下载好项目代码到本地后&#xff0c;发现QT5.14.2无法正常启动&#xff0c;使用命令sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator后没有任何反应&#xff0c;仔细回想应该是年前电脑修改环境变量导致无法进入系统…

微信小程序安全系列——文本内容安全识别

前言 相信很多朋友跟我遇到过相同的问题&#xff0c;就是在开发一些笔记或者博客的时候&#xff0c;会遇到一些过滤敏感、时政、黄、赌、毒这类词汇、句子等这种棘手问题。 今天我们看一下微信小程序提供的文本安全内容识别&#xff0c;也可以减少一些我们的工作量。通过微信…

【通信原理(含matlab程序)】实验二:FM的调制和解调

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识&#xff0c;如果大家喜欢&#xff0c;别忘点个赞加个关注哦&#xff0c;让我们一起共同进步~ &#x…

bug解决:Uncaught (in promise) TypeError: Toast.loading is not a function

在使用vue3做项目时&#xff0c;在其中使用了vant框架&#xff0c;在使用toast的加载组件或者是一些其他组件时&#xff0c;出现了如下的错误&#xff1a;Uncaught (in promise) TypeError: Toast.loading is not a function错误代码如下&#xff1a;Toast.loading({ message: …

二本土木工程毕业四年,成功转行大数据

1、 自我介绍 大家好&#xff0c;我是临渊羡鱼。18年毕业与重庆的一所二本大学&#xff0c;至今4年有余&#xff0c;专业是土木工程&#xff0c;毕业后从事三年半的建筑结构设计工作&#xff0c;在此期间由于不看好设计行业前景&#xff0c;故而在21年底谋求转行。在朋友推荐下…

[C语言]文件操作

目录 1.文件 1.1程序文件 1.2数据文件 2.文件名 3.文件的打开和关闭 3.1文件指针 3.2文件的打开和关闭 4.文件的顺序读写 4.1fgetc 4.2fputc 4.3fgets 4.4fputs 4.5fscanf 4.6fprintf 4.7fread&#xff08;二进制输出&#xff09; 4.8fwriite&#xff08;二进制输…

Python【xpath】实战案例【中】

获取全国地级城市名称&#xff1a;案例准备&#xff1a;导入外部库 1.requests、2.lxml容易遇到的问题&#xff1a;网站SSL认证失效代码块&#xff1a;#导入第三方库 import requests from lxml import etree # 网页地址 url https://www.aqistudy.cn/historydata/ #U-A伪装 h…

SOFA Weekly|SOFANews、issue 精选

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展欢迎留言互动&#xff5e;SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&#…

论文投稿指南——中文核心期刊推荐(公路运输)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

Linux嵌入式开发——用户与用户组

文章目录Linux嵌入式开发——用户与用户组用户用户组创建用户和用户组1、图形化界面创建2、命令创建添加用户用户查询修改用户密码删除用户添加用户组显示组内用户名删除用户组Linux嵌入式开发——用户与用户组 用户 Linux是一个多用户操作系统&#xff0c;不同的用户拥有不同…

过年回家,你是否也像我一样努力生动的给别人解释软件开发是干啥滴?

这个年就这样&#xff0c;在喜气洋洋的气氛中&#xff0c;在我们依依不舍的留恋中&#xff0c;从我们身边溜走了。这次回家又碰见了亲戚们不厌其烦的问我&#xff0c;你做什么工作呐&#xff1f;于是就有了我以下生动的解释 目录 打字的 帮助传话&#xff0c;帮助卖东西 皮…

亚马逊云科技:强强联合助力中国头部车企打造优质服务体验

2023年1月9日在美国拉斯维加斯刚落幕的国际消费电子展&#xff08;CES 2023&#xff09;上&#xff0c;亚马逊云科技的2位重要合作伙伴BlackBerry和中国领先的车联网&#xff08;IoV&#xff09;技术服务与产品提供商博泰车联网共同宣布&#xff0c;由BlackBerry IVY™赋能的博…

.Net 7 托管Main入口的四种写法(茴香豆?)

前言&#xff1a; 按照CLR的规则,C#托管Main入口其实有四种写法。 写法 第一种&#xff1a;最常见的&#xff0c;也是VS默认的&#xff0c;返回值void,带一个参数 static void Main(string[] args) {Console.Write("Tian xia feng yun chu wo bei");Console.ReadLine…

python图像处理(均值滤波)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理过程中,一个绕不开的话题就是噪声。其中比较经典的就是椒盐噪声。为了降低这些噪声对最终图像处理效果的影响,人们想了很多的方法,比如说均值滤波、中值滤波、高斯滤波…

java多线程-线程属性

线程属性 线程各属性 线程ID id从 1 开始计数&#xff0c;因为在源码中是如下实现的&#xff0c;初始值设置为0&#xff0c;id是先自增再返回 private volatile int threadStatus 0;private static synchronized long nextThreadID() {return threadSeqNumber; }现在来演示…

处理比赛数据记录

文章目录一、需求二、爬取阶段1.使用requests进行请求获取网页内容2.使用selenium模拟人操作浏览器获取网页内容(1)环境配置(2) 源码3.使用phantomjs模拟人操作浏览器获取网页内容浅浅记录一下自己在做一个比赛数据处理过程中的遇到的一些问题。一、需求 首先数据的格式是长下…

AcWing 1064. 小国王(状态压缩DP)

AcWing 1064. 小国王一、问题二、思路1、整体逻辑2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、思路 1、整体逻辑 我们看下面这个例子&#xff1a; 如果我们一行一行放的话。 在上图中&#xff0c;我们先看第二行&#xff0c;我们发现第二行在哪个位…