双边滤波器的原理及实现

西门子200 SMART编程实战:FOR-NEXT循环与跳转指令在电机控制中的应用 本文详细解析了西门子200 SMART PLC中FOR-NEXT循环与跳转指令在电机控制中的实战应用。通过星三角启动案例,展示了如何利用程序控制指令实现批量初始化、模式切换和多电机协调控制,提升工业自动化系统的效率和可靠性。 阅读详情

转载:http://blog.youkuaiyun.com/abcjennifer/article/details/7616663

双边滤波器是什么?

双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。可以与其相比较的两个filter:高斯低通滤波器(http://en.wikipedia.org/wiki/Gaussian_filter)和α-截尾均值滤波器(去掉百分率为α的最小值和最大之后剩下像素的均值作为滤波器),后文中将结合公式做详细介绍。


双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,


权重系数w(i,j,k,l)取决于定义域核


和值域核

的乘积


同时考虑了空间域与值域的差别,而Gaussian Filter和α均值滤波分别只考虑了空间域和值域差别。


=======================================================================

双边滤波器的实现(MATLAB):function B = bfilter2(A,w,sigma)

CopyRight:

% Douglas R. Lanman, Brown University, September 2006.
% dlanman@brown.edu, http://mesh.brown.edu/dlanman


具体请见function B = bfltGray(A,w,sigma_d,sigma_r)函数说明。


[cpp]  view plain copy
  1. %简单地说:  
  2. %A为给定图像,归一化到[0,1]的矩阵  
  3. %W为双边滤波器(核)的边长/2  
  4. %定义域方差σd记为SIGMA(1),值域方差σr记为SIGMA(2)  
  5.   
  6. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  7. % Pre-process input and select appropriate filter.  
  8. function B = bfilter2(A,w,sigma)  
  9.   
  10. % Verify that the input image exists and is valid.  
  11. if ~exist('A','var') || isempty(A)  
  12.    error('Input image A is undefined or invalid.');  
  13. end  
  14. if ~isfloat(A) || ~sum([1,3] == size(A,3)) || ...  
  15.       min(A(:)) < 0 || max(A(:)) > 1  
  16.    error(['Input image A must be a double precision ',...  
  17.           'matrix of size NxMx1 or NxMx3 on the closed ',...  
  18.           'interval [0,1].']);        
  19. end  
  20.   
  21. % Verify bilateral filter window size.  
  22. if ~exist('w','var') || isempty(w) || ...  
  23.       numel(w) ~= 1 || w < 1  
  24.    w = 5;  
  25. end  
  26. w = ceil(w);  
  27.   
  28. % Verify bilateral filter standard deviations.  
  29. if ~exist('sigma','var') || isempty(sigma) || ...  
  30.       numel(sigma) ~= 2 || sigma(1) <= 0 || sigma(2) <= 0  
  31.    sigma = [3 0.1];  
  32. end  
  33.   
  34. % Apply either grayscale or color bilateral filtering.  
  35. if size(A,3) == 1  
  36.    B = bfltGray(A,w,sigma(1),sigma(2));  
  37. else  
  38.    B = bfltColor(A,w,sigma(1),sigma(2));  
  39. end  
  40.   
  41.   
  42. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  43. % Implements bilateral filtering for grayscale images.  
  44. function B = bfltGray(A,w,sigma_d,sigma_r)  
  45.   
  46. % Pre-compute Gaussian distance weights.  
  47. [X,Y] = meshgrid(-w:w,-w:w);  
  48. %创建核距离矩阵,e.g.  
  49. %  [x,y]=meshgrid(-1:1,-1:1)  
  50. %   
  51. % x =  
  52. %   
  53. %     -1     0     1  
  54. %     -1     0     1  
  55. %     -1     0     1  
  56. %   
  57. %   
  58. % y =  
  59. %   
  60. %     -1    -1    -1  
  61. %      0     0     0  
  62. %      1     1     1  
  63. %计算定义域核  
  64. G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));  
  65.   
  66. % Create waitbar.  
  67. h = waitbar(0,'Applying bilateral filter...');  
  68. set(h,'Name','Bilateral Filter Progress');  
  69.   
  70. % Apply bilateral filter.  
  71. %计算值域核H 并与定义域核G 乘积得到双边权重函数F  
  72. dim = size(A);  
  73. B = zeros(dim);  
  74. for i = 1:dim(1)  
  75.    for j = 1:dim(2)  
  76.         
  77.          % Extract local region.  
  78.          iMin = max(i-w,1);  
  79.          iMax = min(i+w,dim(1));  
  80.          jMin = max(j-w,1);  
  81.          jMax = min(j+w,dim(2));  
  82.          %定义当前核所作用的区域为(iMin:iMax,jMin:jMax)  
  83.          I = A(iMin:iMax,jMin:jMax);%提取该区域的源图像值赋给I  
  84.         
  85.          % Compute Gaussian intensity weights.  
  86.          H = exp(-(I-A(i,j)).^2/(2*sigma_r^2));  
  87.         
  88.          % Calculate bilateral filter response.  
  89.          F = H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);  
  90.          B(i,j) = sum(F(:).*I(:))/sum(F(:));  
  91.                  
  92.    end  
  93.    waitbar(i/dim(1));  
  94. end  
  95.   
  96. % Close waitbar.  
  97. close(h);  
  98.   
  99.   
  100. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
  101. % Implements bilateral filter for color images.  
  102. function B = bfltColor(A,w,sigma_d,sigma_r)  
  103.   
  104. % Convert input sRGB image to CIELab color space.  
  105. if exist('applycform','file')  
  106.    A = applycform(A,makecform('srgb2lab'));  
  107. else  
  108.    A = colorspace('Lab<-RGB',A);  
  109. end  
  110.   
  111. % Pre-compute Gaussian domain weights.  
  112. [X,Y] = meshgrid(-w:w,-w:w);  
  113. G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));  
  114.   
  115. % Rescale range variance (using maximum luminance).  
  116. sigma_r = 100*sigma_r;  
  117.   
  118. % Create waitbar.  
  119. h = waitbar(0,'Applying bilateral filter...');  
  120. set(h,'Name','Bilateral Filter Progress');  
  121.   
  122. % Apply bilateral filter.  
  123. dim = size(A);  
  124. B = zeros(dim);  
  125. for i = 1:dim(1)  
  126.    for j = 1:dim(2)  
  127.         
  128.          % Extract local region.  
  129.          iMin = max(i-w,1);  
  130.          iMax = min(i+w,dim(1));  
  131.          jMin = max(j-w,1);  
  132.          jMax = min(j+w,dim(2));  
  133.          I = A(iMin:iMax,jMin:jMax,:);  
  134.         
  135.          % Compute Gaussian range weights.  
  136.          dL = I(:,:,1)-A(i,j,1);  
  137.          da = I(:,:,2)-A(i,j,2);  
  138.          db = I(:,:,3)-A(i,j,3);  
  139.          H = exp(-(dL.^2+da.^2+db.^2)/(2*sigma_r^2));  
  140.         
  141.          % Calculate bilateral filter response.  
  142.          F = H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);  
  143.          norm_F = sum(F(:));  
  144.          B(i,j,1) = sum(sum(F.*I(:,:,1)))/norm_F;  
  145.          B(i,j,2) = sum(sum(F.*I(:,:,2)))/norm_F;  
  146.          B(i,j,3) = sum(sum(F.*I(:,:,3)))/norm_F;  
  147.                   
  148.    end  
  149.    waitbar(i/dim(1));  
  150. end  
  151.   
  152. % Convert filtered image back to sRGB color space.  
  153. if exist('applycform','file')  
  154.    B = applycform(B,makecform('lab2srgb'));  
  155. else    
  156.    B = colorspace('RGB<-Lab',B);  
  157. end  
  158.   
  159. % Close waitbar.  
  160. close(h);  


调用方法:

[cpp]  view plain copy
  1. I=imread('einstein.jpg');  
  2. I=double(I)/255;  
  3.   
  4. w     = 5;       % bilateral filter half-width  
  5. sigma = [3 0.1]; % bilateral filter standard deviations  
  6.   
  7. I1=bfilter2(I,w,sigma);  
  8.   
  9. subplot(1,2,1);  
  10. imshow(I);  
  11. subplot(1,2,2);  
  12. imshow(I1)  

实验结果:

西门子PLC编程实例解析:从基础指令到工程调试全攻略 在工业自动化控制领域,PLC(可编程逻辑控制器)是设备运行的核心。掌握其编程方法,不仅需要理解基础指令的运作机制,更要懂得如何将逻辑控制与物理设备协同。梯形图、定时器、计数器等基本元素,构成了可靠控制逻辑的基石;而模拟量信号的处理与通讯协议的配置,则让PLC能无缝连接整个生产系统。实例化的学习方式,能够帮助工程师快速建立“程序-设备-工艺”的映射思维,无论是电机启停、星三角切换,还是复杂流程的状态机控制,都能从实际案例中获得可直接落地的范式。博途(TIA Portal)等现代工程平台的应用,进一步降低了项目 阅读详情

相关推荐

西门子S7-1200 PLC一拖三恒压供水系统的PID控制与KTP1000PN触摸屏程序详解

内容概要:本文详细介绍了基于西门子S7-1200 PLC的一拖三恒压供水系统的设计与实现。系统采用PID控制算法,通过PLC的PID_Compact指令块进行压力调节,并利用KTP1000PN触摸屏进行参数设定和状态监控。文中涵盖了硬件配置、PID参数整定、水泵轮换逻辑、触摸屏界面设计、变频器通信配置等多个方面的内容。特别强调了调试过程中遇到的实际问题及其解决方案,如PID参数优化、压力波动控制、变频器通信配置等。 适合人群:从事自动化控制系统设计、调试的技术人员,尤其是熟悉西门子PLC和触摸屏编程的工程师。 使用场景及目标:适用于工业现场的恒压供水系统设计与实施,旨在提高系统的稳定性和可靠性,减少维护成本。具体目标包括:实现精确的压力控制、合理的水泵轮换机制、高效的故障处理逻辑等。 其他说明:文中提供了详细的代码片段和调试技巧,帮助读者更好地理解和应用相关技术。此外,还分享了一些实际项目中遇到的问题及解决方案,有助于读者规避常见的陷阱。

电动机正反转、星-三角减压启动控制#西门子S7-1200#PLC

图2 星-三角形减压启动梯形图。图1 电动机正反转梯形图。

2401_85617072的博客 8888

ABB变频器ACS510一拖三原理图

ABB 变频器 ACS510 一拖三 原理图。。。。。

西门子S7-1200小练手之电机星三角启动

应用场景 电机的星三角启动是防止大功率电机在启动时产生的大电流,烧毁电网。 控制要求 按下I0.0启动按钮,电机启动,启动时控制电源的接触器和Y形接法的接触器电源3s后,Y形接触器断开,再1s后三角接法接触器接通。按下I0.1停止按钮,电机停止运行。 梯形图程序 SCL程序 变量声明 在Main【OB1】主程序中调用FC 感谢观看! ...

qq_18477479的博客 1万+

TIA博途中使用SCL语言实现选择排序算法并封装成FC全局库.docx

TIA博途中使用SCL语言实现选择排序算法并封装成FC全局库

西门子PLC案 博途 STEP7 程序案例:多台电机启动(星三角).zip

西门子PLC案例程序 博途 STEP7 程序案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

PLC中ST编程的星角降压启动

按下启动按钮后,KM1和KM2得电,延时2秒后,KM2失电,KM3得电,按下停止所有输出失电;按下停止按钮后的状态;

qq_30569341的博客 1487

TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法(含报警+滤波功能).docx

TIA博途_基于SCL语言制作模拟量输入输出全局库的具体方法(含报警+滤波功能)

语言电机星三角启动_经典的三相异步电机星三角降压启动原理简介及PLC编程

三相电机星三角降压启动原理图如下图所示:控制原理讲解:所谓的星三角启动电路,就是电机绕组的接法,当启动时接触器KM1和KM2得电,电机绕组为Y接,当延时一定时间后,KM1和KM3接触器得电,电机绕组为△接。如下图所示:电机绕组为Y接电机绕组为△接控制回路简要说明:当按下启动按钮SB2后,接触器KM1和KM2闭和,使电机按Y接降压启动运转。同时时间继电器通电开始计时。如下图所示当时间继电器经过预定时...

weixin_33087827的博客 4035

如何在TIA 博途中计算终端设备(例如水泵)的运行时间(附FB库文件)?.docx

如何在TIA 博途中计算终端设备(例如水泵)的运行时间(附FB库文件)?

电气控制原理图纸ACS1软起动一拖三原理图

电气控制原理图纸ACS1软起动一拖三原理图

PLC自动化控制项目实战教程(2026最新版)

本文详细介绍了PLC自动化项目的完整实施流程和核心案例编程。主要内容包括:1)项目实施四阶段流程(需求分析、硬件选型、程序调试、系统集成);2)基础准备工作(硬件选型指南、TIA Portal软件安装、PLC连接方法);3)两个经典控制案例(电动机星三角启动和交通信号灯控制)的具体编程实现,包含IO分配表、梯形图程序和调试步骤。文章采用结构化说明方式,为PLC项目开发提供了一套标准化的实施框架和技术参考,特别适合工业自动化领域的工程技术人员学习和参考。

2530

TouchSocket TcpService:构建高性能Tcp服务的终极利器

/ 接收到的数据data");// 回复客户端await ((ITcpSessionClient)client).SendAsync("服务端已收到消息!");// 继续执行后续插件TouchSocket的TCPService以极简的API、强大的扩展性和卓越的性能,重新定义了.NET TCP服务的开发体验。无论是物联网平台还是金融级实时通信系统,TCPService均能提供可靠的基础设施支持。立即探索示例项目,开启你的高性能服务开发之旅!扩展阅读如何实现WebSocket服务?

若汝棋茗 的博客 1461

手把手教你用带参数的FC编写西门子PLC标准功能块:从起保停到星三角启动

本文详细介绍了如何在西门子PLC中使用带参数的FC(函数)功能块进行高级编程,涵盖从基础的电动机起保停控制到复杂的星三角降压启动实现。通过实战案例和代码示例,帮助工程师掌握FC功能块的设计与调用技巧,提升工业自动化项目的开发效率和代码可维护性。

weixin_31774841的博客 359

从硬件到软件:TSMaster报文过滤全链路配置指南(含同星设备适配)

本文详细介绍了TSMaster平台下CAN/LIN/FlexRay总线的报文过滤全链路配置指南,特别针对同星TC1016等硬件的兼容性进行实战演示。从硬件层预过滤到软件层可编程过滤,提供五维过滤体系构建方法,帮助工程师提升车载诊断与总线分析效率。重点解析混合总线过滤策略优化及诊断场景下的特殊过滤方案。

tensorflowjs6的博客 401

传导案例:某医疗仪器传导骚扰整改案例

紫外线光疗仪是一种专业的医疗设备,主要用于治疗银屑病、白癜风等皮肤疾病。该设备采用物理治疗技术,通过特定波长的紫外线照射人体来达到治疗效果。自1984年窄谱中波紫外线(NB-UVB)应用于临床以来,该技术已成为治疗早期蕈样肉芽肿(MF)的有效方法之一。作为二类医疗器械,紫外线光疗仪必须符合严格的电磁兼容性(EMC)标准,这不仅关系到设备自身的稳定运行,更关乎患者的使用安全和治疗效果。紫外线光疗仪传导骚扰整改案例充分展示了系统性EMC设计的重要性。

m0_56451176的博客 340

PLC电动机正反转控制:互锁逻辑与调试实战指南

电动机正反转控制是PLC编程入门的关键实践,涉及硬件互锁、软件互锁、主回路换相、按钮信号处理和保护环节。其原理基于三相异步电动机相序交换实现转向改变,通过PLC梯形图固化逻辑判断,确保正反转接触器不同时吸合,避免短路事故。技术价值在于提升控制可靠性和灵活性,应用场景包括卷扬机、传送带等工业设备。本文以三菱FX和西门子S7-200 SMART为例,详解I/O分配、梯形图编写、调试排错及品牌移植要点,帮助读者掌握PLC控制核心技能。

weixin_33857230的博客 339

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 906

基于PLC的T68型镗床的电气控制系统的设计

随着社会不断发展,企业在竞争日益激烈的环境下,需要开发出价格更低廉、质量更优良的产品,能够短时间 满足市场需求变化。而传统的T68镗床因为其自动化低、控制性差,不再适应现代社会高度自动化的生产过程。所以 有必要对其原有的继电控制系统进行自动化改造。本文基于西门子S7-200型PLC电气控制技术对T68镗床继电控制系 统进行改造和模拟,利用T68型镗床的电气原理图,设计了PLC的I/O分配图、梯形图,编写S7-200控制程序,最后还 使用组态王进行模拟仿真。

weixin_112233的博客 1941

OsgEarth开发笔记(三):Osg3.6.3+OsgEarth3.1+vs2019x64开发环境搭建(下)

上一篇编译了proj6.2.0、gdal3.2.1,本篇继续。 OsgEarth的编译,是基于Osg和OsgEarth结合在一起的,先要编译Osg,然后编译OsgEarth。OsgEarth的依赖库较多,分为上、中、下三篇,然后单独有一篇如何将编译好的osgEarth集成到Qt中。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 4万+

C 语言多文件编程 : 大型程序的组织与管理

本文介绍了C语言多文件编程的核心概念与实践方法。主要内容包括:1. 多文件编程的必要性:解决单文件编程在大型项目中的维护和协作问题;2. 文件组织方式:头文件(.h)负责声明接口,源文件(.c)实现具体功能;3. 编译链接过程:分阶段编译和链接多个源文件;4. 头文件设计原则:包含接口声明、使用保护机制、保持自包含性;5. 模块化实践:通过示例展示学生信息管理系统的模块划分;6. 构建工具:介绍Makefile的编写和使用方法。文章还提供了创建静态库和动态库的指导,并强调了模块化设计、信息隐藏等软件工程原则

2503_91057718的博客 1946

西门子PLC电机控制程序设计:正反转、星三角与互锁调试指南

在工业自动化现场,电机控制是PLC应用中最基础也最高频的工程任务。理解三相异步电动机的启保停、正反转互锁、星三角降压启动等核心控制原理,是电气工程师和自动化从业者的必修课。PLC程序通过软件互锁与硬件互锁双重保护,可有效避免接触器同时吸合引发的短路风险;结合急停回路、热保护和接触器反馈校验,能够构建可靠的安全联锁体系。从继电器硬接线到PLC改造,从调试中的坑点到触摸屏监控扩展,本文以西门子S7-1200为例,梳理电机控制程序的完整设计思路,帮助工程人员在设备改造、课程设计与毕业设计中快速落地“能转”到“好用

weixin_29192365的博客 93

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2314

零基础可以学习PLC自动化吗?从哪里入手学习PLC自动化,自动化编程用到什么编程软件呢?凭良学校-西门子S7-200/SMART 200 PLC编程自动化应用培训

3) 我们会结合专业培训学校和工控公司两种不同教学模式的优点来培训学员,教学以实物实操实践为主,注重动手能力和实际操作效果。争取让学员用最短的时间来学习更多的知识,尽职尽责尽快教会学员掌握技术。数据运算、整数加法、整数减法、整数乘法、整数除法、自加/自减指令。S7-200与S7-200SMART M0DBUS通信。1)初中、高中、中专、大专、本科等各种学历毕业生。NPN、PNP的输入信号传感器与PLC之间的接线。西门子PLC软件的运用、上载、下载参数设置。西门子S7-200SMART基本指令的讲解。

a321885399的博客 1011

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
下一篇: SIFT算法详解
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值