毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc

上传人:李主任 文档编号:3282942 上传时间:2019-08-07 格式:DOC 页数:57 大小:668.02KB
返回 下载 相关 举报
毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc_第1页
第1页 / 共57页
毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc_第2页
第2页 / 共57页
毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc_第3页
第3页 / 共57页
毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc_第4页
第4页 / 共57页
毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于DSP5509的数字图像边缘检测算法的研究.doc(57页珍藏版)》请在三一文库上搜索。

1、VI湖南人文科技学院毕业设计学科分类号:_湖南人文科技学院本科生毕业设计题 目:基于DSP5509的数字图像检测算法的研究学生姓名: 学号: 系 部: 通信与控制工程系 专业年级: 电子信息工程2006级 指导教师: 职 称: 讲 师 湖南人文科技学院教务处制湖南人文科技学院本科毕业设计诚信声明本人郑重声明:所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本设计不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

2、 作者签名: 二0一0 年 月 日数字图像边缘检测算法实现摘要:随着计算机和各个相关领域研究的迅速发展,科学计算可视化、多媒体技术等研究和应用的兴起,数字图像处理从一个专门领域的学科,变成了一种新型的科学研究和人机界面的工具。边缘检测是数字图像处理中的重要内容。本设计基于Visual C#程序设计语言,综合运用面向对象程序设计技术,数字图像处理技术对数字图像进行边缘检测。主要工作包括图像的二值处理,灰度处理,并运用Sobel,Canny,Roberts,Laplacan四个算子实现数字图像边缘检测,结果表明:Roberts 算子定位比较精确,但对噪声比较敏感,Sobel算子对灰度渐变低噪声的图

3、像有较好的检测效果,拉普拉斯算子可以检测出绝大部分边缘,同时基本没有出现伪边缘,可以精确定位边缘,Canny算子是传统一阶微分算子中最好的算子之一,检测边缘检测的效果最好,边缘轮廓清晰,使人一目了然。关键词:边缘检测;数字图像处理;Canny;Sobel;oberts The Realization of Edge Detection Algorithm of Digital ImageAbstract: With the rapid development of research on computer and its relative domains and visualization o

4、f scientific computation, digital image processing turns to be a tool for a new type of science research and man-machine interface from a special field. Edge detection is an important part of digital image processing. This design, bases on Visual C# programming language, was carried on with “C#” pro

5、gramming. The digital image processing technique realized edge detection of digital image. The main tasks include two-value and gradation processing of image, and realize edge detection of digital image with four operatorsSobel,Canny,Roberts and Laplacan.The results show that Roberts operator is mor

6、e exact, but sensitive to noises. Sobel operator performs better on gradually-changing and noiseless images.Laplace operator is competent to detect major parts of edge. At the same time, hardly any false edge turns up and its just to the point. Canny operator is one of best operators of traditional

7、one-band differential, and it is the best operator of edge detection, contours of edge detected by which is clear enough to be observed.Keywords: Edge Detection, Image Procession, Canny, Roberts 目 录第1章 绪 论11.1 边缘检测国内外研究现状11.2 选题的目的和意义2第2章 基础知识42.1 数字图像42.2 TMS320C5509的优势42.3 CCS集成编译环境开发应用程序的步骤53章 边缘

8、检测设计73.1 利用DSP处理数字图像的基本思想73.2 系统总体设计流程图73.4 数字图像图形预处理83.4.1 数字图像的灰度处理83.4.2 数字图像的二值处理113.5 Sobel算子设计实现153.6 Laplacan算子设计实现193.7 Roberts算子设计实现233.8 Canny算子设计实现25第4章 设计的测试与运行304.1 设计测试环境304.2 设计总测试304.4 边缘检测算子的评价304.4.1 数字图像边缘检测的要求304.4.2 边缘检测评测结果31第5章 总结与展望33致 谢34参考文献35附 录37附录137附录2 TMS320C550 结构图51湖

9、南人文科技学院毕业设计 第1章 绪 论1.1 边缘检测国内外研究现状图像边缘检测与提取的研究一直贯穿于图像处理与分析的始终,传统的图像边缘检测方法大多可归结为图像高频分量的增强过程,微分运算自然就成了边缘检测与提取的主要手段。从而,人们自然最早提出了一阶微分边缘算子,如Roberts算子、Sobel算子、Prewitt算子和Kirsh算子等,这些算子由于梯度或一阶微分算子通常在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需作细化处理,这就影响了边缘定位的精度;因而又产生了与边缘方向无关的二阶微分边缘检测算子,即Laplacian算子。利用二阶导数零交叉所提取的边缘宽度为一

10、个像素,所得的边缘结果无需细化,有利于边缘的精确定位。因此,二阶微分形式的边缘检测算子是目前边缘检测的主要手段之一。边缘检测的基本问题是检测精度与抗噪性能间的矛盾。由于图像边缘和噪声均为频域中的高频分量,简单的微分运算会增加图像中的噪声,因此,在微分运算之前应采取适当的平滑滤波以减少高频分量中噪声的影响。Canny 应用严格的数学方法对此问题进行了分析,提出了由四个指数函数线性组合形成的最佳边缘检测算子,其方法的实质是用一个准高斯函数作平滑运算,然后以带方向的一阶微分定位导数最大值,它可用高斯函数的梯度来近似,属于具有平滑功能的一阶微分算子。 Deriche将Canny的算法作了一定的简化,并

11、直接将Canny的基于有限宽度的边缘检测器的宽度推广至无限宽度,从而增加了边缘检测算子的抗噪性能,但Deriche和Canny的研究是针对单边缘模型的。沈俊则是从最优滤波的观点出发,推导出运算复杂性小、精度高的最优平滑滤波器,即对称双指数型滤波器。同时研究了多边缘模型的情况,为边缘检测与提取技术的发展奠定了一定的基础。随着平滑滤波技术的日渐完善,平滑二阶微分的边缘检测算子也在近年来得到了应用。这种方法是先对图像作最佳平滑,然后再利用平滑图像的二阶微分零交叉确定边缘位置。Marr Hildreth认为LOG算子是这类边缘检测算子中应用最成功的一种,并且从生理学和心理学的角度证明了其边缘检测的有效

12、性。在LOG算子中,具有完美数学特性的高斯函数能有效消除切尺度远小于高斯滤波器方差的图像灰度变化。Marr Hildreth指出,用不同尺度的LOG算子作用于图像,可得到图像在不同分辨率上的描述。通常小尺度算子能获得较多的图像细节,但对噪声也较敏感; 而大尺度算子虽然对噪声不很敏感,但会忽视图像细节。因此,尺度参数的选择是该算法的关键。此外该算子不可避免地也存在一定缺陷,Berzins对LOG算子的边缘检测精度分析说明,在二维图像中LOG算子对直线边缘定位精确,而对实际情况中占多数的曲线边缘总是存在误差,误差大小与边缘的曲率有关。Clerk的研究表明,LOG算子零交叉并不总是图像的真实边缘,但

13、假边缘的零交叉点比真实边缘的零交叉点的频率要小得多,随着高斯滤波器方差的减小,假边缘的强度逐渐减小而真实边缘的强度逐渐增加。当滤波器的方差减小为零时,假边缘的强度将完全消失。不过这种算法实现较为复杂。1.2 选题的目的和意义所谓边缘是指周围像素灰度后阶变化或屋顶状变化的那些象素的集合,它存在于目标与背景,目标与目标,区域与区域,基元与基元之间,因此它是图像分割所依赖的重要特征,也是文理特征的重要信息源和形状特征的基础;而图像的纹理形状特征的提取又常常依赖于图象分割。图像的边缘提取也是图像匹配的基础,因为它是位置的标志,对灰度的变化不敏感,它可作为匹配的特征点。机器视觉主要是利用计算机实现人类的

14、视觉功能,对客观世界的三维场景的感知、识别和理解。边缘是图像的最基本特征,边缘检测通常是机器视觉系统处理图像的第一个阶段,是机器视觉领域内经典的研究课题之一,其结果的正确性和可靠性将直接影响到机器视觉系统对客观世界的理解。图像工程技术由高级到简单分为图像理解、图像分析和图像处理三个层次,边缘检测就属于图像分析的范畴。在实际的处理问题中,图像的边缘作为图像的一种基本特征,经常应用到较高层次的特征描述、图像识别、图像分割、图像增强以及图像压缩等处理技术中,从而可对图像做进一步分析和理解。图像的其他特征都是由边缘和区域这些基本特征推导出来的。边缘具有方向和幅度两个特征。沿边缘走向,像素值的变化比较平

15、缓;而垂直与边缘走向,则像素值的变化比较剧烈。而这种剧烈可能呈现出阶跃状,也可能呈现斜坡状。边缘上像素值的一阶导数较大;而阶导数在边缘处的值为零,呈现零交叉。经典的、最简单的边缘检测方法是对原始图像按像素的某邻域构造边缘算子。由于原始图像往往含有噪声,而边缘和噪声在空间域表现为灰度有比较大的起落;在频域则反应为同是高频分量,这就给边缘检测带来困难。在本次设计中,我需要用DSP,实现对数字图像进行边缘检测,在边缘检测的具体过程中,我采用四种常见的算子实现数字图像边缘检测,然后根据边缘检测后的图片进行比较,比较边缘检测的算子的优越性。51第2章 基础知识2.1 数字图像用计算机进行图像处理的前提是

16、图像必须以数字格式存储,我们把以数字格式存放的图像称之为数字图像。数字图像是由矩阵构成,矩阵中包含有不同的像素值。数字图像是以一规则的数字量集合来表示的物理图像,图像用计算机处理必须赋予数字形式。如果将一幅图像分成许多个被称为象素(Pixel)的小区域,每个象素中的灰度平均值用一个整数来表示,这便是数字信号,图像信息为数字信号的图像就是数字图像。数字图像最大与最小值之间的系列像素的亮度是离散而不连续,每个象素都有确定的数值。数字图像是不同亮度或颜色的点组成的二维点阵,当一个点阵包含有足够多的点,且点与点的间距之间足够近时,看上去就是一幅完整的图像。在计算机中,图像被分割成下图所示的像素(Pix

17、el),各像素的灰度值用整数表示。MN个像素的数字图像,其像素灰度值可以用M行、N列的矩阵G表示: 灰度值,即亮度值。一般象素值用一个8 bit字节来表示。把由黑灰白的连续变化的灰度值,量化为0255共256级灰度值,灰度值的范围为0255,表示亮度从深到浅,对应图像中的颜色为从黑到白1。 2.2 TMS320C5509的优势 (1)在硬件结构中采用双MAC,有4个40bit的累加器,因而在一个周期内可完成更多的任务,有更多的自动并行指令,为发挥附加的硬件功能,有的指令隐含或装有并行化的能力,用户可自行编程达到并行操作,以便充分利用芯片的性能。通过增加硬件和操作的并行性,极大的提高了处理器的处

18、理能力。(2)可变指令长度增加代码密度:指令长度为8/16/24/40/48 bit,选择不同长度可使编码密度达到最佳和有效地利用总线;指令预取由16 bit增加到32 bit;片上指令缓存单元自动的不包装指令,以便最有效地利用每一周期。(3)指令高速缓存减少外部存储器访问,采用指令高速缓存的器件,允许几条指令同时加载到高速缓存器中,CPU不必对每条指令都去访问存储器,并且在时钟速率下利用指令,增加速度,降低功耗。(4)转移、条件执行、流水线保护的专用硬件。当程序的控制发生变化时,例如转移和调用子程序时,这个硬件能使处理器所需周期数减少,从而可提高处理效率。(5)数据总线的专用硬件用来保持各个

19、计算单元有恒定的数据流。由于有一个通用的ALU作简单的算术运算,使得地址数据流单元可进一步增加结构的指令并行性。(6)数据计算功能强大,两个MAC(乘法累加器)、主ALU(40bit)、4个40bit的累加寄存器, 完成对被处理数据的算术运算,其附加的功能部件有桶形移位寄存器、舍入与饱和控制以及有效完成计算的专用硬件。2.3 CCS集成编译环境开发应用程序的步骤CCS将多种代码产生工具和汇编器、链接器、C/C+编译器、建库工具等集成在一个统一的开发平台中。CCS所集成的代码调试工具具有各种调试功能,能对TMS320系列DSP进行指令级的仿真和进行可视化的实时数据分析6。(1)书写4种类型的文件

20、开发DSP的C语言应用程序,主要需要4种类型的文件:C语言文件、汇编语言文件、头文件和命令文件。C语言文件“.C”的格式,主控制程序部分以及不涉及复杂的算法运算的部分用C语言文件编写;汇编文件为“.ASM”的格式,主要是涉及到程序的复位和中断向量;头文件为“.H”,的格式,主要定义了DSP内部寄存器的地址分配,书写一次后可被其它程序反复使用,头文件可以参考TI公司详细的头文件定义;命令文件为“.CMD”,的格式,主要定义堆栈、程序空间分配和数据空间分配。(2)建立一个工程DSP的C语言应用程序引入了工程管理的概念。因此需要新建一个工程,并把上述的文件除了头文件外都添加到工程当中,头文件不需要用

21、户自己添加,只要头文件和工程在同一个目录下,连接时开发工具可以自己识别。(3)编译环境的简单配置编译环境的配置细节不再详细叙述,可以参考相关文献进行设置。(4)编译源文件点击菜单栏“Project”中的选项“Build”,则可以实现源文件的编译。如果没有语法错误,则可以直接生成可执行代码并直接下载到DSP芯片中;如果有语法错误或其它类型的错误,则编译器会给出相应的提示,可以根据提示改掉错误,再进行同样的操作,直到没有任何错误为止。(5)执行程序待程序编译成功下载到芯片后,点击菜单栏中的“Debug”选项,选择 “Run”,选项就可以运行程序。为确定某几步的问题也可以单步调试,还有可以设置断点、

22、并通过观察窗口察看变量的值等等。一个程序的成功调试可能需要在仿真器上反复编译并下载运行,以发现编程时没有注意到的Debug问题。3章 边缘检测设计3.1 利用DSP处理数字图像的基本思想本设计是一个基于DSP5509数字图像边缘检测算法实现的研究,它完成的功能包括读取图片,保存图片,以及图片的灰度处理、二值处理,和图像的边缘检测。该程序通过调用该类里的静态成员函数,就可以实现相应的图像处理功能了。为了实现图像处理,因为图像是由一个个的像素点组成的,对一幅图像的每个像素进行了相应的处理,最后整个图像也就处理好了。所以我们只需对每个像素点进行相应的处理,在处理过程中却不用考虑周围象素点对它的影响,

23、所以程序的实现相对来说就变得简单多了。通过编写C+程序,唯一的办法就是使用指针来获得图像的内部数据,指明函数中访问图像内部数据的代码块。3.2 系统总体设计流程图输入一个彩色图片进行灰度处理成为黑白图片进行二值化处理选择相关算子进行边缘检测保存并输出检测后的图片图3-2 系统流程图本系统可以实现彩色图片和黑白图片进行边缘检测功能,当输入一个彩色图片以后,必须将图片进行灰度处理,然后在选择算子实现边缘检测功能。若不能进行灰度处理就会影响效果,如果输入一个黑白图片,就不能进行灰度处理。如果能先进行图像的二值处理,这样边缘检测效果会好一些。为了让边缘检测的效果尽可能的好,我有必要在进行边缘检测之前先

24、进行二值处理。 3.4 数字图像图形预处理数字图像的边缘检测是图像分割、目标区域的识别、区域形状提取等图像分析领域十分重要的基础,图像理解和分析的第一步往往就是边缘检测,目前它已成为机器视觉研究领域最活跃的课题之一,在工程应用中占有十分重要的地位。在本设计中,数字图像的预处理包括数字图像的灰度处理和二值处理。3.4.1 数字图像的灰度处理当我们输入一个彩色图片时,如果我们直接进行边缘检测会严重影响检测出来的效果的,所以我们有必要进行灰度处理将彩色图片变成灰度图片,黑白图片本身是灰度图片,不需要进行灰度变化。灰度变化的源代码如下: private void button1_Click(objec

25、t sender, EventArgs e) int r, g, b; if (this.pictureBox1.Image != null) this.pictureBox1.Visible = true;int height = this.pictureBox1.Image.Height; int width = this.pictureBox1.Image.Width;Bitmap temp = new Bitmap(width, height); Bitmap process = (Bitmap)this.pictureBox1.Image;int Result; Color pixe

26、l; for (int x = 0; x width; x+) for (int y = 0; y g ? r : g; Result = Result b ? Result : b; temp.SetPixel(x, y, Color.FromArgb(Result, Result, Result); break; case 2:/加权平均值法 Result = (int)(0.299 * r) + (int)(0.587 * g) + (int)(0.114 * b); temp.SetPixel(x, y, Color.FromArgb(Result, Result, Result);

27、break; this.pictureBox1.Image = temp; 一般地,我们用RGB来描述图像像素点的颜色,即认为每个像素点由R(red)、G(green)、B(blue)三种色组成。这里,引入灰度图像的概念:灰度图像是一种具有从黑到白256级灰度色域等级的单色图像,该图像中的每个像素用8位数据表示,因此像素点值介于黑白间的256种灰度中的一种。该图像只有灰度等级,而没有颜色的变化。这样,我们可以将图像的RGB属性归一为灰度属性,由此就可以方便我们对图像进行处理。彩色图像黑白化处理通常有三种方法:最大值法、平均值法、加权平均值法,以下是三种方法的原理3:1、最大值法:最大值法是每个

28、像素点的RGB值等于原像素点的RGB值中最大的一个,最大值产生亮度很高的黑白图像。 (3-1) 2、平均值法:平均值法使每个像素点的RGB值等于原像素点的RGB值的平均值,即 (3-2) 3、加权平均法:加权平均法根据需要指定每个像素点RGB的权数,并取其加权平均值,即 (3-3)、表示RGB的权数,均大于零,通过取不同的权数可实现不同的效果。,取不同的值,将形成不同的灰度图像。由于人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使将的到较合理的灰度图像。实验和理论推导证明,当 =0.299,=0.587,=0.114时,能得到最合理的灰度图像。不过在这里指明的是,在GDI

29、+中图像存储的格式是BGR而非RGB,即其顺序为:Blue、Green、Red。所以在for循环内部一定要设置好red、green、blue等变量的值,切不可颠倒。程序运行的结果如图3-3,图3-4所示: 图3-3 程序运行前原图 图3-4 灰度处理后的图片3.4.2 数字图像的二值处理图像的二值化处理就是将图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值

30、图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),

31、可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。二值处理是图形处理最最基本的处理方法。得到二值化图像的关键在于得到一个合适的阈值。二值处理的代码如下:private void 二值化_Click(object sender, System.EventArgs e) double num; int i, j; int k; int, h = new int1280, 1280; int r; int hd = new int300; double p = new double300; double tt = new

32、 double300; double u = 0; double uu = new double300; double w = new double300; double b = new double300; double max; double maxb = 0; int t; Color cc1 = Color.FromArgb(255, 255, 255); Color cc2 = Color.FromArgb(0, 0, 0); Color c = new Color(); Bitmap box1 = new Bitmap(pictureBox1.Image); /读取图像颜色值 fo

33、r (i = 1; i pictureBox1.Image.Width; i+) for (j = 1; j pictureBox1.Image.Height; j+) c = box1.GetPixel(i, j); r = c.R; hi, j = r; /累加图像灰度值 for (i = 1; i pictureBox1.Image.Width; i+) for (j = 1; j pictureBox1.Image.Height; j+) for (r = 0; r 255; r+) if (hi, j = r) ttr = ttr + 1; /计算灰度概率函数 for (t = 0;

34、 t 255; t+) pt = ttt / (pictureBox1.Image.Width * pictureBox1.Image.Height); /计算灰度均值 for (t = 1; t 256; t+) u = u + (t - 1) * pt; /计算灰度类均值 for (k = 1; k 256; k+) uuk = uuk - 1 + (k - 1) * pk; wk = wk - 1 + pk; if (wk * (1 - wk) != 0) bk = (u * wk - uuk) * (u * wk - uuk) / (wk * (1 - wk); max = b0; f

35、or (k = 0; k = max) max = bk; for (k = 0; k 255; k+) if (bk = max) maxb = k; num = maxb - 1; /图象阈值.Text = 图象阈值为 + num.ToString(); /阈值二值化 for (i = 0; i pictureBox1.Image.Width; i+) for (j = 0; j num) box1.SetPixel(i, j, cc1); else box1.SetPixel(i, j, cc2); pictureBox1.Refresh(); pictureBox1.Image = b

36、ox1; 程序运行的结果图3-5,图3-6所示: 图3-5 灰度处理后图片 图3-6 二值处理后图片3.5 Sobel算子设计实现Sobel算子:Sobel算子是一阶微分算子,它利用像素邻近区域的梯度值来计算一个像素的梯度,然后根据一定的阈值来取舍。它由下式给出: (3-4)Sobel算子是33算子模板。两个卷积核dx 、dy形成Sobel算子。一个核对通常的垂直边缘响应最大,而另一个核对水平边缘响应最大。两个卷积的最大值都作为像素点的输出值,运算结果就是一幅边缘图像。适当取门限TH,如果R ( i , j) TH 则为阶跃边缘点。Sobel算子模板如图3-7所示: -101-202-1011

37、21000-1-1-1 图3-7 Sobel算子模板 Sobel算子利用像素的上、下、左、右邻域的灰度加权算法, 根据在边缘点处达到极值这原理进行边缘检测。该方法不但产生较好的检测效果,而且对噪声具有平滑作用,可以提供较为精确的边缘方向信息。Sobel算子是对图像进行差分和滤波,对灰度渐变和噪声较多的图像处理的较好。算法说明:对数字图像的每个像素f(i,j),考察他的上下左右邻域灰度的加权值,把各方向上的灰度值加权之和作为输出,可以达到提取图像边缘的效果。设图像当前像素为f(i,j),输出图像当前像素为g(i,j).则: (3-5) fxr=f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2f(i+1,j)-f(i+1,j+1) (3-6)fyr=f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2f(i,j+1)-f(i+1,j+1) (3-7)下面是这部分的代码: private void button3_Click(object sender, EventArgs e) if

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1