ORB特征点检测

特征检测---ORB 文章目录为什么要引入ORB什么是ORBFASTOriented FASTBRIEF描述子Hamming距离改进的BRIEF 为什么要引入ORB 在ORB之前,有SIFT、SURF,虽然具有良好的旋转不变性、光照不变性等,但这两个检测方法需要的时间实在是有些长,尤其是SIFT。下图是ORB文献里提到的每种方法检测一帧图像(640*480)所用的时间: 可以看出来,ORB在速度上的确是快很多。 什么是ORB ORB全称是Oriented FAST and Rotated BRIEF,是目前最快速稳定的特征点检 阅读详情

FROM:http://www.cnblogs.com/ronny/p/4083537.html

Oriented FAST and Rotated BRIEF

www.cnblogs.com/ronny

 

这篇文章我们将介绍一种新的具有局部不变性的特征 —— ORB特征,从它的名字中可以看出它是对FAST特征点与BREIF特征描述子的一种结合与改进,这个算法是由Ethan Rublee,Vincent Rabaud,Kurt Konolige以及Gary R.Bradski在2011年一篇名为“ORB:An Efficient Alternative to SIFT or SURF”的文章中提出。就像文章题目所写一样,ORB是除了SIFT与SURF外一个很好的选择,而且它有很高的效率,最重要的一点是它是免费的,SIFT与SURF都是有专利的,你如果在商业软件中使用,需要购买许可。

如果你对FAST特征点与BRIEF特征描述子不了解,请先阅读以下两篇文章。本文不打算对它们作详细的算法说明。

  1. FAST特征点检测
  2. BRIEF特征描述子

1. ORB的算法原理

ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化。

首先,它利用FAST特征点检测的方法来检测特征点,然后利用Harris角点的度量方法,从FAST特征点从挑选出Harris角点响应值最大的 N 个特征点。其中Harris角点的响应函数定义为:

R=detM−α(traceM)2

关于 M 的含义和响应函数的由来可以参考Harris角点检测这篇文章。

1.1 旋转不变性

我们知道FAST特征点是没有尺度不变性的,所以我们可以通过构建高斯金字塔,然后在每一层金字塔图像上检测角点,来实现尺度不变性。那么,对于局部不变性,我们还差一个问题没有解决,就是FAST特征点不具有方向,ORB的论文中提出了一种利用灰度质心法来解决这个问题,灰度质心法假设角点的灰度与质心之间存在一个偏移,这个向量可以用于表示一个方向。对于任意一个特征点 p 来说,我们定义 p 的邻域像素的矩为:

mpq=∑x,yxpyqI(x,y)

其中 I(x,y) 为点 (x,y) 处的灰度值。那么我们可以得到图像的质心为:

C=(m10m00,m01m00)

那么特征点与质心的夹角定义为FAST特征点的方向:

θ=arctan(m01,m10)

为了提高方法的旋转不变性,需要确保 x 和 y 在半径为 r 的圆形区域内,即 x,y∈[−r,r] , r 等于邻域半径。

1.2 特征点的描述

ORB选择了BRIEF作为特征描述方法,但是我们知道BRIEF是没有旋转不变性的,所以我们需要给BRIEF加上旋转不变性,把这种方法称为“Steer BREIF”。对于任何一个特征点来说,它的BRIEF描述子是一个长度为 n 的二值码串,这个二值串是由特征点周围 n 个点对( 2n 个点)生成的,现在我们将这 2n 个点 (xi,yi),i=1,2,⋯,2n 组成一个矩阵 S

S=(x1y1x2y2⋯⋯x2ny2n)

Calonder建议为每个块的旋转和投影集合分别计算BRIEF描述子,但代价昂贵。ORB中采用了一个更有效的方法:使用邻域方向 θ 和对应的旋转矩阵 Rθ ,构建 S 的一个校正版本 Sθ

Sθ=RθS

其中

Rθ=[cosθ–sinθsinθcosθ]

而 θ 即我们在1.2中为特征点求得的主方向。

实际上,我们可以把角度离散化,即把360度分为12份,每一份是30度,然后我们对这个12个角度分别求得一个 Sθ ,这样我们就创建了一个查找表,对于每一个 θ ,我们只需查表即可快速得到它的点对的集合 Sθ 。

1.3 解决描述子的区分性

BRIEF令人惊喜的特性之一是:对于 n 维的二值串的每个比特征位,所有特征点在该位上的值都满足一个均值接近于0.5,而方差很大的高斯分布。方差越大,说明区分性越强,那么不同特征点的描述子就表现出来越大差异性,对匹配来说不容易误配。但是当我们把BRIEF沿着特征点的方向调整为Steered BRIEF时,均值就漂移到一个更加分散式的模式。可以理解为有方向性的角点关键点对二值串则展现了一个更加均衡的表现。而且论文中提到经过PCA对各个特征向量进行分析,得知Steered BRIEF的方差很小,判别性小,各个成分之间相关性较大。

为了减少Steered BRIEF方差的亏损,并减少二进制码串之间的相关性,ORB使用了一种学习的方法来选择一个较小的点对集合。方法如下:

首先建立一个大约300k关键点的测试集,这些关键点来自于PASCAL2006集中的图像。

对于这300k个关键点中的每一个特征点,考虑它的 31×31 的邻域,我们将在这个邻域内找一些点对。不同于BRIEF中要先对这个Patch内的点做平滑,再用以Patch中心为原点的高斯分布选择点对的方法。ORB为了去除某些噪声点的干扰,选择了一个 5×5 大小的区域的平均灰度来代替原来一个单点的灰度,这里 5×5 区域内图像平均灰度的计算可以用积分图的方法。我们知道 31×31 的Patch里共有 N=(31−5+1)×(31−5+1) 个这种子窗口,那么我们要 N 个子窗口中选择2个子窗口的话,共有 C2N 种方法。所以,对于300k中的每一个特征点,我们都可以从它的 31×31 大小的邻域中提取出一个很长的二进制串,长度为 M=C2N ,表示为

binArray=[p1,p2,⋯,pM],pi∈{0,1}

那么当300k个关键点全部进行上面的提取之后,我们就得到了一个 300k×M 的矩阵,矩阵中的每个元素值为0或1。

对该矩阵的每个列向量,也就是每个点对在300k个特征点上的测试结果,计算其均值。把所有的列向量按均值进行重新排序。排好后,组成了一个向量 T , T 的每一个元素都是一个列向量。

进行贪婪搜索:从 T 中把排在第一的那个列放到 R 中, T 中就没有这个点对了测试结果了。然后把 T 中的排下一个的列与 R 中的所有元素比较,计算它们的相关性,旭果相关超过了某一事先设定好的阈值,就扔了它,否则就把它放到 R 里面。重复上面的步骤,只到 R 中有256个列向量为止。如果把 T 全找完也,也没有找到256个,那么,可以把相关的阈值调高一些,再重试一遍。

这样,我们就得到了256个点对。上面这个过程我们称它为rBRIEF。

2. OpenCV中的ORB

ORB中有很多参数可以设置,在OpenCV中它可以通过ORB来创建一个ORB检测器。

ORB::ORB(int nfeatures=500, float scaleFactor=1.2f, int nlevels=8, int edgeThreshold=31, int firstLevel=0, int WTA_K=2, int scoreType=ORB::HARRIS_SCORE, int patchSize=31)

下面介绍一下各个参数的含义:

nfeatures - 最多提取的特征点的数量;

scaleFactor - 金字塔图像之间的尺度参数,类似于SIFT中的 k ;

nlevels – 高斯金字塔的层数;

edgeThreshold – 边缘阈值,这个值主要是根据后面的patchSize来定的,靠近边缘edgeThreshold以内的像素是不检测特征点的。

firstLevel - 看过SIFT都知道,我们可以指定第一层的索引值,这里默认为0。

WET_K - 用于产生BIREF描述子的 点对的个数,一般为2个,也可以设置为3个或4个,那么这时候描述子之间的距离计算就不能用汉明距离了,而是应该用一个变种。OpenCV中,如果设置WET_K = 2,则选用点对就只有2个点,匹配的时候距离参数选择NORM_HAMMING,如果WET_K设置为3或4,则BIREF描述子会选择3个或4个点,那么后面匹配的时候应该选择的距离参数为NORM_HAMMING2。

scoreType - 用于对特征点进行排序的算法,你可以选择HARRIS_SCORE,也可以选择FAST_SCORE,但是它也只是比前者快一点点而已。

patchSize – 用于计算BIREF描述子的特征点邻域大小。

#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/features2d/features2d.hpp>

using namespace cv;

int main(int argc, char** argv) 
{ 
    Mat img_1 = imread("box.png"); 
    Mat img_2 = imread("box_in_scene.png");

    // -- Step 1: Detect the keypoints using STAR Detector 
    std::vector<KeyPoint> keypoints_1,keypoints_2; 
    ORB orb; 
    orb.detect(img_1, keypoints_1); 
    orb.detect(img_2, keypoints_2);

    // -- Stpe 2: Calculate descriptors (feature vectors) 
    Mat descriptors_1, descriptors_2; 
    orb.compute(img_1, keypoints_1, descriptors_1); 
    orb.compute(img_2, keypoints_2, descriptors_2);

    //-- Step 3: Matching descriptor vectors with a brute force matcher 
    BFMatcher matcher(NORM_HAMMING); 
    std::vector<DMatch> mathces; 
    matcher.match(descriptors_1, descriptors_2, mathces); 
    // -- dwaw matches 
    Mat img_mathes; 
    drawMatches(img_1, keypoints_1, img_2, keypoints_2, mathces, img_mathes); 
    // -- show 
    imshow("Mathces", img_mathes);

    waitKey(0); 
    return 0; 
}

image

3. 参考资料

[1] Ethan Rublee, Vincent Rabaud, Kurt Konolige, Gary R. Bradski: ORB: An efficient alternative to SIFT or SURF. ICCV 2011: 2564-2571.

[2] 看ORB特征,一些理解和解释

[3] OpenCV Tutorials


3D视觉(四):ORB特征提取与匹配 3D视觉(四):ORB特征提取与匹配 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录3D视觉(四):ORB特征提取与匹配前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础 阅读详情

相关推荐

特征点的检测与匹配(ORB,SIFT,SURFT比较)[opencv-python]

特征点的检测与匹配(ORB,SIFT,SURFT比较)

weixin_43151193的博客 1万+

ORB特征

ORB(Oriented FAST and Rotated BRIEF)特征是一种常用的图像特征,其最大的优点是提取速度快,按业界的说法,ORB特征提取速度臂SURF快10倍,比SIFT快100倍。ORB特征由关键点和描述子两部分组成。他的关键点称为“Oriented FAST”,是一种改进的FAST角点。ORB提取速度快就得益于采用了FAST角点。它的描述子称为BRIEF(Binary Robust Independent Elementary Feature),是一种速度极快的二进制描述子。

qq_34493401的博客 6365

OpenCV中ORB特征点检测和匹配简单用法

ORB特征点检测和匹配

robinhjwy的博客 2万+

图像特征之ORB特征详解

1 特征点 特征点是图像中一些特别的地方。一般而言,人工设计的特征点(比如SIFT、SURF、ORB等)都具有如下的性质: 可重复性:即相同的“区域“可以在不同的图像中找到(比如将特征点比作一只猫,在图一和图二中都能找到这只猫)。 可区别性:即不同的”区域“有不同的表达。 高效率:在同一副图像中,特征点的数量应该远小于像素的数量。 本地性:特征仅与一小片图像区域相关。 特征点由关键点和描述子两部分组成。 关键点通常是指该特征点在图像中的位置,有的特征点还具有朝向、大小等信息。描述子通常是一个向

sky的博客 8561

Android端OpenCV的ORB特征点检测

不知道android调用opencv的可以看这里. 1、Java代码 private Mat mIntermediateMat; public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { mIntermediateMat = inputFrame.rgba(); Orb...

Czq_0768的博客 1165

《OpenCV3学习笔记》3.3 :SIFT、SURF、ORB特征点检测与匹配

一、特征点检测算法 SIFT Scale Invariant Feature Transform,尺度不变特征变换。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。 SIFT算法主要有以下几个步骤: 高斯差分金字塔的构建 使用组和层的结构构建了一个具有线性关系的金字塔(尺度空间),这样可以在连续的高斯核尺度上查找图像的特征点;另外,它使用一阶的高斯差分来近似...

try_again_later的博客 1万+

特征点的检测(一):ORB特征点检测

特征点的检测(一):ORB特征点检测 前言 ORB 特征点是在 FAST 特征点和 BRIEF 特征描述子的基础上添加了尺度和方向的描述,首先讲解ORB特征点原理,然后用代码实现特征点提取 ORB特征点 摘自论文:(自己敲实在太费时费力啦) [1]徐宽. 融合IMU信息的双目视觉SLAM研究[D].哈尔滨工业大学,2018. 1、FAST特征点 2、BREIF特征描述子 3、ORB特征 代...

weixin_44264994的博客 1825

翻译 | ORB: An efficient alternative to SIFT or SURF(ORB:对SIFT或SURF的一种有效选择)

博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.youkuaiyun.com/u011344545 ORB:对SIFT或SURF的一种有效选择 ORB: an efficient alternative to SIFT or SURF 译者:Michael Beechan(陈兵) 重庆理工大学 Ethan Rublee Vi...

尘世冰封的专栏 5323

ORB特征点检测算法

角点是图像中灰度变化在两个方向上都比较剧烈的点。与边缘(只有一个方向变化剧烈)或平坦区域(灰度变化很小)不同,角点具有方向性和稳定性。tips:像素梯度计算。

qq_44691564的博客 1743

ORB特征点检测:Android OpenCV实现

在onCameraFrame方法中,我们将相机捕获的帧传递给ORB特征检测器进行特征点检测,并通过Features2d.drawKeypoints方法将特征点绘制到帧上。你可以从OpenCV官方网站下载最新的Android SDK包,并按照官方文档中的指导将其集成到你的项目中。你可以从OpenCV官方网站下载最新的Android SDK包,并按照官方文档中的指导将其集成到你的项目中。在Android Studio中,打开你的项目,然后导航到项目的build.gradle文件(位于项目根目录下)。

EiyMobile的博客 207

Android OpenCV(五十五):ORB特征点检测

概念 特征点 特征点和角点都是图像中具有局部特征的点,但是特征点具有唯一描述像素点特征的描述子。特征点由关键点和描述子组成,例如ORB特征点,我们需要先使用FAST算法求取关键点,然后再计算BRIEF描述子,从而形成ORB特征点。所谓关键点,字面理解为图像内关键像素点,OpenCV中对应的类型为KeyPoint,里面包含像素点的坐标、直径、方向、强度等有用的信息;而描述子(descriptor),是用来唯一描述关键点的一串数字,通过描述子可以区分两个不同的关键点,也可以用来匹配相同的关键点,所以选择合适的方

AndroidKt 863

特征点检测和特征点匹配(ORB)

本文介绍了特征点检测的一些算法,然后基于OpenCV的ORB,实现了不同尺度和旋转的图像特征点匹配。

dragonylee的博客 4022

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载

以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。

weixin_61686291的博客 2537

ORB特征点检测和匹配

#include #include #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/highgui.hpp" #include #include #include using namespace cv; using namesp

luotong86的专栏 1764

USB3.0一致性测试方案

为各测试项目具体测试结果包括脉冲串突发时间、脉冲串重复时间、时钟周期以及眼图等完整USB3.0测试项目,工程师可以看到各项测试的具体结果方便观察。RIGOL 提供了一套完善的工具,包括数字示波器、专业的测试夹具以及全自动一致性测试软件,使得USB 3.0设备设计人员能够高效精确地进行信号捕捉、测试与分析。报告第二部分测试摘要,在此可以看到USB3.0测试所有测试项目,并且可以观看到测试是否正常,可以帮助工程师更好的判断测试结果。,以简化下载、存储以及对于多媒体的大量内容的共享。

2409_87378937的博客 2529

码农新宠大对决:GitHub Copilot、通义灵码和CodeLlama谁主沉浮?

本文对三款主流AI编程工具GitHub Copilot、通义灵码和CodeLlama进行了全面对比分析。GitHub Copilot在多语言支持和代码质量上表现突出;通义灵码在中文理解和阿里云生态集成方面优势明显;CodeLlama则以开源可定制见长。文章从代码生成、理解能力、多语言支持、使用体验等维度展开评测,并结合实际案例说明不同开发者群体的适用选择。建议新手可优先考虑通义灵码,经验开发者适合GitHub Copilot,而有定制需求的企业团队则可选择CodeLlama。随着AI技术发展,这些工具将持续

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 675

SIFT、SURF、ORB特征点检测与匹配

一、特征点检测算法 1、SIFT Scale Invariant Feature Transform,尺度不变特征变换。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。 SIFT算法主要有以下几个步骤: 高斯差分金字塔的构建 使用组和层的结构构建了一个具有线性关系的金字塔(尺度空间),这样可以在连续的高斯核尺度上查找图像的特征点;另外,它使用一阶的高斯差分来近似高斯的...

努力努力努力 2317

3D 韩系风格漫剧人设 | GPT-Image2 人设生成【附完整提示词】

宁姚同款清冷剑系美人,极致小巧鹅蛋脸,下颌线紧致纤细流畅,下巴小巧精致收窄,小脸衬得五官格外舒展,韩式水光肌,面部精细水光高光,鼻梁高光、鼻尖高光、面中苹果肌高光、唇珠高光,红棕色长卷发偏分大波浪,垂在一侧肩前,发量蓬松。发量丰厚蓬松有体积感,不贴头皮,几缕碎发自然垂落脸侧修饰脸型,长度过胸及背,发丝柔顺丝滑卷度自然,发尾自然垂落,身穿香槟色缎面挂脖长裙,挂脖设计无袖露肩露背,上半身围裹式荡领胸口垂褶,腰部堆褶收腰,修身直筒包臀裙长度到脚踝,缎面光泽感强垂坠感好,极简剪裁。纯白色背景,3D漫剧写实厚涂风。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 130

ORB特征点检测(面向C++)

opencv4中的ORB特征检测(面向C++)

qq_37834597的博客 1045

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7026

OCS2 入门教程(一)

OCS2 是专为切换系统优化控制(ptimalontrol forwitchedystems,OCS2)定制的 C++ 工具箱。该工具箱提供以下算法的高效实现:SLQ:连续时间域约束 DDPiLQR:离散时域约束 DDPSQP:基于 HPIPM 的多重打靶算法IPM: 基于非线性内点法的多重搜索算法SLP:基于 PIPG 的顺序线性规划算法OCS2 通过增强拉格朗日法(Augmented Lagrangian)或松弛障碍法(relaxed barrier methods)处理一般路径约束。

机器人控制与仿真应用 7836

ORB特征点检测与匹配

 ORB特征是目前最优秀的特征提取与匹配算法之一,下面具体讲解一下:   特征点的检测 图像的特征点可以简单的理解为图像中比较显著显著的点,如轮廓点,较暗区域中的亮点,较亮区域中的暗点等。ORB采用FAST(features from accelerated segment test)算法来检测特征点。这个定义基于特征点周围的图像灰度值,检测候选特征点周围一圈的像素值,如果候选点周

YUAN1125的专栏 3674

Python 爬虫实战:全国高校录取分数线数据爬取与院校对比分析

本文介绍了一个基于Python的高考志愿填报辅助系统,通过爬取掌上高考平台的全国高校录取分数线数据,构建本地数据库并实现智能分析。系统主要功能包括:1)使用requests+BeautifulSoup爬取院校基本信息和历年分省分科类录取线;2)通过SQLite实现数据持久化与增量更新;3)利用pyecharts生成分数线趋势图、院校对比雷达图等可视化图表;4)提供"冲稳保"三档智能选校推荐。技术栈涵盖网络爬虫、数据清洗、数据库管理和可视化分析,可为考生提供数据驱动的志愿填报决策支持。项目采用模块化设计,包含

u014481728的博客 238

特征点检测之ORB

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:以下是本篇文章正文内容,下面案例可供参考 一、orb简介 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、orb检测步骤 1.oFAST 代码如下(示例): 2.rBRIEF 代码如下(示例): 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数...

sprd_xiaoqi的博客 3004

uniapp - 实现PDA扫码枪RFID批量扫描读取示例代码,uni-app APP识别RFID(射频识别)结合硬件设备进行扫描,uniApp调用RFID读写通用方案适配各种设备+完整实例源码教程!

uni-app PDA 读取RFID,基于uniapp开发PDA扫码枪APP:实现RFID批量扫描读取功能,UniApp中的RFID实现,手持机 RFID插件(uni-app集成手持设备rfid插件),uniapp自动识别RFID,uni-app调RFID模块,uni-app RFID识别插件,uniapp读取rfid,uniapp手持设备扫描rfid,uniapp超高频rfid识别,rfid标签识别,uniapp调用RFID读写,uniapp rfid扫码枪,uniapp中如何使用rfid插件,打包上线后

🏆 前端领域优质创作者 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 避免图像去雾算法中让天空部分出现过增强的一种简易方法
下一篇: 距离度量
凌风探梅
博客等级 码龄19年 2575粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值