SLAM|1. 相机投影及相机畸变

一个能思考的人,才真是一个力量无边的人。——巴尔扎克

本章主要内容:
1.针孔相机模型
2.相机成像的几个坐标系图像
3.畸变及相机标定

本节主要介绍在照相机拍摄过程中,现实物体如何跟照片上的像素关联起来,具体涉及相机成像的物理过程和坐标系转换。

1.1 针孔相机模型

针孔相机模型是目前大多数相机的成像模型,其成像原理为小孔成像,回顾一下按照光线在同一介质中按直线传播的原理,在小孔另一面,会形成倒立按比例缩小的实像。
在这里插入图片描述

如果不借助其他东西,这个成像过程会遵循如下原理:小孔越小,成像越好,但会越暗。如下图,小孔直径从2mm变到0.35mm过程,图像越来越清晰,但也越来越暗。
在这里插入图片描述

我们想要的照片,是既要清晰,又要有足够的亮度,即让足够的光线进来,捕获到更多的环境细节,为了解决这个问题,现代相机会使用透镜来聚集光线,在保证有较大进光面的同时,让光线也能汇聚到较小范围。
在这里插入图片描述

关于透镜,有两个概念:聚焦与失焦
聚焦:从物体不同部分射出的光线,通过镜头之后,聚焦在底片的一个点上,使影像具有清晰的轮廓与真实的质感,这个过程称为聚焦。
失焦:即接收的点的信息未聚焦到一起会导致成像模糊。
注意:物体“聚焦”有特定距离(景深),在景深内可清晰成像,景深外成像模糊。

加入透镜之后,成像规律会有一点变化,此时当物体离透镜不同距离时,会形成不同的像。当物体处于凸透镜的 2 倍焦距之外,会形成倒立的、缩小的实像。一倍焦距到二倍焦距之间,则会形成倒立的、放大的实像。成像物体则在一倍焦距内,成正立的、放大的虚像。
一般地,相机成像时,物体在透镜的二倍焦距之外。而对于投影仪,则会把成像物体放在一倍焦距到二倍焦距之间。对于放大镜,成像物体则在一倍焦距内。
在这里插入图片描述

最后,将成像处实像,用感光元件接收后,就形成了拍摄的照片。在比较早的年代,感光元件使用胶片,胶片的原理是通过光产生化学反应来记录。而到了数码时代,感光元件则使用了CCD或者CMOS,其原理是将光转化为模拟电信号来记录。
电子感光元件也叫图像传感器(sensor),分为两种:一种是广泛使用的 CCD(电荷耦合)元件,另一种是 CMOS(互补金属氧化物半导体)器件。其产生的模拟信号,首先经过模拟信号放大器进行信号放大,进而经过数模转换电路(DAC)变为数字图像,数字图像再经过 ISP(Image Signal Processor)图像处理器进行数字图像处理,最后数字图像经过压缩编码算法,存储到 SD 卡中成为一个照片文件。

  1. CCD
    CCD 全称 Charge Coupled Device,它使用一种高感光度的半导体材料制成,由许多感光单位组成,通常以百万像素为单位。当 CCD 表面受到光线照射时,每个感光单位会将电荷反映在组件上,即把光转换为电荷,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。
  2. CMOS
    CMOS 全称 Complementary Metal-Oxide Semiconductor,它主要是利用硅和锗这两种元素所做成的半导体,使其在 CMOS 上共存着 N 极和 P 极的半导体,这两个互补效应所产生的电流即可被处理芯片记录为影像。
    两者最主要的区别在于:CCD 传感器的图像质量优于 CMOS 传感器,而 CMOS 传感器在成像速度、功耗、价格等方面优于 CCD 传感器。

1.2 相机成像的几个坐标系

要把相机拍摄的照片与实际物体关联起来,就要建立三维世界到二维图像平面的映射关系,这个过程主要通过几个坐标系之间的转换来实现。

1.2.1成像坐标系之间的关系

相机成像的坐标系主要有四个,分别是世界坐标系,相机坐标系,图像坐标系与像素坐标系。世界坐标系下物体的光线(世界坐标系),通过透镜(相机坐标系),投射到感光原件上(图像坐标系),最后计算机在像素坐标系(离散化过程)上做处理。
在这里插入图片描述

世界坐标系:用于表示空间物体的绝对坐标,使用(Xw,Yw,Zw)表示,世界坐标系可通过旋转和平移得到相机坐标系。
相机坐标系:以相机的光心为坐标系原点,Xc.Yc轴平行于图像坐标系的x,y轴,相机的光轴为Zc轴,坐标系满足右手法则,相机的光心可理解为相机透镜的几何中心。
图像物理坐标系:坐标原点在CCD图像平面的中心x,y轴分别平行于图像像素坐标系的(u,v)轴,坐标用(x,y)表示。
图像像素坐标系:表示三维空间物体在图像平面上的投影,像素是离散化的,其坐标原点在CCD图像平面的左上角,u轴平行于CCD平面水平向右,v轴垂直于u轴向下,坐标使用(u,v)来表示。图像宽度W,高度H。

1.2.2 坐标计算

在这里插入图片描述

三维坐标投影到成像平面的坐标(完成三维到二维点的映射),可以通过相似三角形得出,对于相机坐标系下的P(X,Y,Z),成像坐标为:
f Z = − X ′ X = − Y ′ Y \frac{f}{Z}=-\frac{X^{\prime}}{X}=-\frac{Y^{\prime}}{Y} Zf=XX=YY
为了方便运算,取对称的镜像进行计算,效果等价。
在这里插入图片描述

f Z = X ′ X = Y ′ Y \frac{f}{Z}=\frac{X^{\prime}}{X}=\frac{Y^{\prime}}{Y} Zf=XX=YY
可得:
X ′ = f X Z X^{\prime}=f \frac{X}{Z} X=fZX
Y ′ = f Y Z Y^{\prime}=f \frac{Y}{Z} Y=fZY
计算机中的图像,是一个个像素构成,且其并不是图像中心为坐标原点,而是一般把左上角规定为坐标原点,要在计算机中处理图像信息,需要在得到成像平面上的坐标后,把成像坐标,转为像素坐标。
在这里插入图片描述

其中O1是投影后的坐标系原点,位于图像中心,而在计算机图像处理库中(如OpenCV),则是定义的左上角O0为图像坐标系原点,横坐标轴为u轴,向右,纵坐标轴为v轴,向下。
相机内感光原件(如cmos)是一个一个小格子拼接而成的,可以认为是离散的,这个小格子可能不是正方形,要将投影坐标P’转化为像素坐标,需要经历如下过程:
计算P’到图像中心的像素距离
u ′ = X ′ α x = f α x X Z = f x X Z u^{\prime}=\frac{X^{\prime}}{\alpha_{x}}=\frac{f}{\alpha_{x}} \frac{X}{Z}=f_{x} \frac{X}{Z} u=αxX=αxfZX=fxZX
v ′ = Y ′ α y = f α y Y Z = f y Y Z v^{\prime}=\frac{Y^{\prime}}{\alpha_{y}}=\frac{f}{\alpha_{y}} \frac{Y}{Z}=f_{y} \frac{Y}{Z} v=αyY=αyfZY=fyZY
其中f为成像焦距,αx与αy为u,v方向像素的长度。
最后转为O0下的坐标
实现摄像机下三维世界的点到像素平面二维图像平面的点的映射,f为单位米转化为像素的数量,非线性变换如下
u = u ′ + c x = f x X Z + c x u=u^{\prime}+c_{x}=f_{x} \frac{X}{Z}+c_{x} u=u+cx=fxZX+cx
v = v ′ + c y = f y Y Z + c y v=v^{\prime}+c_{y}=f_{y} \frac{Y}{Z}+c_{y} v=v+cy=fyZY+cy
引入齐次坐标,改为线性变换,以方便运算
$\left(\begin{array}{ccc}
u \
v \
1
\end{array}\right)=\frac{1}{Z}\left(\begin{array}{ccc}
f_{x} & 0 & c_{x} \
0 & f_{y} & c_{y} \
0 & 0 & 1
\end{array}\right)\left(\begin{array}{c}
X \
Y \
Z
\end{array}\right)=\frac{1}{Z} K P \$
其中
K = ( f x 0 c x 0 f y c y 0 0 1 ) K=\left(\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right) K= fx000fy0cxcy1
就是通常所说的相机内参矩阵
通过内参矩阵K,就可以将相机坐标系的下三维的坐标点转换为图像上的二维像素坐标。而对于世界坐标系上的坐标,转换到相机坐标系中则涉及的是不同坐标系中坐标转换,这个会在第二章中进行讲解。

1.3 图像畸变

如果相机成像过程没有畸变,则一个正方形投影成像后,还是一个正方形,但实际情况往往不是这样。大家拍照中可能也会发现,在拍一个人时,可能会把一个脸不大的人,脸拍出来却比较大,这时候不一定是你拍照技术的问题,有可能是因为相机畸变。相机成像过程的图像畸变主要是镜片加工与安装的缺陷造成的。
在这里插入图片描述

相机畸变主要由于相机镜头的光学性质造成的。相机镜头中的光线经过折射、反射等多个光学过程,导致不同位置的物体在图像中呈现出不同的形变。这种形变被称为畸变。畸变可以分为两种:径向畸变和切向畸变。

1.3.1 径向畸变

径向畸变来自透镜形状不规则以及建模的方式,导致镜头不同部分焦距不同。光线在远离透镜中心的地方偏折更大(向外偏移远离中心为枕型畸变,左图)或更小(向中心靠拢为桶形畸变,右图)。
在这里插入图片描述

下图显示矩形网格因径向畸变而产生的位移。越远离光轴中心的地方,矩形网格上的点偏移越大。
在这里插入图片描述

对于径向畸变,常用如下公式进行修正
x corrected  = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y corrected  = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) 其中:  r 2 = x 2 + y 2 \begin{array}{l} x_{\text {corrected }}=x\left(1+k_{1} r^{2}+k_{2} r^{4}+k_{3} r^{6}\right) \\ y_{\text {corrected }}=y\left(1+k_{1} r^{2}+k_{2} r^{4}+k_{3} r^{6}\right) \end{array} \\ \text { 其中: } r^{2}=x^{2}+y^{2} xcorrected =x(1+k1r2+k2r4+k3r6)ycorrected =y(1+k1r2+k2r4+k3r6) 其中r2=x2+y2
k1,k2,k3称为径向畸变校正系数。

1.3.2 切向畸变

切向畸变来自于整个摄像机的组装过程。由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的,如下图所示。
在这里插入图片描述

切向图像畸变使用如下公式进行修正
x corrected  = x + [ 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) ] y corrected  = y + [ p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y ] 其中 : r 2 = x 2 + y 2 \begin{aligned} x_{\text {corrected }} & =x+\left[2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right)\right] \\ y_{\text {corrected }} & =y+\left[p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y\right] \end{aligned} \\ 其中: r^{2}=x^{2}+y^{2} xcorrected ycorrected =x+[2p1xy+p2(r2+2x2)]=y+[p1(r2+2y2)+2p2xy]其中:r2=x2+y2
其中 p1,p2为切向畸变系数。
将径向畸变与切向畸变校正,结合在一起,便是常用的畸变校正过程。
x corrected  = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + [ 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) ] y corrected  = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + [ p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y ] 其中 : r 2 = x 2 + y 2 \begin{array}{l} x_{\text {corrected }}=x\left(1+k_{1} r^{2}+k_{2} r^{4}+k_{3} r^{6}\right)+\left[2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right)\right] \\ y_{\text {corrected }}=y\left(1+k_{1} r^{2}+k_{2} r^{4}+k_{3} r^{6}\right)+\left[p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y\right] \end{array} \\ 其中: r^{2}=x^{2}+y^{2} xcorrected =x(1+k1r2+k2r4+k3r6)+[2p1xy+p2(r2+2x2)]ycorrected =y(1+k1r2+k2r4+k3r6)+[p1(r2+2y2)+2p2xy]其中:r2=x2+y2
等式右边的(x, y)为得到的图像中的理想点,但是存在畸变,于是把其带入等式右边,经过径向和切向变换后,得到左边的畸变校正后的实际点坐标(xcorrected, ycorrected),取出对应颜色值作为(x, y)的颜色值即可。通过去畸变,可以完成图像的矫正,如下图:
在这里插入图片描述

1.4* 鱼眼相机模型

鱼眼镜头一般是由十几个不同的透镜组合而成的,在成像的过程中,入射光线经过不同程度的折射,投影到尺寸有限的成像平面上,使得鱼眼镜头与普通镜头相比起来拥有了更大的视野范围。下图表示出了鱼眼相机的一般组成结构。最前面的两个镜头发生折射,使入射角减小,其余的镜头相当于一个成像镜头,这种多元件的构造结构使对鱼眼相机的折射关系的分析变得相当复杂。
在这里插入图片描述

1.4.1*鱼眼相机成像模型

研究表明鱼眼相机成像时遵循的模型可以近似为单位球面投影模型。可以将鱼眼相机的成像过程分解成两步:第一步,三维空间点线性地投影到一个球面上,它是一个虚拟的单位球面,它的球心与相机坐标系的原点重合;第二步,单位球面上的点投影到图像平面上,这个过程是非线性的。下图表示出了鱼眼相机的成像过程。
在这里插入图片描述

我们知道,普通相机成像遵循的是针孔相机模型,在成像过程中实际场景中的直线仍被投影为图像平面上的直线。但是鱼眼相机如果按照针孔相机模型成像的话,投影图像会变得非常大,当相机视场角达到180°时,图像甚至会变为无穷大。所以,鱼眼相机的投影模型为了将尽可能大的场景投影到有限的图像平面内,允许了相机畸变的存在。并且由于鱼眼相机的径向畸变非常严重,所以鱼眼相机主要的是考虑径向畸变,而忽略其余类型的畸变。

1.4.2* 鱼眼相机投影函数

为了将尽可能大的场景投影到有限的图像平面内,鱼眼相机会按照一定的投影函数来设计。根据投影函数的不同,鱼眼相机的设计模型大致能被分为四种:等距投影模型、等立体角投影模型、正交投影模型和体视投影模型。下面的四种鱼眼相机的投影模型反映出了空间中的一点P是如何投影到球面上,然后到图像平面上成像的。
1、等距投影模型
在这里插入图片描述

上述式子中,rd表示鱼眼图像中的点到畸变中心的距离,是鱼眼相机的焦距,是入射光线与鱼眼相机光轴之间的夹角,即入射角。
2、等立体角投影模型

在这里插入图片描述

3、正交投影模型
在这里插入图片描述

4、体视投影模型
在这里插入图片描述

本章小结

本节以针孔相机模型作为基本模型,简要介绍了相机成像原理,相机模型中的几个坐标系及相机的畸变及相机标定的方法。最后鱼眼相机模型作为扩展介绍。
通过相机标定,可以获得相机内参及畸变系数,这解决了相机坐标系,图像坐标系,像素坐标系之间的转换过程,属于投影过程。而世界坐标系到相机坐标系之间的转换,则涉及到不同坐标系之间的空间转换,这部分涉及的参数为外参,这部分内容在下节进行讲解。

本章思考

1.叙述相机内参的物理意义。如果一部相机的分辨率变为原来的两倍而其他地方不变,那么它的内参将如何变化?
注:分辨率在不同场合意义不尽相同,这里取传感器的总的感光单元数量作为分辨率,而一些资料中会以某边排列的感光元件数量作为分辨率。在底片面积不变的情况下,分辨率变为原来两倍,指感光单元数量变为原来两倍。如1200w像素变为2400w像素。
2.调研全局快门(global shutter)相机和卷帘快门(rolling shutter)相机的异同。它们在SLAM中有何优缺点?
附录
1.1相机内参标定简介
到目前为止,相机成像有两大转换过程,相机投影及畸变消除,主要由:
K = ( f x 0 c x 0 f y c y 0 0 1 ) K=\left(\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right) K= fx000fy0cxcy1
内参矩阵以及畸变参数:Distortioncoefficients=(k1,k2,k3, p1,p2),这两种参数来决定。而求出这两类参数的过程,就是相机标定,目前相机常用的方法是借助棋盘格标定板,在相机前面拿着标定板上下左右前后移动,然后借助标定算法来求出以上参数,常用的标定算法有张正友标定法。

1.2 相机内参标定工具

1.2.1 OpenCV

OpenCV是一款广泛使用的计算机视觉库,其中包含相机内参标定的相关函数。在OpenCV中,使用calibrateCamera函数进行相机内参标定,该函数使用棋盘格等标定板,通过对标定板拍摄的多幅图像进行处理,得出相机的内参参数。OpenCV还提供了相关的可视化工具,如drawChessboardCorners函数,用于显示标定板的角点,以及projectPoints函数,用于将3D点投影到2D图像平面上。

  1. 循环读取图片
  2. 使用findChessboardCorners函数检测角点(需提前输入角点数)
  3. 使用find4QuadCornerSubpix函数对角点进行亚像素精确化
  4. 可用drawChessboardCorners将角点显示
  5. 根据角点数和尺寸创建一个理想的棋盘格(用point向量存储所有理论上的角点坐标)
  6. 通过calibrateCamera函数由理想坐标和实际图像坐标进行标定,可得到标定结果
  7. 由projectPoints函数计算反向投影误差

1.2.2 MATLAB

MATLAB也提供了相机内参标定的工具箱,包括Camera Calibration Toolbox和Image Processing Toolbox等。Camera Calibration Toolbox使用标定板对相机进行标定,并提供了可视化工具,如ShowExtrinsics函数,用于显示相机的外参参数。Image Processing Toolbox提供了更加高级的算法,如多目相机标定,以支持更加复杂的应用场景。
简单过程如下:

  1. 应用程序中找到Camera Calibration
  2. 添加标定板拍摄图片(按Ctrl可一次添加多张)
  3. 输入棋盘格每格的尺寸大小
  4. 显示已检测出的棋盘格,点击Calibration,开始标定。
  5. 得到标定结果(平均误差小于0.5即可认为结果可靠)
  6. 可查看标定结果和程序

1.2.3 ROS

ROS(Robot Operating System)是一种常用的机器人操作系统,其中包含相机内参标定的相关包,如camera_calibration。该包通过对标定板拍摄的多幅图像进行处理,计算出相机的内参参数,并自动保存标定结果。此外,ROS还提供了一系列可视化工具,如image_view,用于显示相机的图像和标定结果。

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

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

相关文章

LabVIEW换流变换器智能巡检系统

基于LabVIEW的换流变换器智能巡检系统通过自动化检测和数据分析,提高换流变换器的运行效率和可靠性,降低人工维护成本。 项目背景: 换流变压器作为电力系统的重要组成部分,其性能的可靠性直接影响到整个电网的稳定运行。然而&…

Spring Boot:植物健康的智能守护者

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

Python基于amazon/chronos-t5-base的预训练模型离线对时间系列数据的未来进行预测

Python基于预训练模型对时间系列数据的未来进行预测 导入库 %matplotlib inline import matplotlib.pyplot as plt import numpy as np import pandas as pd import torch from chronos import ChronosPipeline from tqdm.auto import tqdm from autogluon.timeseries import…

【Java】使用iText依赖生成PDF文件

文章目录 使用iText实现PDF文件生成1. 需求2 . 添加依赖3. 核心4. 实战案例:生成录用通知书4.1 整体架构4.2 初始化PDF文档4.3 配置中文字体4.4 添加背景图片4.5 添加文本内容4.6 处理文档生成 5. 关键技巧与注意事项5.1 字体处理5.2 图片处理5.3 布局控制5.4 异常处…

探索人工智能在自然语言处理中的应用

探索人工智能在自然语言处理中的应用 前言1. 机器翻译2. 情感分析3. 智能客服4. 文本生成未来展望 结语 前言 在信息爆炸的时代,自然语言处理(NLP)作为人工智能(AI)的一个重要分支,正以前所未有的速度改变着…

LabVIEW提高开发效率技巧----节省内存

在LabVIEW开发过程中,内存管理是保障程序稳定性和性能的关键。本文将详细介绍如何通过队列处理来节省内存,尤其是如何通过解耦释放不再需要的数据,防止内存泄漏。通过多个实际例子,从不同角度探讨队列处理在大数据量或长时间运行的…

苹果瑕疵数据集苹果质量数据集YOLO格式VOC格式 深度学习 目标检测 数据集

一、数据集概述 数据集名称:2类苹果图像数据集 数据集包含两类样本:正常苹果和有瑕疵的苹果。正常苹果样本代表完好的苹果,而有瑕疵的苹果样本代表苹果表面可能存在的损伤、瑕疵或病害。每个样本都经过详细标记和描述,以便训练模…

大语言模型数据类型与环境配置

文章目录 前言一、环境安装二、大语言模型数据类型1、基本文本指令数据类型2、数学指令数据类型3、几何图形指令数据类型4、多模态指令数据类型5、翻译指令数据类型 三、vscode配置 前言 简单给出环境安装与数据类型及vscode运行配置,其中vscode运行配置是便于我们…

专业135+总分400+西安交通大学815869(原909)信号与系统考研经验电子信息与通信工程,真题,大纲,参考书

经过将近一年的考研复习,终于梦圆西安交大,今年专业课815(和专硕869(原909)差不多)信号与系统135,总分400,回想这一年的复习还有很多经验和大家分享,希望可以对大家复习有所帮助,少走…

3.cpp基本数据类型

cpp基本数据类型 1.cpp基本数据类型 1.cpp基本数据类型 C基本数据类型和C语言的基本数据类型差不多 注意bool类型&#xff1a;存储真值 true 或假值 false&#xff0c;C语言编译器C99以上支持。 C语言的bool类型&#xff1a;要添加 #include <stdbool.h>头文件 #includ…

数据库相关知识点

1. 数据库分片与分区 分片&#xff08;Sharding&#xff09;&#xff1a;这是一种将数据水平分割的技术&#xff0c;每个分片包含数据的一个子集。分片通常用于提高数据库的扩展性和性能&#xff0c;特别是在处理大量数据时。通过将数据分布在多个分片上&#xff0c;可以并行处…

ruoyi域名跳转缓存冲突问题(解决办法修改:session名修改session的JSESSIONID名称)

【版权所有&#xff0c;文章允许转载&#xff0c;但须以链接方式注明源地址&#xff0c;否则追究法律责任】【创作不易&#xff0c;点个赞就是对我最大的支持】 前言 仅作为学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01; 目录 前…

Maven基础知识

一、Maven的概述 maven 是什么&#xff1f; 是一个项目管理工具&#xff0c;它包含了一个项目对象模型&#xff0c;一组标准集合&#xff0c;一个项目的生命周期&#xff0c;一个依赖管理系统&#xff0c;和用来运行定义在生命周期阶段和插件目标的逻辑。 二、Maven的依赖管理…

【331】基于Springboot的“有光”摄影分享网站系统

“有光”摄影分享网站设计与实现 摘 要 自互联网的发展至今&#xff0c;其基础理论与技术都已完善&#xff0c;并积极参与了整个社会各个领域。它容许信息根据媒体传播&#xff0c;并和信息可视化工具一起为大家提供优质的服务。对于信息多头管理、差错率高、信息安全系数差、…

Redis 命令集 (超级详细)

目录 Redis 常用命令集 string类型 hash类型 list类型 set类型 zset类型 bitmap 类型 geo 类型 GEOADD (添加地理位置的坐标) GEOPOS (获取地理位置的坐标) GEODIST (计算两个位置之间的距离) GEOHASH (返回一个或多个位置对象的 geohash 值) GEORADIUS (根据用户…

本地docker部署中间件和应用

Docker Desktop搭建 安装完成之后使用docker下载镜像&#xff0c;报以下错误&#xff1a; 解决办法&#xff1a; Docker Engine配置能访问的镜像地址&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled…

Vue实现手风琴功能组件 vue 实现折叠面板功能

Vue实现手风琴功能组件 vue 实现折叠面板功能,前端不使用第三方组件实现手风琴折叠面板功能 效果图: dom<div class="foldSection"><divv-for="(item, index) in ListData":key="item.id"class="accordion"><div …

反编译工具jadx

一.官网 https://github.com/skylot/jadx 下载解压即可 二.使用 将想要反编译的apk文件拖入jadx中&#xff0c;等待反编译结束。 三.提醒 反编译出来的只能帮你理解逻辑&#xff0c;并且一般apk都会有加密。

SLAM|2. 差异与统一:坐标系变换与外参标定

本章主要内容 1.坐标系变换 2.相机外参标定 上一章我们了解了相机内参的概念&#xff0c;内参主要解决三维世界与二维图像之间的映射关系。有了内参我们可以一定程度上还原相机看到了什么&#xff08;但缺乏尺度&#xff09;。但相机看到的数据只是处于相机坐标系&#xff0c;为…

【Qt6聊天室项目】 主界面功能实现

1. 获取当前用户的个人信息 1.1 前后端逻辑分析&#xff08;主界面功能&#xff09; 主界面上所有的前后端交互逻辑相同&#xff0c;分析到加载会话列表后其余功能仅实现。 核心逻辑总结 异步请求-响应模型 客户端发起请求&#xff0c;向服务器发送包含会话ID的请求服务端处…