第9章图像分割_第1页
第9章图像分割_第2页
第9章图像分割_第3页
第9章图像分割_第4页
第9章图像分割_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第九章第九章 图像分割图像分割2图图像像9.1 概述3 分割出来的各区域对某种性质例如灰度,纹分割出来的各区域对某种性质例如灰度,纹理而言具有相似性,区域内部是连通的的且理而言具有相似性,区域内部是连通的的且没有过多小孔。没有过多小孔。 区域边界是明确的区域边界是明确的 相邻区域对分割所依据的性质有明显的差异相邻区域对分割所依据的性质有明显的差异图像分割图像分割4 边缘检测边缘检测 边缘跟踪边缘跟踪 阈值分割阈值分割 区域分割区域分割图像分割图像分割59.2 边缘检测边缘检测 基于边缘检测的图像分割方法的基本思路是先确定图像中的边缘像素,然后就可把它们连接在一起构成所需的边界。 图像边缘意味

2、着图像中一个区域的终结和另一图像边缘意味着图像中一个区域的终结和另一个区域的开始,图像中相邻区域之间的像素集合构成个区域的开始,图像中相邻区域之间的像素集合构成了图像的边缘。了图像的边缘。 进一步讲,图像的边缘是指图像灰度发生空间进一步讲,图像的边缘是指图像灰度发生空间突变的象素的集合。突变的象素的集合。 6 图像边缘有两个特征:方向和幅度图像边缘有两个特征:方向和幅度 沿边缘走向,像素值变化比较平缓;沿边缘走向,像素值变化比较平缓; 沿垂直于边缘的走向,像素值则变化比较剧烈。沿垂直于边缘的走向,像素值则变化比较剧烈。 一般常用一阶和二阶导数来描述和检测边缘。一般常用一阶和二阶导数来描述和检测

3、边缘。 综上所述,图像中的边缘可以通过对它们求导数综上所述,图像中的边缘可以通过对它们求导数来确定,而导数可利用微分算子来计算。对于数字图来确定,而导数可利用微分算子来计算。对于数字图像来说,通常是利用差分来近似微分。像来说,通常是利用差分来近似微分。 7梯度算子梯度算子 设f(x,y)为连续图像函数,Gx和Gy分别为x方向和y方向的梯度,且在点(x,y)处的梯度可以表示为一个矢量,并有其梯度定义: TyyxfxyxfyxfG),(),(),( 822| ),G( |yxGGyxyxGGyxG),(4max),()(8yxGGyxG)/arctan(),(yxGGyx对应于欧氏距离的梯度幅值对

4、应于欧氏距离的梯度幅值: 对应于街区距离的梯度幅值对应于街区距离的梯度幅值: 对应于棋盘距离的梯度幅值对应于棋盘距离的梯度幅值: 由梯度矢量幅角表示的梯度方向是函数由梯度矢量幅角表示的梯度方向是函数f(x,y)f(x,y)增加最快的增加最快的方向:方向: 9梯度算子梯度算子) 1,(), 1() 1, 1(),(),(jifjifjifjifjiG10梯度算子梯度算子789123369147(2)(2)(2)(2)xyGZZZZZZGZZZZZZ11梯度算子梯度算子)()()()(741963321987ZZZZZZGZZZZZZGyx12梯度算子梯度算子13拉普拉斯拉普拉斯算子算子22222

5、( , )( , )( , )f x yf x yf x yxy2( , )(1, )(1, )( ,1)( ,1) 4 ( , )f x yf xyf xyf x yf x yf x y 14拉普拉斯拉普拉斯算子算子15拉普拉斯拉普拉斯算子算子 16CannyCanny算子算子好的检测结果:对边缘的错误检测率要尽可能低,在检测出图像真实的边缘的同时要避免检测出现虚假的边缘。 好的边缘定位精度:标记出的边缘位置要和图像上真正边缘的位置尽量接近。 对同一边缘要有低的响应次数:有的算子会对一个边缘回产生多个响应。也就是说图像上本来只有一个边缘点的,可是检测出来就会出现多个边缘点。 克服噪声的影响1

6、7CannyCanny算子算子用高斯滤波器平滑图像计算滤波后图像梯度的幅值和方向对梯度幅值应用非极大值抑制,其过程为找处图像梯度中的局部极大值点,把其它非局部极大值点置零以得到得到细化的边缘用双阈值算法检测和连接边缘,使用两个阈值T1和T2(T1T2),T1用来找到每条线段,T2用来在这些线段的两个方向上延伸寻找边缘的断裂处,并连接这些边缘。18CannyCanny算子算子 19算子比较算子比较 Roberts算子算子:Roberts算子利用局部差分算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备能抑制噪声能力。该算子对具有陡峭边缘且含噪声少的图像效

7、果较好。 Sobel算子算子和Prewitt算子算子:都是对图像先做加权平滑处理,然后再做微分运算,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。虽然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度。20算子比较算子比较 Laplacian算子算子:是不依赖于边缘方向的二阶微分算子,对图像中的阶跃型边缘点定位准确,该算子对噪声非常敏感,它使噪声成分得到加强,这两个特性使得该算子容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘,同时抗噪声能力较差。 LOG算子:算子:克服了拉普拉斯算子抗噪声能力较差的缺点,但在抑制噪声的

8、同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到。21算子比较算子比较 Canny算子:基于最优化思想推导出的边缘检测算子,但实际效果不一定最优。该算子同样采用高斯函数对图像做平滑处理,具有较强的噪声抑制能力,但是会将一些高频边缘平滑掉,造成边缘丢失。Canny算子采用双阈值算法检测和连接边缘,采用的多尺度检测和方向性搜索比LOG算子好。22MATLAB图像处理工具箱利用edge函数来实现基于各种算子的边缘检测功能,这个函数寻找像素值剧烈变化的像素点。调用格式如下:g,t=edge(I,method,parameters)其中I是输入图像,method是边缘检测算子,p

9、arameters是设置的参数,输出g是二值图像矩阵,其值为1的像素构成边缘。参数t给出函数使用的阈值。23(1)使用Roberts算子的语法结构:BW = edge(I,roberts,thresh,options)其中thresh表示阈值,低于该阈值的像素值将被忽略。options默认为thinning,即边缘细化,当取值为nothinning,边缘不细化,可以对算法加速。24(2)使用Sobel算子的语法结构:BW = edge(I,sobel,thresh,direction,options)其中direction是指Sobel算子的检测方向,可取值horizontal、vertica

10、l或者both。(3)使用Prewitt算子的语法结构:BW = edge(I,prewitt,thresh,direction)25(4)使用Canny算子的语法结构:BW = edge(I,canny,thresh,sigma)其中thresh表示阈值,若为两个元素的向量,则第一个元素为低阈值,第二个元素为高阈值,若为一个元素,表示高阈值,低阈值为0.5*thresh。sigma是指高斯滤波器的标准差,缺省值为1,滤波器的大小根据sigma的值选择。26(5)使用Log算子的语法结构:BW = edge(I,log,thresh,sigma)其中sigma是指高斯滤波器的标准差,缺省值为2

11、,滤波器的大小为ceil(sigma*3)*2+1。27I=imread(rice.png);BW1=edge(I,roberts);%以自动阈值选择法对图像进行Roberts算子边缘检测BW1,thresh1=edge(I,roberts); %返回当前Roberts算子边缘检测的阈值disp(Roberts算子自动选择阈值为);disp(thresh1)figure;subplot(2,2,1);imshow(BW1);title(自动阈值的Roberts算子检测);BW2=edge(I,roberts,0.07); %以阈值为0.07对图像进行Roberts算子检测subplot(2,2

12、,2);imshow(BW2);title(阈值为0.07的Roberts算子检测);BW3=edge(I,roberts,0.05); %以阈值为0.05对图像进行Roberts算子检测subplot(2,2,3);imshow(BW3);title(阈值为0.05的Roberts算子检测);BW4=edge(I,roberts,0.03); %以阈值为0.03对图像进行Roberts算子检测subplot(2,2,4);imshow(BW4);title(阈值为0.03的Roberts算子检测);2829I=imread(rice.png);BW1=edge(I,roberts); BW2

13、=edge(I,sobel);BW3=edge(I,prewitt);BW4=edge(I,canny);BW5=edge(I,log);figure;subplot(2,3,1);imshow(I);title(原始图像);subplot(2,3,2);imshow(BW1);title(Roberts算子);subplot(2,3,3);imshow(BW2);title(Sobel算子);subplot(2,3,4);imshow(BW3);title(Prewitt算子);subplot(2,3,5);imshow(BW4);title(Canny算子);subplot(2,3,6);

14、imshow(BW5);title(Log算子边缘检测);30319.3 边缘跟踪边缘跟踪 数字图像可用各种方法检测出边缘点,但是由于噪声、光照不均等因素的影响,获得的边缘点有可能是不连续的,必须通过边界跟踪将它们转换为有用的边界信息,以便于后续处理。32基本步骤基本步骤从图像中一个边缘点出发,然后根据某种判别准则搜索下从图像中一个边缘点出发,然后根据某种判别准则搜索下一个边缘点以此跟踪出目标边界。一个边缘点以此跟踪出目标边界。 确定边界的起始搜索点,起始点的选择很关键,对某些图像,选择不同的起始点会导致不同的结果。 确定合适边界判别准则和搜索准则,判别准则用于判断一个点是不是边界点,搜索准则

15、则指导如何搜索下一个边缘点。 确定搜索的终止条件。33 是一种适用于黑白二值图像的图像分割方法。是一种适用于黑白二值图像的图像分割方法。算法步骤:算法步骤: (1)(1)在靠近边缘处任取一起始点,然后按照每次只前进在靠近边缘处任取一起始点,然后按照每次只前进一步,步距为一个象素的原则开始跟踪;一步,步距为一个象素的原则开始跟踪; (2)(2)当跟踪中的某步是由白区进入黑区时,以后各步向当跟踪中的某步是由白区进入黑区时,以后各步向左转,直到穿出黑区为止;左转,直到穿出黑区为止; (3)(3)当跟踪中的某步是由黑区进入白区时,以后各步向当跟踪中的某步是由黑区进入白区时,以后各步向右转,直到穿出白区

16、为止;右转,直到穿出白区为止; (4) (4)当围绕目标边界循环跟踪一周回到起点时,则所跟当围绕目标边界循环跟踪一周回到起点时,则所跟踪的轨迹便是目标的轮廓踪的轨迹便是目标的轮廓;否则否则,应继续按应继续按(2)(2)和和(3)(3)的原的原则进行跟踪。则进行跟踪。 9 9. .3 3.1.1轮廓跟踪法轮廓跟踪法34黑黑起点起点白白35黑黑起点起点白白黑黑白白起点起点(a)(a)某些小凸部分可能被漏掉某些小凸部分可能被漏掉 (b)(b)利用不同起点跟踪小凸部分利用不同起点跟踪小凸部分369 9. .3 3.2.2光栅跟踪法光栅跟踪法 光栅跟踪方法的基本思想是先利用检测准则确定光栅跟踪方法的基本

17、思想是先利用检测准则确定接受对象点,然后根据已有的接受对象点和跟踪准则接受对象点,然后根据已有的接受对象点和跟踪准则确定新的接受对象点,最后将所有标记为确定新的接受对象点,最后将所有标记为1且相邻的且相邻的对象点联接起来就得到了检测到的细曲线。对象点联接起来就得到了检测到的细曲线。 37 需要事先确定检测阈值需要事先确定检测阈值d、跟踪阈值跟踪阈值t,且要求且要求dt。 检测准则:对图像逐行扫描,将每一行中灰度值大检测准则:对图像逐行扫描,将每一行中灰度值大于或等于检测阈值于或等于检测阈值d的所有点(称为接受对象点)记的所有点(称为接受对象点)记为为1。 跟踪准则:设位于第跟踪准则:设位于第i

18、行的点行的点(i,j)为接受对象点,为接受对象点,如果位于第如果位于第i+1行上的相邻点行上的相邻点(i+1,j-1)、(i+1,j)和和(i+1,j+1)的灰度值大于或等于跟踪阈值的灰度值大于或等于跟踪阈值t,就将其,就将其确定为新的接受对象点,并记为确定为新的接受对象点,并记为1。 38光栅跟踪图像分割算法:光栅跟踪图像分割算法: (1 1)确定检测阈值)确定检测阈值d d和跟踪阈值和跟踪阈值t t,且要求,且要求dtdt; (2 2)用检测阈值)用检测阈值d d逐行对图像进行扫描,依次将灰逐行对图像进行扫描,依次将灰度值大于或等于检测阈值度值大于或等于检测阈值d d的点的位置记为的点的位

19、置记为1 1; (3 3)逐行扫描图像,若图像中的()逐行扫描图像,若图像中的(i,ji,j)点为接受)点为接受对象点,则在第对象点,则在第i+1i+1行上找点行上找点(i,j)(i,j)的邻点:的邻点: (i+1,j-1) (i+1,j-1)、(i+1,j)(i+1,j)、(i+1,j+1)(i+1,j+1)并将其中灰度值大于或等于跟踪阈值并将其中灰度值大于或等于跟踪阈值t t的邻点确定为新的邻点确定为新的接受对象点,将相应位置记为的接受对象点,将相应位置记为1 1; (4 4)重复步骤)重复步骤(3)(3),直至图像中除最末一行以外的,直至图像中除最末一行以外的所有接受点扫描完为止。所有接

20、受点扫描完为止。 39例例 d=7d=7,t=4t=4 (a)1解题过程和检测结果 (b b)直接取阈值为)直接取阈值为4 4时的检测结果时的检测结果 40bwtraceboundary函数的调用形式:B=bwtraceboundary(BW,p,fstep,conn,N,dir)其中参数P是一个指定行、列坐标的二元向量,表示图像边界上开始跟踪的那个点;fstep表示初始查找方向,用于寻找对象中与P相连的下一个像素,例如字符串“N”表示north,“NE”表示northeast,以指定方向,除了N、NE外还有其它几个方向;参数conn刻画了跟踪边界的连续性,数值可以是4或8,表示4连通或8连通

21、;N为图像边界的最大像素数目,缺省值为inf;dir表示跟踪边界的方向,顺时针方向为clockwise,逆时针方向为conterclockwise。B为返回值,表示边界像素的二维坐标。边界跟踪通常用bwtraceboundary函数和bwboundaries函数来处理。41BW = imread(blobs.png);%读取图像imshow(BW,);%显示图像s=size(BW);%获取图像尺寸for row = 2:55:s(1) for col=1:s(2) if BW(row,col), break; end endcontour = bwtraceboundary(BW,row, c

22、ol,W,8,50,counterclockwise ); %检测是否为边界 if(isempty(contour) hold on; plot(contour(:,2),contour(:,1),g,LineWidth,2);%画出边界 hold on; plot(col, row,gx,LineWidth,2);%画出边界起点 else hold on; plot(col, row,rx,LineWidth,2); endend4243另外一个用来进行边界跟踪的函数是bwboundaries,它的调用形式是:B = bwboundaries (BW, conn,options)B,L,N,

23、A = bwboundaries (BW,conn)其中参数options通过设置数值为holes 或noholes来决定是否需要内边界;L是返回的标签矩阵;N是返回的目标数;A是返回的邻接矩阵。44BW = imread(blobs.png);%读取图像B,L,N,A = bwboundaries(BW);%返回边界、标签矩阵、目标数imshow(BW); hold on;%显示图像for k=1:length(B), if(sum(A(k,:) boundary = Bk; plot(boundary(:,2), boundary(:,1), r,LineWidth,2);%显示目标边界

24、for l=find(A(:,k) boundary = Bl; plot(boundary(:,2), boundary(:,1), g,LineWidth,2);%显示内部边界 end endend4546Hough 变换变换 HoughHough变换可以用于将边缘像素连接起来得到边界曲线变换可以用于将边缘像素连接起来得到边界曲线优点在于受噪声和曲线间断的影响较小优点在于受噪声和曲线间断的影响较小在已知曲线形状的条件下,在已知曲线形状的条件下,HoughHough变换实际上是利用分散变换实际上是利用分散的边缘点进行曲线逼近,它也可看成是一种聚类分析技术的边缘点进行曲线逼近,它也可看成是一种

25、聚类分析技术 47Hough变换问题的提出n在找出边界点集之后,需要连接,形成完整的边界图形描述48Hough变换的基本思想n对于边界上的n个点的点集,找出共线的点集和直线方程。n对于任意两点的直线方程:y = ax + b,构造一个参数a,b的平面,从而有如下结论:a ab b49nxy平面上的任意一条直线y = ax + b ,对应在参数ab平面上都有一个点n过xy平面一个点(x,y)的所有直线,构成参数ab平面上的一条直线。a ab ba ab b50n如果点(x1,y1)与点(x2,y2)共线,那么这两点在参数ab平面上的直线将有一个交点a ab by yx x(x1,y1)(x2,y

26、2)a ab b51a ab bA A在参数ab平面上相交直线最多的点,对应的xy平面上的直线就是我们的解52Hough变换算法实现n由于垂直直线a,为无穷大,我们改用极坐标形式:xcos + ysin = = n参数平面为 , ,对应不是直线而是正弦曲线n使用交点累加器,或交点统计直方图,找出相交线段最多的参数空间的点n然后找出该点对应的xy平面的直线线段53 111sin1cossin222abaaawhereyxbaxyyxiicos space parameter - space -54在MATLAB图像处理工具箱中使用hough函数来检测图像中的直线,其常用调用形式为:H, thet

27、a, rho = hough(BW)H, theta, rho = hough(BW,PARAM1,VAL1,PARAM2,VAL2)其中BW是测试图像,PARAM1、VAL1、PARAM2和VAL2可以设置具体的参数和取值,55RGB = imread(gantrycrane.png);%读取图像I = rgb2gray(RGB); % 转换成灰度图像BW = edge(I,canny); % 用canny算子进行边缘检测H,T,R = hough(BW,Theta,44:0.5:46);%hough变换figure;subplot(2,1,1);imshow(RGB);title(gant

28、rycrane.png);subplot(2,1,2); %显示hough变换的变换矩阵imshow(imadjust(mat2gray(H),XData,T,YData,R,InitialMagnification,fit); title(Limited theta range Hough transform of gantrycrane.png);xlabel(theta), ylabel(rho);axis on, axis normal;colormap(hot);%颜色映射表5657Hough 变换变换 589.4 阈值分割阈值分割 在图像分割的众多方法中,阈值分割法是一种最基本和应

29、用最广泛的分割技术,其实质就是利用图像灰度直方图信息得到图像分割的阈值。59原始图像f(x,y)灰度阈值T阈值运算得二值图像g(x,y)1 , , 0 , f x yTg x yf x yT如果如果阈值选择直接影响分割效果,通常可以通过对灰度直方图阈值选择直接影响分割效果,通常可以通过对灰度直方图 的分析来确定它的值。的分析来确定它的值。606162 6364(1) 选择图像灰度的中值作为初始阈值Ti=T0。(2) 利用阈值Ti把图像分割成两部分区域, R1和R2,并计算其灰度均值101210,iiiiLTiii TiTLiii Tiininuunn1121()2iT(3) 计算新的阈值Ti+

30、1(4) 重复步骤2、3,直到Ti+1和Ti的值差别小于某个给定值6566 Matlab工具箱提供的graythresh函数是采用Ostu法求取阈值67I = imread(coins.png);subplot(121);imshow(I);title(原始图像);level = graythresh (I);BW = im2bw(I,level);subplot(122);imshow(BW);title(Otsu方法二值化图像);6869分水岭算法(watershed)是一种借鉴了形态学理论的分割方法,它将一幅图象看成为一个拓扑地形图,其中灰度值被认为是地形高度值。高灰度值对应着山峰,低灰

31、度值处对应着山谷。将水从任一处流下,它会朝地势底的地方流动,直到某一局部低洼处才停下来,这个低洼处被称为吸水盆地吸水盆地,最终所有的水会分聚在不同的吸水盆地, 吸水盆地之间的山脊被称为分水岭分水岭,水从分水岭流下时,它朝不同的吸水盆地流去的可能性是相等的。将这种想法应用于图像分割,就是要在灰度图像中找出不同的吸水盆找出不同的吸水盆地和分水岭,由这些不同的吸引盆地和分水岭组成的区域即为我们要分割的地和分水岭,由这些不同的吸引盆地和分水岭组成的区域即为我们要分割的目标目标。70 7172 73分水岭算法可以用图像工具箱中的watershed函数来实现,调用格式为:L=watershed(f)其中f

32、为输入图像,L为输出标记矩阵,元素为整数值,第一个积水盆被标记为1,第二个积水盆被标记为2,依次类推。分水岭被标记为0。74clear;I=imread(rice.png);subplot(221);imshow(I);title(原始图像);I=double(I);hv=fspecial(prewitt);hh=hv.;%计算梯度图gv=abs(imfilter(I,hv,replicate);gh=abs(imfilter(I,hh,replicate);g=sqrt(gv.2+gh.2); %计算距离函数subplot(222);L=watershed(g);wr=L=0;imshow(

33、wr);title(分水岭);I(wr)=255;subplot(223);imshow(uint8(I);title(分割结果);rm=imregionalmin(g); %取出梯度图中局部极小值点subplot(224);imshow(rm);title(局部极小值);7576 77clear;I=imread(rice.png);subplot(221);imshow(I);%原始图像xlabel(原始图像)%计算梯度图I=double(I);hv=fspecial(prewitt);hh=hv.;gv=abs(imfilter(I,hv,replicate);gh=abs(imfilt

34、er(I,hh,replicate);g=sqrt(gv.2+gh.2);%计算距离函数df=bwdist(I);%计算外部约束L=watershed(df);em=L=0;im=imextendedmax(I,20);% 计算内部约束subplot(222);imshow(im);xlabel(内部约束)g2=imimposemin(g,im|em);%重构梯度图subplot(223);imshow(g2);xlabel(梯度图)% watershed算法分割L2=watershed(g2);wr2=L2=0;subplot(224);I(wr2)=255;imshow(uint8(I);

35、xlabel(分割结果)7879阈值分割法由于没有或很少考虑空间关系,使多阈值选择受到限制区域分割方法可以弥补这点不足,它利用的是图像的空间性质,该方法认为分割出来的属于同一区域的像素应具有相似的性质,其概念是相当直观的。传统的区域分割算法有区域增长法和区域分裂合并法。该类方法在没有先验知识可以利用时,对含有复杂场景或自然景物等先验知识不足的图像进行分割, 可以取得较好的性能。9.5 区域分割区域分割 80区域生长法主要考虑象素及其空间邻域象素之间的区域生长法主要考虑象素及其空间邻域象素之间的关系关系开始时确定一个或多个象素点作为种子,然后按某种相似性准则增长区域,逐步生成具有某种均匀性的空间

36、区域,将相邻的具有相似性质的象素或区域归并从而逐步增长区域,直至没有可以归并的点或其它小区域为止。区域内象素的相似性度量可以包括平均灰度值、纹理、颜色等信息。 81选择合适的种子点确定相似性准则(生长准则)确定生长停止条件 例:找出图像中的亮目标相似准则相似准则:每一步所接收的邻近点的灰度级与每一步所接收的邻近点的灰度级与先前目标的先前目标的平均平均灰灰度级度级相差相差2 2。 选种子点选种子点3333382279846855m = 9m = 9平均值平均值m3333382279846855生长生长3333382279846855停止停止m =(3m =(3* *8+9)/48+9)/4 = =8.258.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论