武汉理工大学专业综合课设《图像频率域处理程序设计》_第1页
武汉理工大学专业综合课设《图像频率域处理程序设计》_第2页
武汉理工大学专业综合课设《图像频率域处理程序设计》_第3页
武汉理工大学专业综合课设《图像频率域处理程序设计》_第4页
武汉理工大学专业综合课设《图像频率域处理程序设计》_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉理工大学专业综合课程设计专业综合课程设计任务书学生姓名: 专业班级: 电信 1005 班 指导教师: 李达 工作单位: 信息工程学院 题 目:图像频率域处理程序设计初始条件:(1) 提供实验室机房及其matlab软件;(2) 数字图像处理的基本理论学习。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)掌握频率域处理的基本原理,利用matlab设计程序完成以下功能;(2)选择二幅大小不一的256级的灰度图像;(3)用频域方法计算它们的空间域的运算结果;(4)频域中需要利用周期延拓的方法计算空域中的相关结果,分析周期延拓的必要性;(5)对结果进行分析;(

2、6)要求阅读相关参考文献不少于5篇;(7)根据课程设计有关规范,按时、独立完成课程设计说明书。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 MATLAB简介11.1MATLAB的简介11.2应用21.3Matlab的特点21.4 MATLAB的优势32 图像频域处理的概述63 二维傅里叶变换73.1 二维连续傅里叶变换73.2 二维离散傅里叶变换83.3 二维离散傅里叶变换的性质83.4 周期延拓在卷积中的作用94 程序设计的基本步骤144

3、.1 检查图片格式144.2 用MATLAB转换成灰度图像164.3 程序设计175 运行结果及结果分析206 心得体会23参考文献24摘要图像的频域处理是指根据一定的图像模型,对图像频谱进行不同程度修改的技术。二维正交变换是图像处理中常用的变换,其特点是变换结果的能量分布向低频成份方向集中,图像的边缘、线条在高频成份上得到反映,因此正交变换在图像处理中得到广泛运用。傅里叶作为一种典型的正交变换,在数学上有比较成熟和快速的处理方法。卷积特性是傅里叶变换性质之一,由于它在通信系统和信号处理中的重要地位应用最广。在用频域方法进行卷积过程中尤其要注意傅里叶变换的周期性,注意周期延拓的重要作用,本次课

4、设将对此作详细的介绍。关键字:频域处理,二维傅里叶变换,卷积,周期延拓261 MATLAB简介1.1MATLAB的简介MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制

5、设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。1.2应用MATLAB 产品族可以用来进行以

6、下各种工作: 数值分析 数值和符号计算 工程与科学绘图 控制系统的设计与仿真 数字图像处理 数字信号处理 通讯系统设计与仿真 财务与金融工程 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。1.3Matlab的特点此高级语言可用于技术计算 此开发环境可对代码、文件和数据进行管理交互式工具可以按迭代的方式探查、设计及求解问题 数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等 二维和三维

7、图形函数可用于可视化数据 各种工具可用于构建自定义的图形用户界面 各种函数可将基于MATLAB的算法与外部应用程序和语言(如 C、C+、Fortran、Java、COM 以及 Microsoft Excel)集成1.4 MATLAB的优势(1)友好的工作平台和编程环境MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的

8、标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。(2)简单易用的程序语言Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C语言基础上的,因此语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的

9、书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。(3)强大的科学计算机数据处理能力MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C+ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的

10、复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。(4)出色的图形处理功能图形处理功能MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三

11、维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。(5)应用广泛的模块集合工具箱MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLA

12、B已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。(6)实用的程序接口和发布平台新版本的MATLAB可以利用MATLAB编译器和C/C+数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C+代码。允许用户编写可以和MAT

13、LAB进行交互的C或C+语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。(7)应用软件开发(包括用户界面)在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Exc

14、el和HDF5进行连接。图1.1 MATLAB操作界面2 图像频域处理的概述图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。如大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低;而对于地表属性变化剧烈的边缘区域在图像中是一片灰度变化剧烈的区域,对应的频率值较高。频域处理是指根据一定的图像模型,对图像频谱进行不同程度修改的技术,通常作如下假设:1)引起图像质量下降的噪声占频谱的高频段;2)图像边缘占高频段;3)图像主体或灰度缓变区域占低频段。基于这些假设,可以在频谱的各个频段进行有选择性的修改。为什么要在频率域研究图像增强 (1)可以利用频率成分和图

15、像外表之间的对应关系。一些在空间域表述困难的增强任务,在频率域中变得非常普通。(2)滤波在频率域更为直观,它可以解释空间域滤波的某些性质。 (3)可以在频率域指定滤波器,做反变换,然后在空间域使用结果滤波器作为空间域滤波器的指导。 (4)一旦通过频率域试验选择了空间滤波,通常实施都在空间域进行。3 二维傅里叶变换由于图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度。傅立叶变换在实际中的物理意义,设f是一个能量有限的模拟信号,则其傅立叶变换就表示f的谱。从纯粹的数学意义上看,傅立叶变换是将一个函数转换为一系列周期函数来处理的。从物理效果看,傅立叶变换是将图像从空间域转换到频

16、率域,其逆变换是将图像从频率域转换到空间域。换句话说,傅立叶变换的物理意义是将图像的灰度分布函数变换为图像的频率分布函数,傅立叶逆变换是将图像的频率分布函数变换为灰度分布函数。 3.1 二维连续傅里叶变换 如果二维连续函数f(x,y)满足狄里赫莱条件,则将有下面的傅立叶变换对存在:与一维傅立叶变换类似,二维傅立叶变换的傅立叶谱和相位谱为:3.2 二维离散傅里叶变换一个M×N大小的二维函数f(x,y),其离散傅立叶变换对为 :在数字图像处理中,图像一般取样为方形矩阵,即N×N,则其傅立叶变换及其逆变换为 :3.3 二维离散傅里叶变换的性质 离散傅里叶变换主要有以下性质:1.

17、平移性质 2. 分配律 3. 尺度变换(缩放) 4. 旋转性 5. 周期性和共轭对称性 6. 平均值 7. 可分性 8. 卷积 9. 相关性。这里主要简述周期性,卷积相关内容会在下一节中介绍。离散傅里叶变换有如下周期性性质:反变换也是周期性的:频谱也是关于原点对称的:这些等式的有效性是建立在二维离散傅里叶变换公式基础上的。图像的周期性在图像处理中有非常重要的作用,下面会在卷积部分继续阐述周期性的相关内容。3.4 周期延拓在卷积中的作用基于卷积理论,频率域的乘法相当于空间域的卷积,反之亦然。当处理离散变量和傅里叶变换时,要记住不同函数所包含的周期性。虽然可能不太直观,但周期性是定义离散傅里叶变换

18、对时产生的数学副产品。周期性是处理操作的一部分,不应忽视。图3.1列举了周期性的重要性。图3.1 左边(ae):两个离散函数的卷积 右边(fj):相同函数的卷积,考虑DFT周期性的应用。图的左边一列是用下式的一维形式计算的卷积:在此详细地解释卷积运算的过程。为简化表示,简单的数字将代替那些表示函数长度和高度的通用符号。图3.1(a)和(b)是两个要进行卷积的函数。每个函数包含400个点。卷积的第一步是将一个函数关于原点进行镜像映射(倒转),在本例情况下,对第二个函数进行,在图3.1(c)中以h(-m)示出。下一步是将h(-m)滑过f(m)。这要增加一个常数x到h(-m),即变成h(x-m),如

19、图3.1(d)所示。注意只有一个置换值。在第一次遇到时这个简单步骤通常是引起混乱的根源。而这恰好是卷积计算的全部关键。换言之,为了执行卷积,倒转了一个函数,并将它滑过另一个函数。在每一个置换点(的每一个值)都要计算式的全部总和。这个总和不比在给定位移处f和h乘积的和更太。位移x的范围为h完全滑过f需要的所有值。图3.1(e)显示了h完全滑过f后的结果,并在x的每个点计算式。在此例中,为使h(x-m)完全滑过f,x值的范围是从0到799。这幅图是两个函数的卷积。要清楚地记住卷积中的变量是x.从上面介绍的卷积理论可知,由F(u)H(u)的傅里叶反变换能得到同样的准确结果。但是,从前面对周期性的讨论

20、又知离散傅里叶变换自动地将输入函数周期化。换言之,采用DFT允许在频率域进行卷积计算,但函数必须看做周期性的,且周期等于函数的长度。可以通过图3.1右边一列考察这种隐含的周期性。图3.1(f)同图3.1(a)一样,但同样的函数在两个方向上周期性地无限扩展(扩展部分用虚线表示)。从图3.1(g)到图3.1(i)同样应用该扩展。现在,可以通过将h(x-m)滑过f(m)进行卷积。如前面一样,变化x完成滑动。然而,h(x-m)的周期性扩展产生了图3.1左边的计算中所没有的值。例如,在图3.1(i)中,当x=0时,看到h(x-m)右侧第一个扩展周期的一部分进 入图3.1(f)中所示的f(m)(从原点开始

21、)的一部分。当h(x-m)向右滑动时,在f(m)中的那部分开始向右侧移出,但被h(x-m)左侧相同部分所取代。这引起卷积产生一个常量值,如图3.1(j)所示的0,100的一段.从100到4OO的一段是正确的,但周期性是周而复始的,这样就引起卷积函数尾部的一部分丢失,由图3.1(j)和图3.1(e)实线部分的比较可以看出这一点。在频率域,该过程需要计算图3.1(a)和(b)中函数的傅里叶变换。根据卷积理论,两个变换要相乘,再计算傅里叶反变换。结果包含40O个点的卷积,如图3.1(j)的实线部分所示。简单的解释表明当使用傅里叶变换得出卷积函数时,错误地处理周期性将得到错误的结论。结果,在开头有错误

22、数据,结尾将丢失数据。问题的解决办法很简单。假设f和h分别由A和B个点组成。对两个函数同时添加零,以使它们具有相同的周期,表示为P。这个过程产生扩展的或延拓的函数,如下所示:和可以看出,除非选择PA+B-1,否则卷积的独立周期将会混叠。已经在图3.1中看到了这种现象的结果,这通常归于缠绕误差。若P=A+B-1,周期便会邻接起来。若PA+B-1,周期将会是分隔开的,分隔的程度等于P与A+B-1的差。扩展后的卷积结果如图3.2所示。在这里,选择P=A+B-1(799),即可知卷积周期是相邻的。遵循与前面的解释相同的过程,得到如图3.2(e)所示的卷积函数。该结果的一个周期与图3.1(e)相同,是正

23、确的。这样,如果要在频率域计算卷积,应该:(1)得到两个扩展序列的傅里叶变换(每个序列有8OO个点);(2)将两个变换相乘;(3)计算傅里叶反变换。结果便得到正确的8OO个点的卷积函数,见图3.2(e)中周期加重的部分。图3.2(ae) 用扩展函数执行卷积的结果这些概念扩展到二维函数时遵循了相同的前提。假设有f(x,y)和h(x,y)两幅图像,大小分别为A×B和C×D。如同一维情况,这些行列必须假定在x方向上有相同的周期P,在y方向上有相同的周期Q。二维卷积的混叠可由选择如下周期避免:扩展f(x,y)和h(x,y)形成如下周期性序列:为了简化图例,假设f和h是方形的,且大小

24、相同,图3.3 对二维函数周期延拓的说明。(a)没有延拓执行二维卷积的结果;(b)合格的函数延拓;(c)正确的卷积结果。图3.3(a)显示了图像没有延拓时得到的滤波结果。这通常是由于没有对一幅输入图像进行延拓就进行傅里叶变换,然后又乘上同样大小的函数(也没有延拓),计算傅里叶反变换。结果就是与输入图像相同的大小为A×B的图像,如图3.3(a)左上象限所示。如同一维情况,图像前面边沿(阻影部分)由于周期性而引入了错误数据,而在尾部边沿将丢失数据。如图3.3(b)所示,通过对输入图像和函数进行合适的延拓,将得到正确的、大小为P×Q的过滤图像,如图4.38(c)所示。这幅图像在两

25、个坐标方向上是原始图像的两倍大小,有原始图像4倍数量的像素点。4 程序设计的基本步骤4.1 检查图片格式首先,在网上下载了一张图片名为“lena.jpg“的图片,如下图:图4.1 lena.jpg检查这张图片的格式,如图4.2所示:图 4.2 检查“lena.jpg”的格式由图所示,我们知道这张“lena.jpg”图片的格式“ColorType”是“truecolor”,与课设要求所需要的256级的灰度图像不符,所以需要进行转换,我将在下节进行转换。同时这张图片的“Width”是300,“Height”是300。同时本次课设需要两张灰度图像,于是我在网上又下载的另外一张图片,图片名为“gyy.

26、jpg”,如下图4.3:图4.3 gyy.jpg检查“gyy.jpg”这张图片文件格式,如图4.4所示:图4.4 检查“gyy.jpg”的格式由图可知,我们知道这张“gyy.jpg”这张图像的“ColorType”是“grayscale”,同时它的“Width”是300,“Height”是400,与第一张图片的大小不同,所以符合本课设的要求。4.2 用MATLAB转换成灰度图像由于第一张图片“lena.jpg”不符本次课设灰度图像的要求,所以需要进行转换,程序如下图:图 4.5 把“lena.jpg”转换成灰度图像程序图4.6 转换后的图像同时检查转换后图像的格式,发现图片格式已经变为灰度图像

27、,同时大小依然与图片“gyy.jpg”不同,所以完全符合本次课设需要的图片要求。4.3 程序设计MATLAB中提供的变换函数(1)fft2:用于计算二维快速傅立叶变换,语句格式:B=fft2(I,m,n)按指定的点数计算m,返回矩阵B的大小为m×n,不写默认为原图像大小。(2)ifft2:用于计算图像的二维傅立叶反变换,语法格式:B=ifft2(i)%直接卷积程序>> I1=imread('1.jpg');I2=imread('gyy.jpg');I5=conv2(I1,I2);figure(3);imshow(I5,);title(

28、9;直接函数卷积得到的图像 (陈云飞)')%正确的频域处理程序I1=imread('1.jpg');I2=imread('gyy.jpg');m1,n1=size(I1);m2,n2=size(I2);I1(m1+m2-1,n1+n2-1)=0;I2(m1+m2-1,n1+n2-1)=0;I3=ifft2(fft2(I1).*fft2(I2);I3=I3(1:m1+m2-1,1:n1+n2-1);I3=real(I3);figure(1);imshow(I3,);title('正确延拓频域法得到的卷积图像(陈云飞)')%比较频域方法与直接

29、卷积的结果,显示差矩阵并且显示错误数据数F=minus(I3,I5);figure(4)imshow(F);title('正确延拓差矩阵的二值图像(陈云飞)')s=0;for i=1:m1+m2-1 for j=1:n1+n2-1 if (minus(abs(F(i,j),0.000001)>0) s=s+1; end; end;end;disp(sprintf('差错 1: %d',s);%补0不够的频域处理程序I1=imread('1.jpg');I2=imread('gyy.jpg');m1,n1=size(I1);m

30、2,n2=size(I2);I1(m1+m2-100,n1+n2-100)=0;I2(m1+m2-100,n1+n2-100)=0;I3=ifft2(fft2(I1).*fft2(I2);I3=I3(1:m1+m2-100,1:n1+n2-100);I3=real(I3);I3(m1+m2-1,n1+n2-1)=0;figure(2);imshow(I3,);title('补0不够频域法得到的卷积图像(陈云飞)')%比较频域方法与直接卷积的结果,显示差矩阵并且显示错误数据数F=minus(I3,I5);figure(5)imshow(F);title('补0不够的差矩阵

31、的二值图像(陈云飞)')s=0;for i=1:m1+m2-100 for j=1:n1+n2-100 if (minus(abs(F(i,j),0.000001)>0) s=s+1; end; end;end;disp(sprintf('差错 2: %d',s);5 运行结果及结果分析在MATLAB中输入程序后,显示的卷积结果如下: 图5.1 正确延拓频域法得到的卷积图像 图5.2 补0不够频域法得到的卷积图像图5.3 直接函数卷积得到的图像图5.4正确延拓差矩阵的二值图像 图5.5 补0不够的差矩阵的二值图像比较图5.1和图5.3,看不出两个图像有任何区别。通

32、过作差,认为舍入误差小于0.000001的均可作为0来处理,这里S=785,差值矩阵的二值图像全为黑,可以认为两图几乎没有任何区别,即频域方法的卷积结果是完全正确的。比较图5.2和图5.3,表面上也看不出两个图像有什么区别,图5.2的靠左和靠上部分有亮度增加,这部分是叠加错误,而靠下和靠右部分是两条黑杠,这是补零的数据,也就是原来丢失的数据。通过检测差值矩阵,S= 99099,错误的有很多,即没有补0的频域方法计算的结果不正确。值得注意的是这里差值矩阵应该四周都是白色,因为左边和上边是混叠错误的地方应该为,行数:100,列数100;同理右边和下边是数据丢失人为补0的地方也有与混叠相同的行数和列数。但因为这里gyy.jpg周围为0,因此正确卷积的结果也为0,因此差矩阵得到的相应区域也为0,显示的2值图像就看不到白色地方了。通过以上分析说明,二维图像或矩阵的线性卷积可以通过补零周期延拓后,经二维傅里叶变换相乘,再做反变换来实现。而不补零或补零不足,用此

温馨提示

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

评论

0/150

提交评论