图像边缘检测算法的比较与实现

lknhh

贡献于2015-04-18

字数:0 关键词: 图形/图像处理

李娅娅,李志洁,郑海旭,等:图像边缘检测算法的比较与实现 2010,31 (9) 1971 0 引 言 边缘检测方法的优劣直接影响着图像特征提取及其它 后续处理,是图像预处理中的关键。边缘是指其周围像素灰 度发生阶跃变化或屋顶状变化的那些像素的集合,图像的大 部分信息都存在于图像的边缘中,主要表现为图像局部特征 的不连续性,是图像灰度变化比较剧烈的地方。在一幅图像 中,边缘有方向和幅度两个特性。沿边缘走向的灰度变化平 缓,而垂直于边缘走向的灰度变化剧烈。边缘检测是对灰度 变化的度量与定位,灰度变化的显著程度可以通过导数来度 量,即函数导数能够反映图像灰度变化的显著程度,因此边 缘检测的一个基本思想就是通过求一阶导数的局部极大值, 二阶导数的过零点来体现出来的[1-2]。利用梯度最大值提取边 缘点的这种思想产生了许多经典的边缘检测方法如 [3-8]:Sobel 算法、Log 算法、Canny 算法等。本文主要针对这 3 种常用的 边缘检测方法分析它们各自的算法性能和特点。 1 边缘检测原理 1.1 基于一阶导数的边缘检测 梯度是函数变化的一种度量,是图像对应二维函数的一 阶导数。而一幅图像可以看作是图像强度连续导数的取样点 数组。梯度是一阶导数的二维等价式,可定义为向量 , = = / / (1) 有两个重要的性质和梯度有关,一是向量 G(x,y) 的方向 就是函数 f(x,y)增大时的最大变化率方向(如式(2)所示);二是 梯度的幅值(如式(3)所示)。 , = 2+ 2 (2) , = arctan / (3) 对于数字图像,偏导数可用差分来近似,则边缘往往在差 分值最大处,最小处或过零点发生。 = +1, , = , +1 , (4) 在计算梯度时,计算空间同一位置处(x,y)的真实偏导数是 至关重要的。而采用上面公式计算的梯度近似值并不位于同 一位置。所以常常使用 2× 2 的一阶差分模板来计算位于内插 点[x+1/2,y+1/2]的x方向和y方向偏导数,此时Gx 和Gy 可表示为 = 1 1 1 1 = 1 1 1 1 1.2 基于二阶导数的边缘检测 以上介绍的计算一阶导数的方法,把一阶导数大于阈值 收稿日期:2009-07-24;修订日期:2009-09-25。 基金项目:大连民族学院博士启动基金项目 (20086205)。 作者简介:李娅娅 (1986-),女,研究方向为图像处理; +通讯作者:李志洁 (1978-),女,博士,讲师,研究方向为图像处理、智能算法等; 郑海旭 (1964-),男,硕士,副教授,研究方向为智能算法; 王存睿 (1980-),男,硕士,讲师,研究方向为计算复杂性。 E-mail:lizhijie@dlnu.edu.cn 图像边缘检测算法的比较与实现 李娅娅, 李志洁+, 郑海旭, 王存睿 (大连民族学院 计算机科学与工程学院,辽宁 大连 116600) 摘 要:边缘检测的目的是标识数字图像中灰度变化明显的点,而导函数正好能反映图像灰度变化的显著程度,因而许多 方法利用导数来检测边缘。针对典型的基于导数的边缘检测算法 Sobel、Log 和 Canny,在分析其算法思想和流程的基础上, 利用MATLAB对这 3 种算法进行了仿真实验,分析了各自的性能和算法特点,比较边缘检测效果并给出了各自的适用范围。 关键词:图像处理; 边缘检测; 模板; 卷积; 非极大抑制 中图法分类号:TP18 文献标识码:A 文章编号:1000-7024 (2010) 09-1971-05 Comparison and implementation of image edge detection algorithm LI Ya-ya, LI Zhi-jie+, ZHENG Hai-xu, WANG Cun-rui (School of Computer Science and Engineering, Dalian Nationalities University, Dalian 116600, China) Abstract:The purpose of edge detection is to mark the image points that change significantly in intensity. Since derivative could reflect the significant degree of image intensity changes, derivative is used to solve the problem of edge detection in many researched. Three typical edge detection algorithms based on derivatives (Sobel, Log, Canny) are analyzed thoroughly in aspects of idea and flow. Ex- periments are performed using MATLAB to evaluate these edge detection algorithms. The performance results are analyzed and compared with the scope of application respectively. Key words:image processing; edge detection; template; convolution; non-maximum suppression 多媒体技术 计算机工程与设计 Computer Engineering and Design 1972 2010,31 (9) 计算机工程与设计 Computer Engineering and Design 的点作为边界点的方法,有可能会导致检测出的边缘点过 多,数据存储量比较大。一种在理论上更有效的方法是求梯 度局部最大值对应的点,并认为它们是边缘点。这种去除了 一阶导数中的非局部最大值的方法,可以检测出更精确的边 缘,一阶导数的局部最大值对应着二阶导数的零交叉点。这 样,通过找图像灰度的二阶导数的零交叉点就能较好地找到 精确边缘点。从图 1 可以看出,图像灰度二阶导数的过零点 对应边缘点。 2 Sobel 算法 2.1 算法原理 Sobel算法是基于一阶导数的边缘检测,通过逼近导数来 找边缘,其边缘点存在于图像梯度最大值处。Sobel 算子中用 到了两个卷积模板(一个水平算子,一个垂直算子)。 1 0 1 2 0 2 1 0 1 1 2 1 0 0 0 1 2 1 它是一种奇数大小(3× 3)模板下的全方向微分算子,对检 测点的上下左右进一步加权。Sobel 算子的思想是邻域的像 素对当前像素产生的影响不是等价的,所以距离不同的像素 具有不同的权值,对算子结果产生的影响也不同。我们用Sobel 来检测边缘的时候,先分别用上述的模板对图像进行卷积,得 到的是两个矩阵,在不考虑边界的情形下也是和原图像同样 大小的 bx, by,它们分别表示图像 a 中相同位置处的两个偏导 数。然后把 bx, by 对应位置两个数平方后相加得到一个新的 矩阵 b,b 表示图像 a 中各个像素的灰度的梯度值。最后通过 阈值处理和细化处理得到边缘图像。在阈值不为空的情况下, 边缘存在于梯度幅值大于阈值平方的点上。 2.2 算法流程 Sobel 算法的流程图如图 2 所示,其中的要点归纳如下: (1)用 1/8 乘 Sobel 算子来确定模板(水平和垂直算子),即 在水平方向和垂直方向上的梯度值; (2)利用上述的模板对当前图像a利用imfilter函数进行卷 积得到方向导数 bx, by; (3)对方向导数进行平方相加得到梯度幅值,然后通过阈 值化操作就能够确定出边缘点。 3 Log 算法 3.1 算法原理 Log 算法是基于二阶导数的边缘检测,这种方法是将高 斯平滑滤波器和拉普拉斯锐化滤波器结合了起来,先平滑掉 噪声,再进行边缘检测。它是对图像进行滤波和微分的过程, 是利用旋转对称的 Log 模板与图像做卷积,确定滤波器输出 的零交叉位置[7]。常用的 Log 算子是 5× 5 的模板,如下所示 2 4 4 4 2 4 0 8 0 4 4 8 24 8 4 4 0 8 0 4 2 4 4 4 2 Log 算法的特点是图像首先与高斯滤波器进行卷积,这 样在平滑图像的同时降低了噪声,孤立的点噪声和较小的结 构组织将被滤除。由于平滑会导致边缘的延伸,因此边缘检 测只考虑那些具有局部梯度最大值的点为边缘点。正确地选 用 Log 算子中的尺度参数 是很重要的。直观上说,大的 对 应于更大的平滑范围,它有利于抑制噪声,但不利于定位精 度; 值小时,边缘定位精度高,但边缘细节变化多,信噪比低。 因此应根据噪声水平和边缘定位精度的要求来决定 的值。 3.2 算法流程 Log 算法的流程图如图 3 所示,其中的要点归纳如下: (1)如果不用自定义的模板,则用 Log 算子(合理使用 )来 产生滤波算子 op; (2) 利用上述的滤波算子 op 对当前图像 a 利用 imfilter 函 数进行卷积得到二阶导数 b; (3)根据上述二阶导数以及确定出的阈值判断二阶导数零 交叉点并对应一阶导数的较大峰值,二阶导数的过零点初步 确定出边缘点; (4)由于上述检测出来的结果不一定是确定的零点,因此 需要用线性内插法在子像素分辨率水平上估计边缘的位置。 图 1 图像的二阶导数 原图: 一阶导数: 二阶导数: 图 2 Sobel 算法流程 结束 利用函数 im2double(a) 将读入的灰度图像 a 转化为双精度型 开始 初始化边缘 e = false (m, n) 用 op = fspecial('sobel') /8 来产生 sobel 卷积模板 使用两个有向算子对图像 a 进行卷积得到偏导数 bx = imfilter (a, x_mask,'replicate'); by = imfilter (a, y_mask,'replicate'); 用方向因子和偏导数计算梯度值 b = kx*bx. *bx + ky*by. *by isempty(thresh) 临界值 cutoff = scale*mean2(b) thresh = sqrt (cutoff); cutoff=thresh*thresh 根据梯度值和临界值的比较来确定边缘 e (r, c) = (b (r, c)>cutoff) true false 李娅娅,李志洁,郑海旭,等:图像边缘检测算法的比较与实现 2010,31 (9) 1973 4 Canny 算法 4.1 算法原理 Canny方法是基于一阶导数的边缘检测,采用一阶偏导的 有限差分来计算梯度的幅值和方向。Canny 算子是一个具有 滤波、增强和检测的多阶段的优化算子。在处理图像前,先利 用高斯平滑滤波器来平滑图像以除去噪声,然后算法经过一 个非极大值抑制的过程,最后采用两个阈值来连接边缘。 在 Canny 边缘检测算法中,用到了一个重要的双阈值技 术。由于只有一个阈值的时候,检测出来的边缘可能存在断 点。算法首先利用累计统计灰度直方图得到一个高阈值 high- Thresh,然后选取一个低阈值 lowThresh。如果图像信号的响 应大于高阈值,那么它一定是边缘;如果低于低阈值,那么它 一定不是边缘;如果在低阈值和高阈值之间,再检查它的 8 个 邻接像素有没有大于高阈值的边缘。 4.2 算法流程 Canny 算法的流程图如图 4 所示,其中的要点归纳如下: (1)用高斯滤波器平滑图像;取高斯函数 , , = 1 2 2 2+ 2 2 2 (5) (2)根据一阶偏导的有限差分来计算梯度的幅值和方向。 已经平滑后的图像梯度可以使用 2× 2 阶有限差分近似式来计 算 x 与 y 偏导数的两个阵列 , = = [ +1, , + +1, +1 , +1 ]/2 (6) = = [ , +1 , + +1, +1 +1, ]/2 (7) 由于对于数字图像,差分可以近似偏导数,而差分一般用 卷积模板进行计算。所以在本文中利用 2D 高斯滤波模板与 平滑后的图像 aSmooth 进行卷积得到 x, y 方向上的偏导数 ax, ay 是用 imfilter 函数来实现的。利用偏导数来计算梯度幅值 (mag)和方向( ) = 2+ 2 (8) = arctan * (9) mag 反映了图像的边缘强度,而使得 mag 取得局部最大 值的方向角 ,就反映了边缘的方向。在具体使用的时候还要 将梯度幅值进行归一化,得到一个全局的梯度幅值。 (3)对梯度幅值进行非极大抑制。仅仅得到全局的梯度并 不足以确定边缘,因此为精确定位边缘,必须保留局部梯度最 大的点,即抑制非极大值。Canny 算法首先遍历整个图像,若某 个像素的梯度幅值与其八邻域的像素点相比较不是最大的,那 么这个像素点就不是边缘点,可将该像素的边缘标志赋为 0。 否则认为该像素是边缘点。即只保留局部梯度幅值部变化最 大的点,这就是非极大值抑制的过程,它能产生细化的边缘。 (4)用双阈值算法连接边缘。双阈值法首先对非极大值抑 制图像作用双阈值 lowThresh 和 highThresh,得到两个阈值边 缘图像 1 和 2。然后,在 2 中把边缘连成轮廓,当达到轮廓线 的端点时,双阈值法就在 1 的 8 个邻接点的位置上搜索可以 图 3 Log 算法流程 用函数 im2double (a) 将读入的灰度图像 a 转化为双精度型 开始 初始化边缘 e = false (m, n) 用 fspecial 函数产生 Log 模板,fsize 是模板的尺寸,sigma 是滤波器的标准差 op =fspecial ('log', fsize, sigma); 将 Log 算子 op 与图像 a 做卷积,得到一个二阶导数 b b = imfilter (a, op, 'replicate') isempty (thresh) thresh = . 75*mean2 (abs (b)) 用 find 函数分别在不同方向上来查询二阶导数的零交叉点,如: [rx, cx] = find ( b (rr, cc) < 0 & b (rr, cc+1) > 0 & abs ( b (rr, cc) -b (rr, cc+1) ) > thresh ); 检测出边缘后赋值为 1:e ((rx+1) + cx*m) = 1; 利用线性内插法在水平上来查询出精确的零交叉点, 确定出真正的边缘:e (zero (zz)) = 1 开始 true false 图 4 Canny 算法流程 开始 用函数 im2double (a) 将读入的灰度图像 a 转化为双精度型 初始化边缘 e = false (m, n) 设定滤波器宽度 pw=1: 30; 计算滤波器的方差 ssq=sigma*sigma 用 find 函数计算滤波算子宽度 (要求查找的条件是应大于高斯消失门限) width = find (exp (- (pw. *pw) / (2*ssq)) >GaussianDieOff, 1, 'last') 定义一维高斯函数 gau 和二维高斯函数 dgau2D 用图像与高斯滤波器模板卷积计算平滑算子 aSmooth=imfilter (a, gau, 'conv', 'replicate'); aSmooth=imfilter (aSmooth, gau', 'conv', 'replicate'); 利用二维高斯函数与平滑算子卷积得到一阶方向偏导数 ax, ay. 如: ax = imfilter (aSmooth, dgau2D, 'conv', 'replicate') 计算梯度幅值 mag,并对幅值进行归一化 isempty (thresh) 用灰度直方图获得高阈值:首先统计像素的个数 counts=imhist (mag, 64) 用 find 函数中条件 cumsum (counts) >PercentOfPixelsNotEdges*m*n 确定高阈值 highThresh, 利用 lowThresh=0.4*highThresh 确定低阈值 对梯度幅值进行 NMS: 调用函数 cannyFindLocalMaxima (dir, ax, ay, mag) 得到梯度各个方向上的一阶导数的局部极大值点 idxLocalMax 通过 idxLocalMax (mag (idxLocalMax) >lowThresh) 确定低阈值边缘图,并用 (idxWeak) =1 表明是边缘 得到高阈值边缘图 idxStrong, 并用函数 bwselect 链接高阈值 边缘图,出现断点时,在低阈值边缘图中的 8 邻点域搜寻边缘点 使用 bwmorph (e, 'thin', 1) 对边缘图进一步细化,使之更清晰 结束 true false 手动输 入获取 阈值 1974 2010,31 (9) 计算机工程与设计 Computer Engineering and Design 连接到轮廓上的边缘点。这样算法不断在 1 中收集边缘,直 到最后将 2 的所有间隙连接起来成为一个连续的边缘为止。 5 3 种算法的比较 5.1 参数设置 由于在本文讨论的边缘检测算子的参数中,主要用到了 阈值 thresh 和高斯滤波标准差 ,它们的确定影响到了检测的 边缘结果,在 Canny 主要用了几组阈值,例如:如果 thresh= [0.06, 0.15];由于阈值过大,检测出来的部分边缘丢失。如果 thresh=[0.02, 0.05];由于阈值过小,检测出来的假边缘点比较 多。Canny 中,也可以在程序中通过统计灰度直方图来获取阈 值,检测的效果较好。在 Log 算子和 Canny 算子中很重要的 一个参数是高斯滤波标准差 。Log 算子用到高斯滤波标准 差 来产生滤波算子,本文中是选取 =2 来检测的,也可以变 换其它的值来比较检测结果。Canny 算子用到高斯滤波标准 差 来建立高斯函数,本文中选取的 =1,可以变换查看不同的 结果,通常来说 值小,检测出的边缘点比较集中;反之, 值 大,检测出的边缘点比较松散。 5.2 实验结果 基于上述思路,本文利用 MATLAB 对边缘检测领域这 3 种常用的检测算法进行了实验评估和比较。3 种边缘检测算 法的阈值参数设置参见表 1。根据不同的算法阈值设置有所 区别,为了充分比较算法的性能,并且保证客观公正,我们针 对同一个图片(参见图 5)分别设置了每一个算法低阈值、高阈 值和使得算法达到最佳效果的阈值。 从图 6 中Sobel算法的执行结果可以看出,算法检测的定 位不是很准确,即定位精度不高。由于 Sobel 在求梯度之前, 首先进行了加权平均,不仅能够检测图像边缘而且能进一步 抑制噪声的影响,但得到的边缘较宽。也就是说,Sobel 算子 存在边缘定位不准的缺点。虽然本文的 sobel 方法中用细化 因子 thinning,来使边缘适当变细,但是 Sobel 算子检测出的结 果不是很准确。 从图 6 中 Log 算法的执行结果可以看出,Log 算子检测出 的噪声点比较多,对噪声比较敏感。Log 算子有一个线性变化 条件:沿着平行于边缘的灰度变化是局部线性的。当这个条件 满足时候,Log 算子的性能比较好;而如果这个条件不满足,则 检测结果就不好。但是,对于一些小尺度边缘﹑边缘角落和 T 形边缘来说这些条件无法满足,所以效果就不好。另外,Log 算 子对噪声比较敏感,信噪比低,它检测出的是梯度图像具有局 部最大值和最小值的点,但实际上边缘只是那些梯度为局部最 大的点,所以说 Log 算子多算了一点,因此 Log 算子的抗噪性 比较差。 从图 6 中 Canny 算法的执行结果可以看出,算法检测出 的边缘图像较好,但是参数的选取很重要。如果阈值太小,检 测出的假边缘较多;反之,如果阈值太大,部分边缘丢失。 Canny算子是一种优化算子,它比较前两种算子能相对好的检 测出边缘,并符合一定的规则。由于它利用了双阈值法,非极 大抑制,灰度直方图,边缘定位更准确。虽然他的高斯空间系 数 和阈值某些程度上要人工获得,但是针对图像选择出比较 合适的参数,能够检测出抗噪性较强、定位准的边缘图。 综合比较图 6 中的 3 种算法检测结果可以得出以下结论, 相比 Sobel 算法和 Log 算法,Canny 算法检测出来的边缘效果 最好,其边缘具有连续性好,噪声小,定位准等优点。对检测 结果的比较总结在表 2 中。 6 结束语 边缘检测一直是图像处理中的研究热点。实现边缘检测 有很多不同的方法,本文主要针对图像边缘检测中常见的 3 种算法 Sobel, Log, Canny 进行分析和比较。从仿真结果来看, Sobel 算法采用加权滤波检测出来的边缘图像虽然抗噪性比 较好,但是出现间断点多、定位差、误检的缺点。Log 算法采用 二阶导数的零交叉点检测出来的边缘图像比Sobel算法好,但 是检测出的边缘连续性较差,尤其在图像比较复杂时,边缘图 像有许多短的边界和孤立点,使图像看起来很不清晰。Canny 算法采用非极大抑制和双阈值化技术来精确定位边缘图像, 与 Sobel 算法和 Log 算法相比,结果更准确更清晰。综合各种 因素来考虑,Canny 算法是比较理想的边缘检测算法。当然在 (a) Sobel-低阈值 (b) Sobel-高阈值 (c) Sobel-最佳阈值 (d) Log-低阈值 (e) Log-高阈值 (f) Log-最佳阈值 (g) Canny-低阈值 (h) Canny-高阈值 (i) Canny-最佳阈值 表 1 3 种边缘检测算法的阈值参数 算子 低阈值 高阈值 最佳阈值 Sobel Log Canny 0.06 0.002 [0.02, 0.05] 0.12 0.008 [0.06, 0.15] 0.08 0.004 [0.0375, 0.0938] 图 5 边缘检测原图 图 6 3 种边缘检测算法的结果比较 李娅娅,李志洁,郑海旭,等:图像边缘检测算法的比较与实现 2010,31 (9) 1975 图像边缘检测中,Canny 算法也不是最优的方法,边缘检测的 目标是能够更准确,更连续,更清晰的找到边缘点,这也是边 缘检测领域研究的主要方向。 参考文献: [1] Zhang QH, Gao S, Bui TD. Edge detection models [J]. Lecture Notes in Computer Science,2005,3656:133-140. [2] Lim DH. Robust edge detection in noisy images[J].Computa- tional Statistics & Data Analysis,2006,50(3):803-812. [3] 段瑞玲,李庆祥,李玉和.图像边缘检测方法研究综述[J].光学技 术,2005,31(3):415-419. [4] 马艳,张治辉.几种边缘检测算子的比较[J].工业自动化,2004 (1):54-56. [5] 刑军.基于Sobel算子数字图像的边缘检测[J].微机发展,2005, 15(9):48-52. [6] Abbasi TA, Abbasi MU. A novel FPGA-based architecture for Sobel edge detection operator[J].International Journal of Elec- tronics,2007,94(9):889-896. [7] Wang X. Laplacian operator-based edge detectors [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2007,29(5):886-890. [8] Zhang Y,Rockett PI.The Bayesian operating point of the canny edge detector [J]. IEEE Transactions on Image Processing, 2006,15(11):3409-3416. 表 2 3 种边缘检测算法特性比较 算子 特点 适用范围 Canny 以一阶导数确定边缘点、高定位精度、低误判率、抑制虚假边缘 高噪声图像 Sobel 采用加权滤波、边缘较宽、间断点较多 灰度渐变,低噪声图像 Log 利用旋转对称的 Log 模板与图像做卷积,确定滤波器输出的零交叉位置,能 检测出图像较细的边缘部分 噪声较低的图像 统块匹配法速度上提高了 4 倍以上,而且当图像尺寸越大的 时候,速度的优势就越明显。当图像尺寸达到 3707*1000 的时 候,传统的块匹配法所用的时间是无法忍受的,而基于小波的 图像拼接算法大大弥补了这一不足,提高了实用性。而且从 图 3 的拼接效果图可以看出本文的方法在融合过程中基本上 消除了拼缝,实现了相邻图像间的自然过渡,该结果说明了本 算法的可行性和适用性。 3 结束语 本文针对传统块匹配法的不足,即虽然拼接精度高,但是 速度过慢,提出了一种基于特征块与小波变换的图像拼接方 法,即首先对图像进行三次小波分解,在高频信号上利用边缘 阈值法提取特征块,在低频信号上进行搜索匹配从而在低频 信号上确定两幅图像的重叠位移。然后在原始图像上确定重 叠位移,最后在拼接时用渐入渐出的方法消除图像拼接的痕 迹。实验可以证明,该方法相比传统块匹配法速度有了很大 的提高,实用性更好。而且拼接的痕迹不明显,效果较好。但 是该算法适用于具有垂直与水平位移图像序列,而不适用于 具有较大旋转的图像序列,这是下一步工作需要解决的问题。 参考文献: [1] 毛晓冬.图像配准与拼接方法研究[D].西安:西安电子科技大 学,2006. [2] 刘严严,徐世伟,高文清,等.基于比值法图像拼接算法研究[J]. 光电技术应用,2007,22(6):60-61. [3] 胡社教,涂桂林,江萍.基于灰度相关图像拼接的改进算法[J].合 肥工业大学学报,2008,31(6):863-865. [4] 李佳佳,何小海,吴晓红.基于网格模板的最小欧式距离准则图 像自动拼接技术[J].成都信息工程学院学报,2007,22(1):81-82. [5] 滕凯风,张建秋,周柏杨.基于解析小波的平移鲁棒图像配准方 法[J].计算机工程,2009,35(1):180-182. [6] 庄军,李弼程,陈刚.一种有效的文本图像二值化方法[J].微计算 机信息,2005,21(8):56-57. [7] 侯舒维,郭宝龙.一种图像自动拼接的快速算法[J].计算机工程, 2005,31(15):70-72. [8] 吴铭,林锦国,梅雪.用于图像拼接的特征提取算法研究[J].计算 机工程与设计,2009,30(2):440-442. [9] 陈良,高成敏.基于小波的图像边界配准[J].计算机工程与应用, 2008,44(1):66-68. 图 3 庙会全景 (a)待拼接左图 (b) 待拼接右图 (c) 拼接后的图像 (上接第 1960 页)

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档