【读点论文】Adaptive degraded document image binarization,真难复现,流程有点复杂

Adaptive degraded document image binarization

Abstract

  • 本文介绍了一种新的自适应方法,用于对退化文档进行二值化和增强。所提出的方法不需要用户进行任何参数调整,并且可以处理由于阴影、不均匀照明、低对比度、大信号相关噪声、污点和应变而发生的退化。我们遵循几个不同的步骤:使用低通维纳滤波器的预处理程序、前景区域的粗略估计、通过插入相邻背景强度来计算背景表面、通过将计算出的背景表面与原始图像相结合并结合图像上采样来进行阈值处理,最后是后处理步骤,以提高文本区域的质量并保持笔划连通性。经过大量实验,我们的方法在众多退化文档图像上表现出优于四 (4) 种知名技术的性能。

  • 论文地址:Adaptive degraded document image binarization - ScienceDirect

  • 这篇论文提出了一种新的自适应方法,用于退化文档图像的二值化和增强,特别适用于处理由于阴影、非均匀照明、低对比度、大信号依赖性噪声、污渍和拉伸等问题导致的退化图像。文档图像二值化是文档图像分析和理解系统中的初始步骤,用于区分文本区域和背景区域。处理退化文档图像时,传统方法往往无法有效应对各种退化因素。方法

    • 预处理:使用低通Wiener滤波器去除噪声。使用一个低通Wiener滤波器来去除图像中的噪声。Wiener滤波是一种基于局部统计的滤波方法,它可以根据局部的背景信息来优化滤波效果。

    • 前景区域估计:通过阈值分割等方法初步估计文本区域。使用简单的阈值分割或其他方法来得到一个大致的前景区域,即可能包含文本的区域。

    • 背景表面计算:通过插值周围背景像素的强度来计算整个图像的背景表面。这一步骤的目的是为了得到一个平滑的背景模型,从而能够更好地从背景中分离出文本。

    • 阈值分割:进行阈值分割。结合计算出的背景表面和原始图像来进行最终的二值化处理。这个过程会根据原始图像与背景表面之间的差异来确定阈值。如果原始图像中的某个像素与其背景表面的差异超过了某个阈值,则认为这个像素属于文本区域。

    • 后处理:改善文本区域的质量并保持笔画连通性。在二值化之后,为了进一步提高文本区域的质量以及保持笔画的连贯性,会对二值化的结果进行后处理。主要包括:

      • 背景去噪:使用一个缩小(shrink)滤波器来去除背景中的噪声点。
      • 填充缺口:使用一个膨胀(swell)滤波器来填充可能存在的文本断裂、空隙或孔洞。
      • 笔画质量改善:进一步应用膨胀滤波器来改善字符笔画的质量。

Introduction

  • 文档图像二值化(阈值选择)是指将灰度图像转换为二进制图像。 这是大多数文档图像分析和理解系统的初始步骤。通常,它将文本区域与背景区域区分开来,因此它被用作文本定位技术。二值化在文档处理中起着关键作用,因为它的性能对后续字符分割和识别的成功程度影响很大。在处理质量下降的文档图像时,二值化并非易事。质量下降经常出现,可能由于多种原因而发生,这些原因包括采集源类型和环境条件。质量下降影响的示例可能包括由于强度不均匀、阴影、污迹、污点和低对比度而导致的背景强度变化。

  • 一般而言,处理文档图像二值化的方法要么是全局方法,要么是局部方法。在全局方法中,阈值选择会导致整个图像只有一个阈值。全局阈值 在前景和背景分离良好的情况下具有良好的性能。然而,文档图像经常会受到退化的影响,从而削弱这种分离的保证。与全局方法不同,在局部(自适应)阈值技术 中,局部区域信息可以指导每个像素的阈值。这些技术已广泛应用于文档图像分析,因为它们在从因退化而包含空间不均匀灰度的图像中提取字符笔划方面具有更好的性能

  • 虽然拥有一种能够正确保留所有必要文本信息的二值化技术至关重要,但同样重要的是自动应用该技术,而无需用户在每次应用时调整一组参数。考虑到以上所有因素,本文提出了一种新颖的局部自适应阈值方案,该方案可对质量较差和质量下降的文档进行二值化和增强,以定位有意义的文本信息,而无需任何参数调整。该方案由五个基本步骤组成。

  • 第一步是使用低通维纳滤波器进行去噪程序。我们使用基于局部统计的自适应维纳方法。在第二步中,我们使用前景区域的第一个粗略估计。接下来,作为第三步,我们通过将相邻背景强度插入上一步得出的前景区域来计算图像的背景表面。在第四步中,我们通过结合计算出的背景表面和原始图像的信息进行最终的二值化。 如果原始图像与计算出的背景之间的距离超过阈值,则定位文本区域。此阈值适应背景表面的灰度值,以便即使在非常暗的背景区域中也能保留文本信息。在最后一步中,我们进行后处理以消除噪音,提高文本区域的质量并保持笔划连通性。所提出的方法已使用各种退化图像文档进行了广泛测试,并且与四 (4) 种众所周知的技术相比表现出色。

  • 本文的结构如下。第 2 节简要回顾了最新技术,特别强调了我们在实验中使用的局部自适应方法,以便进行比较。第 3 节详细描述了我们的方法,而第 4 节讨论了我们的实验结果。最后,第 5 节得出结论。

Related work

  • 在文献中,二值化既可以全局执行,也可以局部执行。对于全局方法(全局阈值),使用单个计算阈值将图像像素分类为对象或背景类 ,而对于局部方法(自适应阈值),局部区域信息指导每个像素的阈值 。 大多数图像二值化算法依赖于统计方法,而不考虑文档图像的特殊性质。然而,已经开发了一些文档导向的二值化技术 。对于文档图像二值化,全局阈值方法是不够的,因为文档图像通常会退化并且质量较差,包括阴影、不均匀照明、低对比度、大信号相关噪声、污点和应变。关于局部方法,已经对地图图像进行了 11 种流行的局部阈值算法的目标导向性能评估 Goal-directed evaluation of binarization methods。根据这项评估,对于缓慢变化的背景,局部算法效果很好。 然而,由于背景复杂,似乎没有一种方法可以调整为适用于所有图像的一组操作参数。此外,局部算法依赖于笔划宽度。参考文献 [Survey over image thresholding techniques and quantitative performance evaluation] 介绍了最近对四十 (40) 种全局和局部图像二值化方法的详尽调查。进行定量性能评估后,发现局部方法表现更好。然而,该评估仅考虑了因噪声和模糊而质量下降的文本文档图像。

  • 下面,我们回顾了三 (3) 种被认为是当前最先进的局部二值化算法。 这些算法已用于比较和评估我们的方法。Niblack 提出了一种算法,通过在图像上移动一个矩形窗口来计算像素阈值。窗口中心像素的阈值 T 是使用窗口中灰度值的平均值 m 和方差 s 计算的

    • T = m + k s T=m+ks T=m+ks

    • 其中 k 是一个常数,设置为 −0.2。k 的值用于确定整个印刷对象边界中有多少部分被视为给定对象的一部分。此方法可以在靠近对象的区域中有效地将对象与背景区分开来。只要窗口覆盖至少 1-2 个字符,结果对窗口大小就不太敏感。但是,背景中存在的噪声在最终的二进制图像中仍然占主导地位。因此,如果图像中的对象稀疏,则会留下大量背景噪声。

  • Sauvola 和 Pietikainen 提出了一种解决这个问题的方法,通过对文本和背景像素的灰度值添加一个假设(文本像素的灰度值接近 0,背景像素的灰度值接近 255),得出以下阈值公式:

    • T = m + ( 1 − k ( 1 − s / R ) ) , ( 2 ) T=m+(1-k(1-s/R)),(2) T=m+(1k(1s/R)),(2)

    • 其中 R 是标准差的动态,固定为 128,k 取正值(通常设置为 0.5)。此方法对文档图像的效果更好。

  • Kim 等人 提出了一种局部自适应阈值方法,其中将图像视为 3D 地形,其局部属性由水流模型表征。水流模型局部检测与低于邻近区域的区域相对应的山谷。深谷中充满了滴水,而平坦的平原地区则保持干燥。该方法的最后一步涉及在原始地形和充满水的地形之间的差异图像上应用全局阈值(例如 Otsu 的方法 )。该方法的一个缺点是该方法的两个关键参数的选择,即降雨量 w 和掩模尺寸参数 s,这是在实验基础上进行的。

Methodology

  • 图 1 说明了针对质量下降和质量较差的文档图像二值化、文本保存和增强所提出的方法,并在本节中进行了全面描述
    • 在这里插入图片描述

    • 图 1. 所提出的低质量历史文献文本保存方法的框图。

Pre-processing

  • 对于质量下降和质量较差的文档,灰度源图像的预处理阶段对于消除噪声区域、平滑背景纹理以及增强背景和文本区域之间的对比度至关重要。使用低通维纳滤波器 已被证明可以有效实现上述目标。维纳滤波器通常用于图像恢复的滤波理论。我们的预处理模块涉及一种自适应维纳方法,该方法基于从每个像素周围的局部邻域估计的统计数据。根据以下公式将灰度源图像 Is 转换为滤波后的灰度图像 I:

    • I ( x , y ) = μ + ( δ 2 − v 2 ) ( I s ( x , y ) − μ ) / δ 2 I(x,y)=\mu+(\delta^2-v^2)(I_s(x,y)-\mu)/\delta^2 I(x,y)=μ+(δ2v2)(Is(x,y)μ)/δ2

    • 其中 μ \mu μ 是局部均值, δ 2 \delta^2 δ2 是每个像素周围 3 × 3 邻域的方差, v 2 v^2 v2 是邻域中每个像素所有估计方差的平均值。 图 2 显示了将 3 × 3 维纳滤波器应用于文档图像的结果。

    • 在这里插入图片描述

    • 图 2. 图像预处理:(a)原始图像;(b)3×3 维纳滤波。

Rough estimation of foreground regions

  • 在此步骤中,我们获得前景(文本)区域的粗略估计。我们的目的是对前景和背景区域进行初步分割,这将为我们提供一组正确的前景像素。这将在后面的步骤中完善(第 3.3 节)。Sauvola 的自适应阈值方法 使用 k = 0.2,适用于这种情况(见图 3)。在此步骤中,我们处理图像 I (x, y) 以提取二值图像 S(x, y),其中 1 对应于粗略估计的前景区域。
    • 在这里插入图片描述

    • 图 3. 使用 Sauvola 方法的自适应阈值:(a)原始图像;(b)前景区域的粗略估计。

Background surface estimation

  • 在此阶段,我们计算图像 I (x, y) 的近似背景表面 B(x, y)。已经提出了一种类似的方法用于相机图像的二值化 。背景表面估计由 S(x, y) 图像的估值指导。对于图像 S(x, y) 中对应于 0 的像素,B(x, y) 处的对应值等于 I (x, y)。对于其余像素,B(x, y) 的估值通过相邻像素插值计算,如中所述

    • 在这里插入图片描述

    • 定义大小为 dx×dy 的插值窗口以覆盖至少两个图像字符。背景表面估计的一个例子如图4所示。

    • 在这里插入图片描述

    • 图 4. 背景表面估计:(a)图像 I;(b)背景表面 B。

Final thresholding

  • 在这里插入图片描述

  • 图 5. 文档图像直方图:(a)原始图像;(b)灰度直方图。

  • 在此步骤中,我们将计算出的背景表面 B(x, y) 与预处理后的图像 I (x, y) 相结合,进行最终阈值处理。如果预处理后的图像 I (x, y) 与计算出的背景 B(x, y) 之间的距离超过阈值 d,则文本区域被定位。我们建议阈值 d 必须根据背景表面 B(x, y) 的灰度值而变化,以便即使在非常暗的背景区域中也能保留文本信息。为此,我们提出了一个阈值 d,对于较暗的区域,该阈值 d 的值较小。最终的二进制图像 T (x, y) 由以下公式给出:

    • T ( x , y ) { 1  if  B ( x , y ) − I ( x , y ) > d ( B ( x , y ) ) 0  if  o t h e r w i s e T(x,y)\begin{cases} 1& \text{ if } B(x,y)-I(x,y)>d(B(x,y))\\ 0& \text{ if } otherwise \end{cases} T(x,y){10 if B(x,y)I(x,y)>d(B(x,y)) if otherwise

    • 文档图像的典型直方图(见图 5)有两个峰值。一个峰值对应于文本区域,另一个峰值对应于背景区域。我们可以注意到,我们考虑灰度值在 [0, 255] 范围内的文档图像,并且文本信息具有较低的灰度级分布。前景和背景之间的平均距离可以通过以下公式计算:

    • δ = ∑ x ∑ y ( B ( x , y ) − I ( x , y ) ) ∑ x ∑ y S ( x , y ) \delta=\frac{\sum_x\sum_y(B(x,y)-I(x,y))}{\sum_x\sum_yS(x,y)} δ=xyS(x,y)xy(B(x,y)I(x,y))

  • 对于光照均匀的文档图像,文本像素和背景像素之间的最小阈值 d 可以定义为 q · ,其中 q 是加权参数。将 q 的值固定为 0.8,我们实现了字符主体的完全保留,从而获得了成功的 OCR 结果 。对于质量下降和质量较差的文档中出现的低对比度区域,我们需要较小的阈值 d 值。为此,我们首先计算与图像 S 的文本区域相对应的背景表面 B 的平均背景值 b,表示为

    • b = ∑ x ∑ y ( B ( x , y ) ) ( 1 − I ( x , y ) ) ∑ x ∑ y ( 1 − I ( x , y ) ) , ( 7 ) b=\frac{\sum_x\sum_y(B(x,y))(1-I(x,y))}{\sum_x\sum_y(1-I(x,y))},(7) b=xy(1I(x,y))xy(B(x,y))(1I(x,y)),(7)
  • 我们要求,当背景值较高(大于公式 (7) 中的平均背景值 b)时,阈值等于值 q ⋅ δ q · \delta qδ,当背景值较低(小于 p1 · b)时,阈值等于 p 2 ⋅ q ⋅ δ p_2 · q · \delta p2qδ,其中 p1、p2 ∈ [0, 1]。为了模拟这一要求,我们使用以下逻辑 S 型函数,该函数对背景的大值和小值表现出所需的饱和行为,如图 6 所示:

    • 在这里插入图片描述
  • 经过实验,针对文档图像退化和质量较差的情况,我们建议以下参数值:q = 0.6,p1 = 0.5,p2 = 0.8。

    • 在这里插入图片描述

    • 图 6. 函数 d(B(x, y))。

Upsampling

  • 为了获得更高质量的二值图像,我们在上一步中采用了一种高效的上采样技术。 在可用的图像上采样技术中,双三次插值是最常用的技术,可以提供令人满意的结果 。它通过源图像中最近对应像素周围 16 个像素的平均值来估计目标图像中某个像素的值。通过将公式 (5) 替换为以下公式,可以将用于图像上采样的双三次插值合并到我们的算法中:

    • T ( x ′ , y ′ ) { 1  if  B ( x , y ) − I u ( x ′ , y ′ ) > d ( B ( x , y ) ) 0  if  o t h e r w i s e T(x',y')\begin{cases} 1& \text{ if } B(x,y)-I_u(x',y')>d(B(x,y))\\ 0& \text{ if } otherwise \end{cases} T(x,y){10 if B(x,y)Iu(x,y)>d(B(x,y)) if otherwise

    • 其中 T (x’ , y’ ) 是大小为原始灰度图像大小 M 倍的二值图像,x = (int)x’ /M,y = (int)y’ /M,Iu 由下式给出:

    • 在这里插入图片描述

    • 其中 F() 计算如下:

    • 在这里插入图片描述

    • 其中 a = (x’ /M) − x,b = (y’ /M) − y。在大多数情况下,双倍大小的二进制图像(M = 2)足以获得更好的质量结果。

Post-processing

  • 在最后一步中,我们对生成的二值图像进行后处理,以消除噪声、提高文本区域的质量并通过移除孤立像素和填充可能的断点、间隙或孔洞来保持笔画的连通性。下面是后处理算法的详细分步描述,该算法包括连续应用收缩和膨胀过滤 。

    • 步骤 1:使用收缩过滤器去除背景中的噪声。扫描整个二值图像并检查每个前景像素。如果 Psh 是滑动 n×n 窗口中的背景像素数,该窗口以前景像素为中心像素,则如果 Psh > ksh,则该像素变为背景,其中 ksh 可以通过实验定义
    • 步骤 2:使用膨胀滤波器填充前景中可能出现的断点、间隙或空洞。扫描整个二值图像并检查每个背景像素。如果 Psw 是滑动 n×n 窗口中的前景像素数,该窗口以背景像素 (x, y) 为中心像素,xa, ya 是 n×n 窗口中所有前景像素的平均值,则如果 Psw > ksw 且 |x − xa| < dx 和 |y − ya| < dy,则该像素变为前景。使用后两个条件是为了防止字符笔画粗细增加,因为我们只检查均匀分布的前景像素中的背景像素
    • 步骤 3:扩展上述条件,进一步应用膨胀滤波器,用于提高字符笔画的质量。扫描整个二值图像并检查每个背景像素。如果 Psw1 是滑动 n×n 窗口中的前景像素数,该窗口以背景像素为中心像素,则如果 Psw1 > ksw1,则该像素变为前景
  • 此步骤中使用的所有参数都取决于平均字符高度 l h l_h lh,该高度是使用连通分量分析估算的。形成连通分量的高度直方图,并选择最大峰值作为平均字符高度。在对代表性训练集进行实验后,我们建议后处理阶段的参数值如下: n = 0.15 l h 、 k s h = 0.9 n 2 、 k s w = 0.05 n 2 、 d x = d y = 0.25 n 、 k s w 1 = 0.35 n 2 n=0.15l_h、k_{sh}=0.9n^2、k_{sw} = 0.05n^2、dx = dy = 0.25n、k_{sw1} = 0.35n^2 n=0.15lhksh=0.9n2ksw=0.05n2dx=dy=0.25nksw1=0.35n2。图 7 给出了后处理步骤后得到的二值图像的示例。

    • 在这里插入图片描述

    • 图 7. 后处理阶段:(a)最终阈值处理后得到的二值图像;(b)后处理步骤 1 后得到的图像;(c)后处理步骤 2 后得到的图像;(d)后处理步骤 3 后得到的图像。

Experimental results

  • 历史手写文档、旧报纸和质量较差的现代文档。所有图像的分辨率、笔画大小、照明对比度、背景复杂度和噪声水平各不相同。历史手写文档选自国会图书馆在线数据库 、西奈山基金会藏品 、博德利图书馆 以及私人收藏。所有历史手写文档图像质量都很差,有阴影、照明不均匀、污迹和应变。在其中一些文档中,墨水渗透过页面,背面的字符变得可见并干扰正面的字符。用于测试的示例历史手写文档如图 8 所示。

    • 在这里插入图片描述

    • 图 8. 用于测试的手写历史文献示例。

  • 旧报纸图像来自国会图书馆在线数据库 ,存在与历史文档类似的问题。此外,由于旧的印刷基质质量或油墨扩散,旧报纸图像有额外的噪点。用于测试的旧报纸文档示例如图 9 所示。质量较差的现代文档来自 MediaTeam Oulu 文档数据库 以及最近扫描的书籍和杂志。所有现代文档的质量都下降了,难以区分文本和背景区域。

    • 在这里插入图片描述

    • 图 9. 用于测试的旧报纸示例

  • 我们将我们的算法的性能与四 (4) 种众所周知的二值化技术进行了比较。我们评估了以下方法:Otsu 的全局阈值方法 、Niblack 的自适应阈值方法 、Sauvola 等人的自适应方法 、Kim 等人的自适应方法 以及我们提出的自适应方法。Niblack 的方法已使用 60×60 的窗口实现,以便在所有测试样本中覆盖至少 1-2 个字符。k 的值(参见等式 (1))设置为 -0.2。Sauvola 等人的方法也已使用 60×60 的窗口实现。关于 k 的值(参见等式 (2)),它设置为 0.5。在 Kim 等人的方法中,为水流模型选择的参数为:w=20 和 s=3。上述二值化算法所使用的所有参数均已由相应算法的作者在实验中提出,作为大多数文档案例的最佳参数

  • 根据视觉标准,所提出的算法在图像质量和有意义的文本信息保存方面优于所有经过测试的算法。示例结果如图 10-12 所示。 在彻底检查我们的实验结果后,可以总结出以下重要观察结果:

    • Otsu 的全局阈值技术对于表现出局部方差问题的退化文档并不令人满意。

    • 在 Niblack 的方法中,生成的二值图像通常会受到大量背景噪声的影响,尤其是在没有文本的区域。

    • Sauvola 等人的方法解决了 Niblack 方法中出现的背景噪声问题,但在许多情况下字符变得非常细长和破碎。

    • 尽管 Kim 等人的方法在大多数测试案例中表现良好,但我们也观察到生成的图像中存在大量噪音,并且字符变得破碎的情况。

    • 与所有其他方法相比,所提出的方法具有更优异的性能,即使文档非常嘈杂且质量严重下降,也能表现良好。

    • 在这里插入图片描述

    • 图 10. 打字文档图像的二值化:(a)原始图像;(b)Otsu 方法 ;(c)Niblack 方法 ;(d)Sauvola 等人的方法 ;(e)Kim 等人的方法 ;(f)本文提出的方法。

    • 在这里插入图片描述

    • 图 11. 历史手写文档图像的二值化:(a)原始图像;(b)Otsu 的方法 ;(c)Niblack 的方法 ;(d)Sauvola 等人的方法 ;(e)Kim 等人的方法 ;(f)提出的方法。

    • 在这里插入图片描述

    • 图 12. 历史手写文档图像的二值化:(a) 原始图像;(b) Otsu 的方法 ;© Niblack 的方法 ;(d) Sauvola 等人的方法 ;(e) Kim 等人的方法 ;(f) 提出的方法。

  • 还进行了另一项实验来量化所提出的二值化方法的效率。我们比较了著名的 OCR 引擎 ABBYY FineReader 6 获得的结果,使用 Otsu 、Niblack 、Sauvola 等人 、Kim 等人 的二值化结果和所提出的方法作为输入图像。表 1 显示了应用几种二值化方案后的 OCR 结果的代表性示例。

    • 在这里插入图片描述
  • 为了量化 OCR 结果质量,我们计算了五 (5) 幅代表性退化图像的正确文本(基本事实)和结果文本之间的 Levenshtein 距离 。 表 2 显示,所提出的二值化技术的应用在最终 OCR 结果方面表现出最佳性能。总体结果表明,通过使用所提出的方法,与其他方法相比,我们实现了至少 37% 的改进。

    • 在这里插入图片描述

Conclusions

  • 在本文中,我们提出了一种新颖的局部自适应方法,用于对退化文档进行二值化和增强。所提出的方法不需要用户进行任何参数调整,并且可以处理由于阴影、不均匀照明、低对比度、大信号相关噪声、拖影和应变而发生的退化。我们遵循几个不同的步骤:使用低通维纳滤波器的预处理程序、前景区域的粗略估计、通过插入相邻背景强度进行背景表面计算、通过将计算出的背景表面与原始图像相结合进行阈值处理,同时结合图像上采样,最后进行后处理步骤,以提高文本区域的质量并保持笔划连通性。经过大量实验,我们的方法在大量退化文档图像上,使用视觉标准和定量测量,与四 (4) 种众所周知的技术相比,表现出卓越的性能。进一步的研究将集中在网络上低分辨率图像和视频的二值化所带来的挑战。
  • 自适应性强:该方法能够自动适应不同类型的退化,无需人工调整参数。
  • 处理多种退化:能够处理阴影、非均匀照明、低对比度等多种退化情况。
  • 文本质量改善:通过后处理步骤改善文本区域的质量,保持笔画连通性。
  • 计算复杂度:文中并未详细讨论算法的计算复杂度,但考虑到涉及插值、阈值分割等操作,计算开销可能较大。
  • 泛化能力:虽然在多种退化文档图像上表现出色,但对于极端退化情况的泛化能力未做详细评估。
  • 实时性:在实际应用中,特别是在需要实时处理大量文档的情况下,算法的计算效率至关重要。
  • 参数调整:尽管文中提到该方法不需要用户调整参数,但在实际部署时,可能需要根据具体应用场景进行微调。
    *:文中并未详细讨论算法的计算复杂度,但考虑到涉及插值、阈值分割等操作,计算开销可能较大。
  • 泛化能力:虽然在多种退化文档图像上表现出色,但对于极端退化情况的泛化能力未做详细评估。
  • 实时性:在实际应用中,特别是在需要实时处理大量文档的情况下,算法的计算效率至关重要。
  • 参数调整:尽管文中提到该方法不需要用户调整参数,但在实际部署时,可能需要根据具体应用场景进行微调。
  • 扩展性:考虑到文档图像的多样性和复杂性,该方法是否能够轻松扩展以适应更多类型的退化和不同格式的文档,值得进一步探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值