不同像平面坐标系下的Brown畸变系数互转

2024-01-08 07:20

本文主要是介绍不同像平面坐标系下的Brown畸变系数互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

不同像平面坐标系下Brown畸变系数转换

u , v u,v u,v为像素为单位的坐标,f为焦距,单位也是像素。

x , y x,y x,y为理想坐标。本文推导两种情况下的Brown畸变系数转换关系:

  1. 相同坐标系定义、不同的坐标单位(像素坐标与归一化坐标)的畸变系数关系
  2. 坐标系原点相同、y轴方向相反的坐标系之间畸变系数关系

像素坐标与归一化坐标的畸变系数的关系推导

像素为单位的畸变计算

使用像素坐标计算畸变值的公式为:

{ d u = u ( K 1 r 2 + K 2 r 4 + K 3 r 6 ) + P 1 ( r 2 + 2 u 2 ) + 2 P 2 u v d v = v ( K 1 r 2 + K 2 r 4 + K 3 r 6 ) + P 2 ( r 2 + 2 v 2 ) + 2 P 1 u v (A) \begin{cases} du = u(K_1 r^2+K_2 r^4+K_3 r^6)+P_1(r^2+2u^2)+2P_2 uv\\ dv = v(K_1 r^2+K_2 r^4+K_3 r^6)+P_2(r^2+2v^2)+2P_1 uv\\ \end{cases}\tag{A} {du=u(K1r2+K2r4+K3r6)+P1(r2+2u2)+2P2uvdv=v(K1r2+K2r4+K3r6)+P2(r2+2v2)+2P1uv(A)

计算机视觉的归一化坐标畸变计算

u , v u,v u,v为像素为单位的坐标,f为焦距,单位也是像素。计算机视觉使用归一化坐标:

{ x = u f y = v f (B) \begin{cases}x=\dfrac{u}{f}\\y=\dfrac{v}{f}\end{cases}\tag{B} x=fuy=fv(B)

计算畸变值的公式为:

{ d x = x ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 x 2 ) + 2 p 2 x y d y = y ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 2 ( r 2 + 2 y 2 ) + 2 p 1 x y (C) \begin{cases} dx=x(k_1 r^2+k_2 r^4+k_3 r^6)+p_1(r^2+2x^2)+2p_2 xy\\ dy=y(k_1 r^2+k_2 r^4+k_3 r^6)+p_2(r^2+2y^2)+2p_1 xy\\ \end{cases}\tag{C} {dx=x(k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xydy=y(k1r2+k2r4+k3r6)+p2(r2+2y2)+2p1xy(C)

推导过程

对比(A)(C)两个公式,将(C)式中的x,y按照(B)替换为u,v的表达式,得:
{ d u f = u f ( k 1 R 2 f 2 + k 2 R 4 f 4 + k 3 R 6 f 6 ) + p 1 ( R 2 f 2 + 2 u 2 f 2 ) + 2 p 2 u f v f d v f = v f ( k 1 R 2 f 2 + k 2 R 4 f 4 + k 3 R 6 f 6 ) + p 2 ( R 2 f 2 + 2 v 2 f 2 ) + 2 p 1 u f v f (D) \begin{cases} \dfrac{du}{f}=\dfrac{u}{f}(k_1 \dfrac{R^2}{f^2}+k_2 \dfrac{R^4}{f^4}+k_3 \dfrac{R^6}{f^6})+p_1(\dfrac{R^2}{f^2}+2\dfrac{u^2}{f^2})+2p_2 \dfrac{u}{f}\dfrac{v}{f}\\ \dfrac{dv}{f}=\dfrac{v}{f}(k_1 \dfrac{R^2}{f^2}+k_2 \dfrac{R^4}{f^4}+k_3 \dfrac{R^6}{f^6})+p_2(\dfrac{R^2}{f^2}+2\dfrac{v^2}{f^2})+2p_1 \dfrac{u}{f}\dfrac{v}{f}\\ \end{cases}\tag{D} fdu=fu(k1f2R2+k2f4R4+k3f6R6)+p1(f2R2+2f2u2)+2p2fufvfdv=fv(k1f2R2+k2f4R4+k3f6R6)+p2(f2R2+2f2v2)+2p1fufv(D)
其中, R 2 = u 2 + v 2 R^2=u^2+v^2 R2=u2+v2

整理得:
{ d u f = u f ( k 1 f 2 R 2 + k 2 f 4 R 4 + k 3 f 6 R 6 ) + p 1 f 2 ( R 2 + 2 u 2 ) + 2 p 2 f 2 u v d v f = v f ( k 1 f 2 R 2 + k 2 f 4 R 4 + k 3 f 6 R 6 ) + p 2 f 2 ( R 2 + 2 v 2 ) + 2 p 1 f 2 u v (E) \begin{cases} \dfrac{du}{f}=\dfrac{u}{f}( \dfrac{k_1}{f^2}R^2+ \dfrac{k_2}{f^4}R^4+ \dfrac{k_3}{f^6}R^6)+\dfrac{p_1}{f^2}(R^2+2u^2)+2 \dfrac{p_2}{f^2}uv\\ \dfrac{dv}{f}=\dfrac{v}{f}( \dfrac{k_1}{f^2}R^2+ \dfrac{k_2}{f^4}R^4+ \dfrac{k_3}{f^6}R^6)+\dfrac{p_2}{f^2}(R^2+2v^2)+2 \dfrac{p_1}{f^2}uv\\ \end{cases}\tag{E} fdu=fu(f2k1R2+f4k2R4+f6k3R6)+f2p1(R2+2u2)+2f2p2uvfdv=fv(f2k1R2+f4k2R4+f6k3R6)+f2p2(R2+2v2)+2f2p1uv(E)

(E)式两边乘f,得:
{ d u = u ( k 1 f 2 R 2 + k 2 f 4 R 4 + k 3 f 6 R 6 ) + p 1 f ( R 2 + 2 u 2 ) + 2 p 2 f u v d v = v ( k 1 f 2 R 2 + k 2 f 4 R 4 + k 3 f 6 R 6 ) + p 2 f ( R 2 + 2 v 2 ) + 2 p 1 f u v (F) \begin{cases} du=u( \dfrac{k_1}{f^2}R^2+ \dfrac{k_2}{f^4}R^4+ \dfrac{k_3}{f^6}R^6)+\dfrac{p_1}{f}(R^2+2u^2)+2 \dfrac{p_2}{f}uv\\ dv=v( \dfrac{k_1}{f^2}R^2+ \dfrac{k_2}{f^4}R^4+ \dfrac{k_3}{f^6}R^6)+\dfrac{p_2}{f}(R^2+2v^2)+2 \dfrac{p_1}{f}uv\\ \end{cases}\tag{F} du=u(f2k1R2+f4k2R4+f6k3R6)+fp1(R2+2u2)+2fp2uvdv=v(f2k1R2+f4k2R4+f6k3R6)+fp2(R2+2v2)+2fp1uv(F)

对比(C)(F)两式,即得:

K 1 = k 1 f 2 K 2 = k 2 f 4 K 3 = k 3 f 6 P 1 = p 1 f P 2 = p 2 f \begin{aligned}K_1 &= \dfrac{k_1}{f^2}\\ K_2 &= \dfrac{k_2}{f^4}\\ K_3 &= \dfrac{k_3}{f^6}\\ P_1 &= \dfrac{p_1}{f}\\ P_2 &= \dfrac{p_2}{f}\\\end{aligned} K1K2K3P1P2=f2k1=f4k2=f6k3=fp1=fp2

XRight-YUp 与 XRight-YDown的畸变系数的关系推导

摄影测量坐标系常用x轴向右y轴向上的像平面坐标系(XRight-YUp);计算机视觉常用x轴向右y轴向下的像平面坐标系(XRight-YDown)。
在这里插入图片描述

设XRightY-Down的图像坐标系中一点坐标为 ( x , y ) (x,y) (x,y),畸变改正数为 ( d x , d y ) (dx,dy) (dx,dy);在相同原点的XRight-YUp中坐标为 ( x , − y ) (x,-y) (x,y),畸变改正数为 ( d x , − d y ) (dx,-dy) (dx,dy)。它们计算畸变的公式形式相同,均符合(G)式:

{ d x = x ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 x 2 ) + 2 p 2 x y d y = y ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 2 ( r 2 + 2 y 2 ) + 2 p 1 x y (G) \begin{cases} dx=x(k_1 r^2+k_2 r^4+k_3 r^6)+p_1(r^2+2x^2)+2p_2 xy\\ dy=y(k_1 r^2+k_2 r^4+k_3 r^6)+p_2(r^2+2y^2)+2p_1 xy\\ \end{cases}\tag{G} {dx=x(k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xydy=y(k1r2+k2r4+k3r6)+p2(r2+2y2)+2p1xy(G)

设在XRightY-Down的图像坐标系中畸变参数为 k 1 , k 2 , k 3 , p 1 , p 2 k_1,k_2,k_3,p_1,p_2 k1,k2,k3,p1,p2;在XRightY-Up的图像坐标系中畸变参数为 k 1 ′ , k 2 ′ , k 3 ′ , p 1 ′ , p 2 ′ k'_1,k'_2,k'_3,p'_1,p'_2 k1,k2,k3,p1,p2,则我们有:

{ d x = x ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 x 2 ) + 2 p 2 x y = x ( k 1 ′ r 2 + k 2 ′ r 4 + k 3 ′ r 6 ) + p 1 ′ ( r 2 + 2 x 2 ) + 2 p 2 ′ x ( − y ) − d y = − ( y ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 2 ( r 2 + 2 y 2 ) + 2 p 1 x y ) = ( − y ) ( k 1 ′ r 2 + k 2 ′ r 4 + k 3 ′ r 6 ) + p 2 ′ ( r 2 + 2 ( − y ) 2 ) + 2 p 1 ′ x ( − y ) (H) \begin{cases} dx = x(k_1 r^2+k_2 r^4+k_3 r^6)+p_1(r^2+2x^2)+2p_2 xy=x(k'_1 r^2+k'_2 r^4+k'_3 r^6)+p'_1(r^2+2x^2)+2p'_2 x(-y)\\ -dy = -(y(k_1 r^2+k_2 r^4+k_3 r^6)+p_2(r^2+2y^2)+2p_1 xy)=(-y)(k'_1 r^2+k'_2 r^4+k'_3 r^6)+p'_2(r^2+2(-y)^2)+2p'_1 x(-y)\\ \end{cases}\tag{H} {dx=x(k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xy=x(k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2x(y)dy=(y(k1r2+k2r4+k3r6)+p2(r2+2y2)+2p1xy)=(y)(k1r2+k2r4+k3r6)+p2(r2+2(y)2)+2p1x(y)(H)

整理得:

{ x ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 x 2 ) + 2 p 2 x y = x ( k 1 ′ r 2 + k 2 ′ r 4 + k 3 ′ r 6 ) + p 1 ′ ( r 2 + 2 x 2 ) − 2 p 2 ′ x y − y ( k 1 r 2 + k 2 r 4 + k 3 r 6 ) − p 2 ( r 2 + 2 y 2 ) − 2 p 1 x y = − y ( k 1 ′ r 2 + k 2 ′ r 4 + k 3 ′ r 6 ) + p 2 ′ ( r 2 + 2 y 2 ) − 2 p 1 ′ x y (I) \begin{cases} x(k_1 r^2+k_2 r^4+k_3 r^6)+p_1(r^2+2x^2)+2p_2 xy=x(k'_1 r^2+k'_2 r^4+k'_3 r^6)+p'_1(r^2+2x^2)-2p'_2 xy\\ -y(k_1 r^2+k_2 r^4+k_3 r^6)-p_2(r^2+2y^2)-2p_1 xy=-y(k'_1 r^2+k'_2 r^4+k'_3 r^6)+p'_2(r^2+2y^2)-2p'_1 xy\\ \end{cases}\tag{I} {x(k1r2+k2r4+k3r6)+p1(r2+2x2)+2p2xy=x(k1r2+k2r4+k3r6)+p1(r2+2x2)2p2xyy(k1r2+k2r4+k3r6)p2(r2+2y2)2p1xy=y(k1r2+k2r4+k3r6)+p2(r2+2y2)2p1xy(I)

于是可得:

k 1 ′ = k 1 k 2 ′ = k 2 k 3 ′ = k 3 p 1 ′ = p 1 p 2 ′ = − p 2 \begin{aligned}k'_1&=k_1\\ k'_2& = k_2\\ k'_3 &= k_3\\ p'_1& = p_1\\ p'_2 &= -p_2\\\end{aligned} k1k2k3p1p2=k1=k2=k3=p1=p2

即,这两个坐标系中的畸变参数互转时仅需要将 p 2 p_2 p2取相反数,其他畸变系数可通用。

这篇关于不同像平面坐标系下的Brown畸变系数互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/582690

相关文章

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

求空间直线与平面的交点

若直线不与平面平行,将存在交点。如下图所示,已知直线L过点m(m1,m2,m3),且方向向量为VL(v1,v2,v3),平面P过点n(n1,n2,n3),且法线方向向量为VP(vp1,vp2,vp3),求得直线与平面的交点O的坐标(x,y,z): 将直线方程写成参数方程形式,即有: x = m1+ v1 * t y = m2+ v2 * t

高斯平面直角坐标讲解,以及地理坐标转换高斯平面直角坐标

高斯平面直角坐标系(Gauss-Krüger 坐标系)是基于 高斯-克吕格投影 的一种常见的平面坐标系统,主要用于地理信息系统 (GIS)、测绘和工程等领域。该坐标系将地球表面的经纬度(地理坐标)通过一种投影方式转换为平面直角坐标,以便在二维平面中进行距离、面积和角度的计算。 一 投影原理 高斯平面直角坐标系使用的是 高斯-克吕格投影(Gauss-Krüger Projection),这是 横

Ubuntu ftp搭建--配置不同用户不同权限

一、安装VSFTP sudo apt-get install vsftpd 二、添加FTP用户 sudo mkdir /etc/vsftpdsudo useradd -m -d /home/vsftpd vsftpd --用户名为vsftpd,目录和用户名可以自己更改sudo vi /etc/vsftpd/ftpuser.txt --这个到时与vsftp的配置文件对应建立一