MVS步骤(1)——关键点提取和匹配[SIFT1]

这是SIFT的经典文章,初步先进行一个详细的翻译以进行记录,同时理解里面的算法和思想,下一步争取一步步实现论文里的算法。


Distinctive Image Features from Scale-Invariant Keypoints

Abstract

本文提出了一种用于从图像中提取有特点的不变特征的方法,该方法可用于在对象或场景的不同视图之间执行可靠匹配。通过使用快速最近邻居算法将各个特征与来自已知对象的特征数据库匹配,然后进行霍夫变换以识别属于单个对象的聚类,最后通过最小二乘解决方案对一致的姿势参数进行验证。


1. Introduction

1.尺度空间极值检测:计算的第一阶段搜索所有尺度和图像位置。通过使用高斯差分函数来有效地实现识别对于比例和方向不变的潜在兴趣点。
2.关键点定位:在每个候选位置,都用一个详细的模型来确定位置和比例。基于其稳定性的度量来选择关键点。
3.方向分配:基于局部图像梯度方向,为每个关键点位置分配一个或多个方向。所有接下来的操作都是在相对于每个特征的指定方向,比例和位置进行了变换的图像数据上执行的,从而为这些变换提供了不变性。
4.关键点描述符:在每个关键点周围的区域中以选定的比例测量局部图像梯度。这些梯度被转换成局部形状畸变和光照变化的有意义的等级.

这种方法被称为尺度不变特征变换(SIFT)(the Scale Invariant Feature Transform),因为它将图像数据转换为相对于局部特征的尺度不变坐标。


3. 检测尺度空间极值

我们将使用级联过滤方法检测关键点,,该方法使用有效算法来识别候选位置,然后进一步详细检查。
关键点检测的第一阶段是识别可以在同一对象的不同视图下重复分配的位置和比例。通过使用称为尺度空间的连续尺度函数(Witkin,1983)来在所有可能尺度上搜索稳定特征,可以实现检测对图像尺度变化不变的位置。
Koenderink(1984)和Lindeberg(1994)已经证明,在各种合理的假设下,唯一可能的尺度空间核高斯函数。因此,图像的尺度空间被定义为函数L(x,y,σ),它是由可变尺度高斯函数G(x,y,σ)与输入图像I(X,Y)的卷积产生的:
在这里插入图片描述
其中*是x和y中的卷积运算.并且:

在这里插入图片描述
为了有效地检测尺度空间中的稳定关键点位置,我们(Lowe,1999)使用了与图像卷积的高斯差分函数中的尺度空间极值D(x,y,σ),D可以通过由常数乘法因子k分隔的两个邻近尺度的差来计算:
在这里插入图片描述
选择此函数有多种原因。首先,平滑空间特征描述在任何情况下都需要计算平滑图像L,而该函数计算L特别有效,可以通过简单的图像相减来计算D.
在这里插入图片描述
图1:对于每个尺度空间的八度音阶(octave),初始图像与高斯重复卷积以产生左侧所示的一组尺度空间图像。减去相邻的高斯图像以在右侧产生高斯差分图像。 在每个octave之后,高斯图像被下采样2倍,并且重复该过程。
此外,正如Lindeberg(1994)所研究的那样,高斯差分函数提供了与高斯尺度拉普拉斯算子σ2∇2G的近似。林德伯格表明带因子σ2的拉普拉斯算子的归一化对于真实尺度不变性是必需的。在详细的实验比较中,Mikolajczyk(2002)发现,与一系列其他可能的图像函数(如梯度,Hessian或Harris角函数)相比,σ2∇2G的最大值和最小值产生最稳定的图像特征。
D和σ2∇2G之间的关系可以从热扩散方程(用σ而不是更常见的t =σ2参数化)来理解:
在这里插入图片描述
由此可见,我们可以使用kσ和σ附近尺度的差异,从∂G/∂σ的有限差分近似计算出∇2G:
在这里插入图片描述
and therefore,
在这里插入图片描述
这表明当高斯差分函数具有不同于常数因子的尺度时,它已经包含了尺度不变拉普拉斯算子所需的σ2尺度归一化。等式中的因子(k-1)在所有尺度上都是常数,因此不会影响极值位置。当k变为1时,近似误差将变为零,但实际上我们发现近似对极值检测或定位的稳定性几乎没有影响,即使是显着的尺度差异.
构造D(x,y,σ)的有效方法如图1所示。初始图像与高斯逐步卷积,产生由尺度空间中的常数因子k分隔的图像,如左列所示。我们选择将每个刻度空间的八度音程(即,σ的倍增)除以间隔的整数s,因此k = 21 / s。我们必须在每个八度音阶的模糊图像堆栈中产生s + 3图像,以便最终的极值检测覆盖完整的八度音阶。减去相邻的图像比例以产生右侧所示的高斯差分图像。一旦处理完整的八度音阶,我们通过在每行和每列中取每隔一个像素重新采样具有两倍初始值σ(它将是来自堆栈顶部的2个图像)的高斯图像。相对于σ的采样精度与前一个八度音程的开始没有区别,而计算大大减少。


3.1局部极值检测

在这里插入图片描述
图2:通过比较一个像素(用X标记)与当前和相邻尺度(用圆圈标记)的3×3区域中的26个邻居来检测高斯差分图像的最大值和最小值。

为了检测D(x,y,σ)的局部最大值和最小值,将每个采样点与其当前图像中的八个邻居以及上下比例中的九个邻居进行比较(参见图2)。仅当它大于所有这些邻居或小于所有邻居时才选择它。这项检查的成本相当低,因为大多数样本点将在前几次检查后消除。


3.2按比例抽样的频率

由于对象识别的成功通常更多地取决于正确匹配的关键点的数量,而不是它们的正确匹配百分比,对于许多应用来说,使用更多数量的比例样本将是最佳的。
总而言之,这些实验表明,尺度空间高斯函数差异具有大量的极值,并且检测它们将是非常昂贵的。幸运的是,即使采用粗略的标度采样,我们也可以检测到最稳定和最有用的子集。


4 准确的关键点定位

一旦通过将像素与其邻居进行比较找到了关键点候选者,下一步就是对附近数据进行详细匹配,以获得主曲率的位置,尺度和比率。该信息拒绝具有低对比度(因此对噪声敏感)或沿边缘定位不良的点。
这种方法的初步实施(Lowe,1999)只是将关键点定位在中心样本点的位置和规模上。 然而,最近Brown开发了一种方法(Brown和Lowe,2002),用于将3D二次函数拟合到局部样本点以确定最大值的插值位置,他的实验表明,这为匹配和稳定性提供了实质性的改进。
在这里插入图片描述
图5:该图显示了关键点选择的阶段。(a)233x189像素的原始图像。(b)在高斯差值函数的最大值和最小值处的初始832个关键点位置。关键点显示为表示比例,方向和位置的向量。(c)在对最小对比度应用阈值后,仍然存在729个关键点。(d)最终的536个关键点仍然在主曲率比率的额外阈值之后。

正如Brown所建议的那样,Hessian和D的导数通过使用相邻样本点的差异来近似。 得到的3x3线性系统可以以最低的成本解决。如果偏移x在任何维度上都大于0.5,则意味着极值更接近不同的采样点。 在这种情况下,样本点被改变并且执行插值而不是执行该点。将最终偏移x添加到其采样点的位置,以获得极值位置的插值估计。
极值处的函数值D(x)可用于抑制低对比度的不稳定极值。 这可以通过将等式(3)代入(2)得到
在这里插入图片描述
对于本文中的实验,所有| D(x)| 的极值小于0.03的都被丢弃(如前所述,我们假设图像像素值在[0,1]范围内)。
图5显示了关键点选择对自然图像的影响。 为了避免过多的混乱,使用低分辨率233×189像素图像,关键点显示为矢量,给出每个关键点的位置,比例和方向(方向分配如下所述)。 图5(a)显示了原始图像,其在后续图形后面以降低的对比度显示。 图5(b)显示了高斯函数差异的所有检测到的最大值和最小值的832个关键点,而(c)显示了删除值小于0.03的| D(x)|的所有729个关键点。(d)部分将在下一节中解释。

4.1消除边缘响应

为了稳定性,只是拒绝低对比度的关键点是不够的。即使沿边缘的位置不确定,并因此对少量噪声不稳定,高斯函数的差异仍沿着边缘具有强响应。
在高斯差分函数中定义不明确的峰将在边缘上具有大的主曲率,但在垂直方向上具有小的主曲率。 主曲率可以从2x2 Hessian矩阵H计算,在关键点的位置和比例下计算:
在这里插入图片描述
通过获取相邻样本点的差异来估计导数。
H的特征值与D的主曲率成正比。借用Harris和Stephens(1988)使用的方法,我们可以避免明确计算特征值,因为我们只关注它们的比率。 设α是具有最大幅度的特征值,β是较小的特征值。 然后,我们可以从H的迹线计算特征值的总和,并从行列式计算它们的乘积:
计算效率非常高,测试每个关键点所需的浮点运算少于20次。 本文中的实验使用r = 10的值,其消除了主曲率之间的比率大于10的关键点。从图5(c)到(d)的转变显示了该操作的效果。

5 方向分配

通过基于局部图像属性为每个关键点指定一致的方向,可以相对于该方向表示关键点descriptor,从而实现图像旋转的不变性。
在通过多种方法分配局部方向进行实验后,发现以下方法可以得到最稳定的结果。关键点的尺度用于选择具有最接近尺度的高斯平滑图像L,使得所有计算以尺度不变的方式执行。对于每个图像样本,L(x,y),在此尺度下,使用像素差异预先计算梯度幅度m(x,y)和方向θ(x,y):
在这里插入图片描述
从关键点周围区域内的样本点的梯度方向形成方位直方图。 方向直方图有36个区间,覆盖360度的方向范围。 添加到直方图中的每个样本通过其梯度幅度和高斯加权圆窗口加权,其σ是关键点尺度的1.5倍。
方向直方图中的峰值对应于局部梯度的主导方向。检测直方图中的最高峰,然后使用在最高峰的80%内的任何其他局部峰也创建具有该方向的关键点。 因此,对于具有相似幅度的多个峰值的位置,将在相同位置和比例但是不同方向上创建多个关键点。**只有大约15%的点被分配了多个方向,但这些对于匹配的稳定性有很大贡献。**最后,抛物线拟合最接近每个峰的3个直方图值,以插入峰值位置获得更好的准确性。


6 局部图像描述符

先前的操作已为每个关键点分配了图像位置,比例和方向。这些参数利用可重复的局部2D坐标系描述局部图像区域,因此可以提供这些参数的不变性。下一步是计算局部图像区域的descriptor,该descriptor具有高度独特性,对于其他的变化(例如照明或3D视点的变化)尽可能不变。
Edelman,Intrator和Poggio(1997)已经证明了一种更好的方法。他们提出的表示基于生物视觉模型,特别是初级视觉皮层中复杂神经元的模型。这些复杂的神经元响应特定方向和空间频率的梯度,但允许视网膜上的梯度位置在小的感受野上移动而不是精确定位。
在这里插入图片描述
图7:通过首先计算关键点位置周围区域中每个图像采样点的梯度大小和方向来创建关键点descriptor,如左侧所示。 这些关键点descriptor由高斯窗口加权,由重叠的圆圈表示。 然后将这些样本累加到方向直方图中,形成4x4子区域内的内容,如右图所示,每个箭头的长度对应于该区域内该方向附近的梯度宏的总和。该图显示了从8x8样本集计算的2x2 descriptor数组,而本文中的实验使用从16x16样本数组计算的4x4 descriptor。

6.1 descriptor表示

图7说明了关键点descriptor的计算。首先,在关键点位置周围采样图像梯度幅度和方向,使用关键点的比例来选择图像的高斯模糊水平。为了实现方向不变性,descriptor的坐标和梯度方向相对于关键点方向旋转。为了提高效率,如第5节所述,对金字塔的所有级别预先计算梯度。这些在图7左侧的每个样本位置用小箭头表示。
描述符由包含所有方向直方图条目的值的向量形成,对应于图7右侧的箭头长度。该图显示了2x2的方向直方图阵列,而我们下面的实验表明,使用4x4直方图阵列可以获得最佳结果,每个直方图中有8个方向区间。 因此,本文中的实验使用每个关键点的4x4x8 = 128元素特征向量。

6.2 描述符测试

有两个参数可用于改变描述符的复杂性:直方图中的方向数r,以及n×n方向直方图数组的宽度n。得到的描述符向量的大小是r×n×n。随着描述符的复杂性增加,它将能够在大型数据库中更好地区分,但它对形状扭曲和遮挡也更敏感。


7 应用于物体识别

如上所述,本文的主要主题是推导出独特的不变关键点. 为了演示它们的应用,我们现在将简要描述它们在杂乱和遮挡的情况下用于物体识别的用途。关于这些特征在识别中的应用的更多细节可在其他论文中获得(Lowe,1999; Lowe,2001; Se,Lowe和Little,2002).
首先通过将每个关键点独立地匹配到从训练图像提取的关键点的数据库来执行对象识别。由于背景杂乱引起的模糊特征或特征,许多这些初始匹配将是不正确的。因此,首先识别至少3个特征的聚类,其对于对象及其姿势达成一致,因为这些聚类具有比单个特征匹配更高的正确概率。然后,通过对模型执行详细的几何拟合来检查每个聚类,并且结果用于接受或拒绝解释。

7.1 关键点匹配

通过从训练图像中识别关键点数据库中的最近邻来找到每个关键点的最佳候选匹配。 最近邻被定义为具有不变描述符向量的最小欧几里德距离的关键点,如第6节中所述.
对于我们的对象识别实现,我们拒绝距离比率大于0.8的所有匹配,这消除了90%的错误匹配,同时丢弃少于5%的正确匹配。该图是通过对40,000个关键点的数据库中的随机比例和方向变化,30度的深度旋转以及2%图像噪声的添加来匹配图像而生成的。

7.2 高效的最近邻索引

识别高维空间中点的精确最近邻的算法中,没有可以与穷举搜索相比的。我们的关键点描述符具有128维特征向量,并且最佳算法(例如k-d树(Friedman等人,1977))没有提供超过大约10维空间的穷举搜索的加速。因此,我们使用了近似算法,称为Best-Bin-First(BBF)算法(Beis和Lowe,1997)。这种算法是近似的,它以高概率返回最近邻。

BBF算法使用针对k-d树算法修改的搜索排序,以距离查询位置最近的距离的顺序在特征空间中搜索bins。这个优先搜索顺序首先由Arya和Mount(1993)检验,并且它们提供了对其计算性质的进一步研究(Arya等,1998)。此搜索顺序需要使用基于堆的优先级队列来有效确定搜索顺序。通过在探索了特定数量的最近的bins之后切断进一步的搜索,可以以低成本返回近似答案。在我们的实施中,我们在检查了前200个最近邻候选人之后切断了搜索。对于具有100,000个关键点的数据库,这提供了超过精确最近邻搜索的加速约2个数量级,但导致正确匹配的数量损失少于5%。 BBF算法特别适用于此问题的一个原因是我们只考虑最近邻距离第二最近邻的距离小于0.8倍的匹配(如上一节所述),因此不需要准确地解决许多邻居距离非常近的最困难的情况。

7.3 使用Hough变换进行聚类

为了把对于小的或高度遮挡的对象的识别的性能最大化,我们希望识别具有尽可能少的特征匹配的对象。我们发现只需3个特征即可实现可靠的识别。典型图像包含2,000个或更多特征,这些特征可能来自许多不同的对象以及背景杂乱的环境。虽然第7.1节中描述的距离比率测试允许我们丢弃由背景杂乱引起的许多错误匹配,但这不会从其他有效对象中删除匹配,并且我们通常仍需要识别99%的异常值中包含少于1%的内点的正确匹配子集。当内点的百分比远低于50%时,许多众所周知的稳健拟合方法,例如RANSAC或最小平方中值,表现不佳。幸运的是,通过使用Hough变换在姿势空间中聚类特征可以获得更好的性能(Hough,1962; Ballard,1981; Grimson 1990)。

Hough变换通过使用每个特征来投票选择与特征一致的所有对象姿势,从而识别具有一致解释的特征集群。当特征群集对对象的相同姿势进行投票时,解释的正确概率远高于任何单个特征。我们的每个关键点都指定了4个参数:2D位置,比例和方向,以及数据库中每个匹配的关键点,该数据库有一个关键点参数记录,该参数与它被发现的那个训练图片相关。因此,我们可以创建一个Hough变换条目,从匹配假设中预测模型的位置,方向和比例。该预测具有大的误差界限,因为这4个参数所暗示的相似性变换仅是3D对象的完整6自由度姿态空间的近似,并且也不考虑任何非刚性变形。因此,我们使用30度的宽二进制尺寸进行定向,使用2倍的比例尺,以及0.25倍最大投影训练图像尺寸(使用预测比例)进行定位。为了避免箱子分配中的边界效应问题,每个关键点匹配每个维度中2个最接近的bin的投票,为每个假设提供总共16个条目并进一步扩大姿势范围。

7.4仿射参数的解决方案

霍夫变换用于识别在bins中具有至少3个条目的所有聚类。然后对每个这样的聚类进行几何验证过程,其中对于将训练图像与新图像相关联的最佳仿射投影参数执行最小二乘解。

仿射变换正确地解释了在正投影下平面表面的3D旋转,但是对于非平面物体的3D旋转,近似可能较差。更通用的解决方案是解决基本矩阵(Luong和Faugeras,1996; Hartley和Zisserman,2000)。然而,基本矩阵解决方案需要至少7个点匹配,而仿射解决方案仅需要3个,并且实际上需要更多匹配以获得良好的稳定性。我们希望用少至3个特征匹配来执行识别,因此仿射解决方案提供了更好的起点,并且我们可以通过允许大的残差来解释仿射近似中的误差。如果我们想象在一个物体周围放置一个球体,那么将球体旋转30度将使球体内的任何点移动不超过球体投影直径的0.25倍。对于本文中使用的典型3D对象的示例,仿射解决方案很有效,因为我们允许残差误差高达对象最大投影尺寸的0.25倍。 (Brown和Lowe,2002)给出了一种更通用的方法,其中初始解决方案基于相似变换,然后在发现足够数量的匹配的情况下进展到基本矩阵的解。

模型点[x y] T到图像点[u v] T的仿射变换可以写成
在这里插入图片描述
其中模型平移为[tx ty] T,仿射旋转,比例和拉伸由mi参数表示。

我们希望求解变换参数,因此可以重写上面的等式以将未知数收集到列向量中:
在这里插入图片描述
此等式显示单个匹配,但可以添加任意数量的其他匹配,每个匹配为第一个和最后一个矩阵贡献两个以上的行。 需要至少3个匹配才能提供解决方案。

我们可以把这个线性系统写成 Ax = b
参数x的最小二乘解可以通过求解相应的正规方程来确定
在这里插入图片描述
这最小化了从投影模型位置到相应图像位置的距离的平方和。这种最小二乘方法可以很容易地扩展到解决关节和柔性物体的3D姿态和内部参数(Lowe,1991)。

8 Recognition examples

在这里插入图片描述
图12:左侧显示了两个对象的训练图像。 这些可以在具有广泛遮挡的杂乱图像中识别,如中间所示。 识别结果显示在右侧。 围绕每个识别的对象绘制平行四边形,示出在识别期间解决的仿射变换下的原始训练图像的边界。 较小的正方形表示用于识别的关键点。

图12显示了包含3D对象的杂乱和遮挡图像的对象识别示例。左侧显示了玩具火车和青蛙的训练图像。中间图像(大小为600x480像素)包含隐藏在其他对象背后的这些对象的实例,并且具有大量的杂乱背景,使得即使对于人类视觉也可能不会立即检测到对象。右侧的图像显示了叠加在图像的缩小对比度版本上的最终正确识别。用于识别的关键点显示为带有额外线条的方块以指示方向。正方形的大小对应于用于构造描述符的图像区域。还在每个识别实例周围绘制外平行四边形,其边对应于在识别期间确定的最终仿射变换下投影的训练图像的边界。

该方法的另一个潜在应用是进行识别,其中移动设备或车辆可以通过识别熟悉的位置来识别其位置。图13给出了该应用的一个例子,其中拍摄了许多位置的训练图像。如左上图所示,这些甚至可以是看似非常独特的物品,如木墙或带垃圾桶的树。右上方的测试图像(尺寸640×315像素)是从原始位置围绕场景旋转约30度的视点拍摄的,但是训练图像位置易于识别。

在这里插入图片描述
图13:此示例显示复杂场景中的位置识别。位置的训练图像显示在左上方,而从不同视点拍摄的640x315像素测试图像位于右上方。识别的区域显示在下部图像上,关键点显示为正方形,外部平行四边形显示用于识别的仿射变换下的训练图像的边界。

识别过程的所有步骤都可以有效地实现,因此在2GHz Pentium 4处理器上识别图12或图13中的所有对象的总时间小于0.3秒。 我们已经在附带摄像机的笔记本电脑上实现了这些算法,并在各种条件下对它们进行了广泛的测试。 通常,纹理化的平面表面可以在任何方向上在高达50度的深度旋转中被可靠地识别,并且在几乎任何提供足够光并且不产生过多眩光的照明条件下。 对于3D物体,可靠识别的深度旋转范围在任何方向上仅约30度,并且照明变化更具破坏性。出于这些原因,最好通过集成来自多个视图的特征来执行3D对象识别,例如使用局部特征视图聚类(Lowe,2001)。

这些关键点也已应用于机器人定位和映射问题,这已在其他论文中详细介绍过(Se,Lowe和Little,2001)。 在该应用中,三目立体声系统用于确定关键点位置的3D估计。 仅当关键点出现在具有一致差异的所有3个图像中时才使用关键点,从而导致非常少的异常值。 当机器人移动时,它使用与现有3D地图的特征匹配来定位自身,然后使用卡尔曼滤波器在更新其3D位置的同时向地图递增地添加特征。 这为未知环境中的机器人定位问题提供了可靠而准确的解决方案。 这项工作还解决了地点识别的问题,其中机器人可以在大地图内的任何地方打开并识别其位置(Se,Lowe和Little,2002),这相当于物体识别的3D实现。

9 Conclusions

本文中描述的SIFT关键点由于其独特性而特别有用,这使得我们能够从其他大型数据库中得到关键点的正确匹配。通过组合表示局部区域的图像梯度的高维矢量来实现这种独特性。已经证明关键点对于图像旋转和比例是不变的,并且在大范围的仿射失真,噪声的增加和照明的变化中是稳健的。可以从典型图像中提取大量关键点,这导致在杂波中提取小对象的鲁棒性。在整个范围内检测关键点的事实意味着小的局部特征可用于匹配小的和高度遮挡的对象,而大的关键点对于受噪声和模糊影响的图像表现良好。它们的计算效率很高,因此可以从标准PC硬件上具有接近实时性能的典型图像中提取数千个关键点

本文还介绍了使用关键点进行对象识别的方法。 我们描述的方法使用近似最近邻查找,Hough变换用于识别在对象姿势上达成一致的聚类,最小二乘姿态确定和最终验证。 其他潜在的应用包括用于3D重建的视图匹配,运动跟踪和分割,机器人定位,图像全景组装,极线校准以及需要识别图像之间的匹配位置的任何其他应用。

在推导不变和独特的图像特征方面,有许多方向需要进一步研究。 需要对具有完整3D视点和照明变化的数据集进行系统测试。本文中描述的特征仅使用单色强度图像,因此可以从包括照明不变的颜色描述符中得出进一步的区别(Funt和Finlayson,1995; Brown和Lowe,2002)。 类似地,局部纹理测量似乎在人类视觉中起重要作用,并且可以以比当前描述符使用的单个空间频率更一般的形式并入特征描述符中。不一致的局部特征匹配方法的一个吸引人的方面是不需要只选择一种特征类型,并且可能通过使用许多不同的特征获得最佳结果,所有这些特征都可以提供有用的匹配并提高整体稳健性。

未来研究的另一个方向是单独学习适合识别特定对象类别的特征。这对于必须涵盖各种可能外观的通用对象类尤为重要。 Weber,Welling和Perona(2000)以及Fergus,Perona和Zisserman(2003)的研究通过学习适用于识别通用类对象的小型局部特征集,展示了这种方法的潜力。 从长远来看,功能集可能包含先前和已学习的功能,这些功能将根据可用于各种对象类的训练数据量来使用。

参考文献:

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值