SLAM入门之视觉里程计(5):单应矩阵

总结:Homography和图像拼接 一、Homography 单应矩阵 1.单应矩阵 描述:同一平面下的点,从一个图像到另一个图像的投影映射 A Homography is a transformation ( a 3×3 matrix )that maps the points in one image to the corresponding points in the other image. 对于现实世界中在同一平面的点都适用Homography Matrix来进行对齐。但如果图像中有两个平面,我们就要用两个Homography M 阅读详情

在之前的博文OpenCV,计算两幅图像的单应矩阵,介绍调用OpenCV中的函数,通过4对对应的点的坐标计算两个图像之间单应矩阵HH,然后调用射影变换函数,将一幅图像变换到另一幅图像的视角中。当时只是知道通过单应矩阵,能够将图像1中的像素坐标(u1,v1)(u1,v1)变换到图像2中对应的位置上(u2,v2)(u2,v2),而没有深究其中的变换关系。

单应(Homography)是射影几何中的概念,又称为射影变换。它把一个射影平面上的点(三维齐次矢量)映射到另一个射影平面上,并且把直线映射为直线,具有保线性质。总的来说,单应是关于三维齐次矢量的一种线性变换,可以用一个3×33×3的非奇异矩阵HH表示

 

x1=Hx2x1=Hx2


这是一个齐次坐标的等式,HH乘以一个非零的比例因子上述等式仍然成立,即HH是一个3×33×3齐次矩阵,具有8个未知量。

假设已经取得了两图像之间的单应,则可单应矩阵HH可以将两幅图像关联起来

 

⎛⎝⎜u1v11⎞⎠⎟=H⎛⎝⎜u2v21⎞⎠⎟(u1v11)=H(u2v21)


其中,(u1,v1,1)T(u1,v1,1)T表示图像1中的像点,(u2,v2,1)T(u2,v2,1)T是图像2中的像点,也就是可以通过单应矩阵HH将图像2变换到图像1,如下图。这有了很多实际的应用,例如图像的校正、对齐以及在SLAM中估计两个相机间的运动。

同一相机在不同的位姿得到同一平面的图像

假设使用同一相机在不同的位姿拍摄同一平面,如下图:

上图表示场景中的平面ππ在两相机的成像,设平面ππ在第一个相机坐标系下的单位法向量为NN,其到第一个相机中心(坐标原点)的距离为dd,则平面ππ可表示为:

 

NTX1=dNTX1=d


即

1dNTX1=1,∀X1∈π1dNTX1=1,∀X1∈π


其中,X1X1是三维点PP在第一相机坐标系下的坐标,其在第二个相机坐标系下的坐标为X2X2,则

X2=RX1+TX2=RX1+T


将上面式子结合起来,

X2=RX1+T1dNTX1=(R+T1dNT)X1=H′X1X2=RX1+T1dNTX1=(R+T1dNT)X1=H′X1


所以就得到了同一平面两个不同相机坐标系的单应矩阵

H′=R+T1dNTH′=R+T1dNT


上面提到单应表示的是两个平面之间的映射,这里为何得到了同一平面两个不同相机坐标系的单应矩阵。虽然平面是通过,但是在不同坐标系中会有不同的表示,单应也是将平面从一个位置映射到另一个位置,并保持其某些性质不变,例如保线性。[image]

上面得到的单应矩阵第一个相机坐标系取得,还需要将其变换到成像平面坐标系中,取得两图像间的单应矩阵。设x1,x2x1,x2为PP在两图像的像点坐标,

 

x1=KX1,x2=KX2x1=KX1,x2=KX2


KK是相机的内参数,代入上面求得单应变换公式

K−1x2=HK−1x1⟹x2=KH′K−1x1=K(R+T1dNT)K−1x1K−1x2=HK−1x1⟹x2=KH′K−1x1=K(R+T1dNT)K−1x1


所以,同一平面得到的两个图像间的单应矩阵HH为

H=K(R+T1dNT)K−1H=K(R+T1dNT)K−1

平面的单应和对极约束的区别

两图像间的单应矩阵后,有什么作用呢?它和两幅图像间的对极约束有何区别

两图像间的对极约束和场景的结构无关,也就是说对极约束对于任意场景结构的两幅图像都是成立的,不能给出两幅图像上的像点的一一对应关系,只能给出点对应的必要条件,另一幅图像上与图像上对应的像点在位于对应的对极线上。基础矩阵FF描述的实际是一种点和直线的映射关系,而不是一种点对点的约束关系,并不能给出另一个点的确切位置。

平面间的单应,并不像对极约束完全不需要场景的结构信息,它对场景的结构有了要求:场景的点必须在同一个平面上,因此单应矩阵HH也就能够对两图像上对应点的提供更多的约束,知道了某点在一幅图像的像点位置后,可以通过单应矩阵,求得其在另一幅图像中像点的确切位置。

也就说,三维点如果不是在同一个平面上,可以使用基础矩阵FF来计算图像上像点在另一幅图像上对应的对极线,而不能使用单应矩阵HH得到对应点的确切位置。但如果在这种情况下,仍使用单应矩阵HH计算对应点的位置,其结果会如何呢,如下图

通过平面PP在两图像上的匹配点,计算得到了其两图像间的单应矩阵HH。三维点p′p′并不在平面PP上,其在图像1中的像点为x1x1,使用单应矩阵HH计算其在图像2中对应的像点。从上图可以看出,p′p′在图像2上的像点是x′2x2′,而使用单应矩阵计算得到的像点却是x2x2。

在这种情形下,使用单应矩阵HH估计图像上对应点位置,误差来自两个方面:

  • 三维点p′p′和单应矩阵HH对应的平面PP之间的距离。
    从上图可知使用HH计算p′p′像点位置时,实际得到的是却是平面PP上的点pp在图像2的像点,而pp是相机1的中心O1O1和p′p′确定的直线和平面PP的交点。
  • 相机2相对于相机1的平移。
    具体分析可看下一小节相机只有旋转无平移下的单应。

也就是说,在相机的平移相对于场景的深度足够小时,仍然可以使用单应矩阵HH来计算图像中匹配像点的对应位置。

该段分析多数参考Homography 知多少?

相机只有旋转无平移下的单应

当相机在只有旋转而没有平移的情况下取得同一场景的两幅图像,可以使用单应矩阵HH来描述这两图像之间的关系。

通过前面的文章知道,相机在不同位姿下取得同一场景的图像,可以使用基础矩阵FF描述两图像像点之间的约束关系。这里的不同位姿指的是相机要有旋转和平移,但如果相机之间只有旋转无平移,图像的像点之间又有怎样的约束关系呢,单应矩阵HH又和前面提到的基础矩阵FF,有何不同。

假设得到两幅图像的相机之间只有旋转,而没有平移t=(0,0,0)Tt=(0,0,0)T,有:

 

p1=KP ,p2=KRPp1=KP ,p2=KRP


其中,KK是相机的内参,p1,p2p1,p2分别是两图像的像点,PP在相机坐标系下的三维点坐标,以第一个相机的中心为坐标原点。
从上面公式可得到

P=K−1p1,p2=KRK−1p1P=K−1p1,p2=KRK−1p1


又有两个图像间的单应p2=Hp1p2=Hp1,所以就有:

H=KRK−1H=KRK−1


也就是在相机只有旋转的情况下,可像求解两图像间的单应矩阵HH,然后可从HH中分解得到相机的内参数KK,以及旋转矩阵RR。
基础矩阵F=K−Tt×RK−1F=K−Tt×RK−1(具体推导过程可参看:SLAM入门之视觉里程计(3):两视图对极约束 基础矩阵 ),而由于相机的平移向量t=(0,0,0)Tt=(0,0,0)T,可知基础矩阵FF为零矩阵,也就是说

  • 在相机只有旋转而没有平移的情况下,两视图的对极约束就不再适用,这时可以使用单应矩阵HH来描述两个图像像点的对应关系。
  • 在这种情况下,两图像点的匹配不依赖于三维点的深度信息,无法使用三角法重构出三维点在世界坐标系中的三维坐标。

通过匹配的点对计算单应矩阵

两图像上的像点p1(x1,y1),p2(x2,y2)p1(x1,y1),p2(x2,y2)是一对匹配的点对,其单应矩阵为HH,则有

 

⎛⎝⎜x2y21⎞⎠⎟=⎛⎝⎜H11H21H31H12H22H32H13H23H33⎞⎠⎟⎛⎝⎜x1y11⎞⎠⎟⇔p2=Hp1(x2y21)=(H11H12H13H21H22H23H31H32H33)(x1y11)⇔p2=Hp1


将矩阵的乘法展开,即可得到

⎧⎩⎨⎪⎪x2=H11x1+H12y1+H13y2=H21x1+H22y1+H231=H31x1+H32y1+H33{x2=H11x1+H12y1+H13y2=H21x1+H22y1+H231=H31x1+H32y1+H33


方便求解,可以将上面等式变换为Ax=0Ax=0的形式,做如下变换
第一和第二个式子的左右两边同时乘以第三个式子的左右两边得到

x2(H31x1+H32y1+H33)=H11x1+H12y1+H13y2(H31x1+H32y1+H33)=H21x1+H22y1+H23x2(H31x1+H32y1+H33)=H11x1+H12y1+H13y2(H31x1+H32y1+H33)=H21x1+H22y1+H23


将式子的右边变为0

x2(H31x1+H32y1+H33)−H11x1+H12y1+H13=0y2(H31x1+H32y1+H33)−H21x1+H22y1+H23=0x2(H31x1+H32y1+H33)−H11x1+H12y1+H13=0y2(H31x1+H32y1+H33)−H21x1+H22y1+H23=0


将上面的等式改写为向量积的形式,令h=(H11,H12,H13,H21,H22,H23,H31,H32,1)Th=(H11,H12,H13,H21,H22,H23,H31,H32,1)T,单应矩阵HH是一个齐次矩阵,可以将其最后一个元素归一化为1。
则上面两个式子可以改写为

axh=0ayh=0axh=0ayh=0


其中,ax=(−x1,−y1,0,0,0,x2x1,x2y1,x2)Tax=(−x1,−y1,0,0,0,x2x1,x2y1,x2)T,ay=(0,0,0,−x1,−y1,−1,y2x1,y2y1,y2)Tay=(0,0,0,−x1,−y1,−1,y2x1,y2y1,y2)T

一对匹配的点对,可以得到上述等式,HH有8个未知量,也就说最少4对匹配的点对(任意3点不共线),就可以求出两幅图像的单应矩阵HH。但是通常来说,图像的匹配点对要超过4对,设得到了nn对匹配的点对,可以得到如下的等式

 

Ah=0,其中A=⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜aTx1aTy1aTx2aTy2⋮aTxnaTyn⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟Ah=0,其中A=(ax1Tay1Tax2Tay2T⋮axnTaynT)

具体求解方法,可以参考SLAM入门之视觉里程计(4):基础矩阵的估计,首先将图像坐标归一化,然后使用最小二乘法或者随机采样一致性(RANSAC)的方法估计得到单应矩阵HH。

在OpenCV 中也封装了各种求解单应矩阵的方法,具体的使用可以参考OpenCV,计算两幅图像的单应矩阵,通过求解两图像的单应矩阵,将图像变换到同一个视角下,然后叠加到一起。

总结

相比于两视图的基础矩阵(本质矩阵)来说,两图像的单应矩阵比较难理解一些。针对本文,总结以下几点

  • 使用场景
    • 基础矩阵表示的是两视图的对极约束,和三维场景的结构无关,只依赖于相机的内参数以及外参数,需要两个相机的位置有旋转和平移
    • 单应矩阵对场景的三维结构有了更多的要求,需要场景中的点在同一个平面上; 或者是,对相机的位姿有了要求,两个相机之间只有旋转而无平移
  • 约束关系
    • 基础矩阵表示的像点和另一幅图像上的对极线的映射关系,使用基础矩阵无法得到像点对应点在另一幅图像上的确切位置。
    • 单应矩阵则是点和点的映射,使用单应矩阵可以找到像点在另一幅图像上对应点的确切位置。
  • 使用单应矩阵而不是基础矩阵
    • 相机只有旋转而无平移的时候,两视图的对极约束不成立,基础矩阵FF为零矩阵,这时候需要使用单应矩阵HH
    • 场景中的点都在同一个平面上,可以使用单应矩阵计算像点的匹配点。
    • 相机的平移距离相对于场景的深度较小的时候,也可以使用单应矩阵HH。
机器视觉之单应性变换(Homography) 接下来,它估计了两幅图像之间的Homography矩阵,然后将第一幅图像根据Homography矩阵进行了变换以对齐到第二幅图像。最后,它将两幅图像融合在一起创建全景图像并显示。在OpenCV等计算机视觉库中,通常提供了用于估计Homography的函数,这些函数可以根据给定的对应点坐标自动计算Homography矩阵,然后可以使用这个矩阵来进行各种应用,如图像对齐、物体追踪等。:Homography可以用于将两幅图像对齐,使它们具有相同的平面投影,从而可以进行图像拼接、全景图像生成等任务。 阅读详情

相关推荐

单应性矩阵Homography计算和优化

单应性矩阵,是用来描述两个平面之间的变换关系,是一个3x3的齐次矩阵。 图上的4个绿色的圈,两两可以对应,H可以表达第一张图变换到第二张图的转换关系。具体的表达式: aaa表示尺度信息,h1−h9h_1-h_9h1​−h9​表示HHH矩阵,HHH矩阵有8个自由度,h9=1h_9=1h9​=1,所以只需要4对点就可以计算出。 首先展开: 然后可以前两式比上第三式,这样可以把系数aaa约掉。并让等式右边等于0。 展开成矩阵的形式 $A_ih = 0 $的形式 把所有点对都考虑进来 Ah=0Ah=0Ah

@way 9678

单应(Homography)

在之前的博文OpenCV,计算两幅图像的单应矩阵,介绍调用OpenCV中的函数,通过4对对应的点的坐标计算两个图像之间单应矩阵HH,然后调用射影变换函数,将一幅图像变换到另一幅图像的视角中。当时只是知道通过单应矩阵,能够将图像1中的像素坐标(u1,v1)(u1,v1)变换到图像2中对应的位置上(u2,v2)(u2,v2),而没有深究其中的变换关系。 单应(Homography)是射影几何中的概念...

qq_40213457的博客 2282

视觉slam十四讲学习笔记(六)视觉里程计 1

1.理解图像特征点的意义, 并掌握在单幅图像中提取出特征点,及多幅图像中匹配特征点的方法。2. 理解对极几何的原理,利用对极几何的约束,恢复出图像之间的摄像机的三维运动。3.理解PNP 问题,及利用已知三维结构与图像的对应关系,求解摄像机的三维运动。4.理解ICP问题,及利用点云的匹配关系,求解摄像机的三维运动。5.理解如何通过三角化,获得二维图像上对应点的三维结构。视觉SLAM十四讲ch7_1_哔哩哔哩_bilibili。

qq_53589322的博客 1602

Homography 知多少?

在ORB-SLAM初始化的时候,作者提到,如果场景是平面,或者近似平面,或者低视差时,我们能应用单应性矩阵(homography),这三种情形在我应用SVO的过程中颇有同感,打破了我对HH矩阵的固有映像,即只能用于平面或近似平面。但是我不知道如何去具体分析这里面的误差,比如不共面的情况时,应用HH矩阵将一个图像坐标从图像1投影到图像2时,它会落在图像哪个位置?和实际位置的误差该怎么计算?误差会有多

知行合一 5万+

视觉SLAM 第7讲 本质矩阵 基础矩阵 单应矩阵 知识点/证明/理解/秩/自由度

本质矩阵 基础矩阵 单应矩阵 证明/理解/秩/自由度

CSSDCC的博客 5460

视觉SLAM十四讲之基于特征点的视觉里程计

视觉SLAM十四讲之基于特征点的视觉里程计 文章目录视觉SLAM十四讲之基于特征点的视觉里程计1 主要目标2 特征提取与匹配2.1 特征点法2.2 特征匹配3 估计相机运动3.1 对极几何解决单目问题3.2 3D-2D:PnP 1 主要目标 1.1 特征点是如何匹配的; 1.2 如何通过2D-2D的特征点估计相机运动; 1.3 如何从2D-2D的匹配估计一个点的空间位置 1.4 3D-2D的PnP...

sunshine 1084

【视觉SLAM入门】5.1. (基于特征点的视觉里程计)特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

从特征点的解释和说明出发,介绍了关键点,描述子和他们的具体实现。对VO前端里程计的任务进行了推理,得到了视觉SLAM中重要的特征匹配任务的完成和原理推导。以及在单目相机情况下的特征匹配和初始化即用对极约束求解相机位姿和深度(三角化)的过程

Eric_Sober的博客 3061

SLAM秋招知识点总结——自动驾驶算法、3D视觉岗位(附有解答)

前言 本文为楼主在学习SLAM过程中相关知识点总结,包含多视图几何、常见SLAM系统源码解析、相关数学知识、图像处理问题、机器视觉知识点、《十四讲》精品总结、基本库安装等系列。这些知识点帮助我在2020年秋招面试自动驾驶岗位过程中有了系统认知。2020年新冠疫情影响滞留在家,把之前学习的知识点做了系统总结,所有问题都有解答,并附有链接,希望可以帮助到之后寻找相关岗位的同学。 目录 一、多视图...

try_again_later的博客 4395

视觉SLAM14精讲——视觉里程计5.2

fill:#333;color:#333;color:#333;fill:none;传感器数据类型2D-2D2D-3D3D-3D对极几何PnPICP扩展内容NDT八点法本质矩阵SVD最小二乘法高斯牛顿法列文-马夸特扩展内容ICP变种。

Kerkoporta 1025

经验谈:写给新手的反激变压器KRP详解.doc

经验谈:写给新手的反激变压器KRP详解.doc

海康威视摄像头网线连接笔记本电脑,客户端提示:1连接设备失败。设备不在线或网络原因引起的连接超时等。(HCNetSDK.dll[7].)解决方案

1.环境 电脑:联想笔记本电脑(win10系统) 摄像头:海康威视DS-2CD3T20D-i5,4mm 连接方式:直接用网线将摄像头和摄像头连接 2.问题: 客户端出现如下提示: 3. 解决流程: 1.确认网线是否有问题:我的网线指示灯常亮,并且设备能够被搜索到,只是一直显示离线 2.按照网上教程直接配置摄像头的ip地址与电脑同一网段:登录失败。 错误码为 HCNetSDK.dll[7].(连接设备失败。设备不在【海康威视吧】_百度贴吧 失败了,没有反应 3.查看有线网卡的地

weixin_48911487的博客 3万+

视觉SLAM:单应矩阵

在三维空间中,一个平面可以通过其法向量和一个点来定义。假设平面的法向量为:nabcnabc并且我们有一个平面上的点P0x0y0z0P0​x0​y0​z0​法向量nnn是与平面垂直的向量,它的方向决定了平面的方向。如果点PxyzPxyz是平面上的任意一点,那么从P0P_0P0​到PPP的向量PQ→PQ​可以表示为PQ→x−x0y−y0z−z0PQ​x−x0​。

qq_53668261的博客 1231

WinCC与PLC在西门子逻辑赛项中的通信配置避坑指南

本文针对西门子逻辑赛项中WinCC与PLC通信配置的常见问题,提供了一套实战避坑指南。重点解析了WinCC、PLC与EET仿真平台的三角通信架构,强调了IP地址规划、防火墙设置等关键环节的注意事项,并给出了系统化的故障诊断流程与排查技巧,帮助选手和技术人员快速定位并解决通信故障,确保监控系统稳定运行。

weixin_29165725的博客 107

视觉SLAM总结——视觉SLAM十四讲笔记整理

SLAM笔记整理基础知识点1. 特征点、描述子、特征匹配相关问题 基础知识点 1. 特征点、描述子、特征匹配 这是整个SLAM系统最开始的部分,先提取特征点和描述子,然后进行特征匹配,通过匹配的特征点才求取的相关变换矩阵,这里容易搞混特征点和描述子的概念。 (1)特征点 Harris角点:就是一个根据特征小窗口在不同方向上的移动,不同的变化形式即为不同特征(角点、边界),转化到数学公式里面最后就是...

weixin_44580210的博客 8943

HFSS学习笔记——Vivaldi天线仿真(一)

Vivaldi 天线HFSS仿真,HFSS中指数曲线绘制及曲面绘制。

and_future的博客 1万+

阅文集团大数据面试题及参考答案

在 Flink 中,watermark 是一种用于处理乱序事件时间的机制。实现接口:通常需要实现 AssignerWithPeriodicWatermarks 或 AssignerWithPunctuatedWatermarks 接口。前者会周期性地生成 watermark,后者则是基于某些特定事件来生成 watermark ,比如接收到某个特定值的消息时。定义位置:可以在数据源处或者在流处理的中间操作中定义 watermark。在数据源定义时,能更精准地根据数据的产生特性设置 watermark;

大模型大数据攻城狮的专栏 1088

解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 7 讲 视觉里程计1 ( 中 )

上一篇博客《解读《视觉SLAM十四讲》,带你一步一步入门视觉SLAM—— 第 7 讲视觉里程计1 ( 上 )》,我解读了特征点,讲述了关键点的提取和描述子的计算,以及特征点的匹配。经过匹配之后就会获得很多匹配点对。那么怎么从匹配的点对中获得相机的运动关系呢? 解读 对极约束 作者首先通过三点共面关系,推导出了对极约束。实际上这个推导过程还有一种更加简洁的方法,首先将书中对极几何约束示意图简化成如下...

一点儿也不萌的萌萌 1145

大数据领域数据产品的交通运输行业应用

您是否经历过早高峰被堵在桥上,看着导航显示“前方5公里缓行”却无能为力?是否见过货车司机绕远路导致成本飙升?这些“交通痛点”的背后,是传统交通管理依赖经验决策的局限。本文将聚焦“大数据数据产品”这一核心工具,从技术原理到实际应用,全面解析它如何为交通运输行业“开天眼”,解决从城市拥堵到物流效率的一系列难题。本文将按照“问题引入→概念拆解→技术原理→实战案例→应用场景→未来趋势”的逻辑展开,用生活化比喻降低理解门槛,用代码和数学模型提升专业性,最终帮您建立“大数据+交通”的完整认知框架。交通数据。

操作系统内核探秘的博客 237

SLAM系列——视觉里程计(特征法)

特征点法 特征点

xiaohu的博客 3280

OpenClaw使用ClawHub安装skill网络不稳定?Rate limit exceeded报错?试试这个国内高速镜像工具!

使用 ClawHub 安装 Skill 时遇到 🌐 网络不稳、❌ Rate limit 或命令不可用?使用这个镜像工具,轻松解决skill安装问题,⚡

XiaoqiangClub的博客 1260

Qt之QMqtt 发送图片数据

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议;MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛;在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT);其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用;

Ilson_的博客 1437

视觉SLAM十四讲学习笔记——第七章 视觉里程计

视觉SLAM十四讲学习笔记——第七章 视觉里程计7.1 特征点法7.1.1 特征点7.1.2 ORB 特征7.1.3 7.1 特征点法 VO 的实现方法,按是否需要提取特征,分为特征点法的前端以及不提特征的直 接法前端,基于特征点法的前端,长久以来(直到现在)被认为是视觉里程计的主流方法。 7.1.1 特征点 从图像中选取比较有代表性的点,这些点在相机视角发生少量变化后会保持不变,所以会在各个图...

Nova的博客 3146

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1070
上一篇: 单应矩阵,基本矩阵,本质矩阵
下一篇: vs2013下配置ceres solver
everagain
博客等级 码龄18年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值