毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc

上传人:西安人 文档编号:3286519 上传时间:2019-08-08 格式:DOC 页数:29 大小:553.99KB
返回 下载 相关 举报
毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc_第1页
第1页 / 共29页
毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc_第2页
第2页 / 共29页
毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc_第3页
第3页 / 共29页
毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc_第4页
第4页 / 共29页
毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-视网膜血管分割系统设计与实现技术研究.doc(29页珍藏版)》请在三一文库上搜索。

1、1 视网膜血管分割系统设计与实现技术研究视网膜血管分割系统设计与实现技术研究 摘摘 要要 视网膜血管检测作为图像处理的一个应用在临床医学中发挥着 愈来愈重要的作用。基于图像处理的血管检测方法主要包括分割技 术、跟踪技术和拟合技术。本文主要致力于研究基于采用 Canny 算 子与数学形态学滤波相结合的方法进行自适应图像分割算法及其实 现技术。该研究的主要工作包括:1)综述了公开报道的各种视网膜 血管检测方法;2)研究了 Canny 算子与数学形态学滤波相结合的方 法算法及其实现技术;3)通过 VC+6.0 编程实现了 Canny 算子与 数学形态学滤波相结合的方法算法进行视网膜血管提取;4)通过

2、实 验验证了算法的有效性。 关键词:视网膜图像,血管检测,图像分割,Canny,数学形态 学 2 MINIMAL-PATH BASED APPROACH TO DETECTION OF RETINAL VESSELS ABSTRACT As an application of image processing, the detection of retinal vessels plays more and more important role in clinical medicine. The main methods of vessel detection include segmenta

3、tion technique, tracking techniques and fitting techniques. This thesis arms to study the minimal-path based tracking algorithm and the corresponding implementation techniques. The main contributions are the follows: 1) presented a brief review of various published detection methods of retinal vesse

4、ls; 2) discussed the minimal-path algorithms and their implementations; 3) realized the extraction of retinal vessels based on Dijkstra algorithm, programming with VC+6.0; 4) evaluated the performance of minimal-path algorithm by experiments. Key Words: retinal image, vessel detection, image segment

5、ation, Canny, Mathematical Morphology 3 目 录 摘摘 要要 .3 ABSTRACT4 第第 1 1 章章 绪论绪论 .7 第第 2 2 章章 设计方案设计方案 .8 2.1 图像信息的采集图像信息的采集.8 2.1.1采集的过程采集的过程8 2.1.2 图像命名规则图像命名规则.8 2.2 数字图像预处理数字图像预处理.8 2.2.1 灰度化处理灰度化处理.9 2.2.2 将掌纹图像二值化将掌纹图像二值化.9 2.2.3 掌纹图像定位点的自动检测掌纹图像定位点的自动检测.9 2.2.4 旋转转正方法旋转转正方法.11 2.2.5 掌纹提取方法掌纹提取方法

6、.11 2.3 对图像进行特征提取对图像进行特征提取.12 2.3.1 Gabor变换变换.12 2.3.2 不变矩不变矩.13 2.4 对图像进行分类识别对图像进行分类识别.14 第第 3 3 章章 实验结果实验结果 .15 3.13.1 实验结果实验结果15 3.23.2 研究成果研究成果15 第第 4 4 章章 结结 论论 .16 4.14.1 总结总结16 4.24.2 工作展望工作展望16 参考文献参考文献 .17 附录附录 1 1 掌纹自动识别系统掌纹自动识别系统 18 附录附录 2 2 掌纹图像预处理掌纹图像预处理 21 附录附录 3 3 掌纹特征掌纹特征 GABORGABOR

7、变换和特征提取变换和特征提取 23 致致 谢谢 .26 数据库图像资料数据库图像资料 .27 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 4 第第 1 1 章章 绪绪 论论 1.11.1 本课题研究的目的及意义本课题研究的目的及意义 视网膜血管是人体唯一可以在活体使用非创伤性手段直接观察到的血管,许 多全身性血管病以及代谢性疾病均可使眼底血管受到不同程度的侵犯,特别是心、 脑、肾等与血管有关的器官发生病变,眼底血管的改变在一定程度上可反映病变 的程度1。临床上,视网膜血管网络对高血压、糖尿病、动脉硬化、肾炎等疾病 的诊断、治疗、愈后评价都具有重要意义2-3。另外,视

8、网膜血管作为一种人体 生物特征,其结构稳定,隐蔽性强,在身份鉴别等高层次安全保密方面有重要 的应用前景。 由于硬件限制,视网膜图像较明显地表现出以下特点:光照不均匀;血管 与背景的对比度不强;图像噪声点多。这导致采用常用的图像处理方法很难分 割出满意的效果,寻找合适的视网膜血管提取方法是难点所在4。目前视网膜 血管的检测方法已有不少,但是基于 Canny 算子与数学形态学滤波相结合的方 法算法尚未见发表。本文就重点研究基于 Canny 算子与数学形态学滤波相结合 的视网膜血管检测算法。 基于 Canny 边缘检测算子的血管分割算法。Canny 算子具有良好的多尺度特 性,已广泛地用于图像边缘检

9、测。该方法既可有效地抑制图像中的噪声,有可 保持边缘的连通性,是一种较理想的边缘检测算子。无论采用何种边缘检测算 法都难以完全消除噪声的影响。为提高边缘检测的有效性,该研究将探讨基于 数学形态学的后处理算法,已提取真实的血管网络。 1.21.2 相关研究工作相关研究工作 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一 般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一 个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边 缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与

10、实现 项目研究报告 5 分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位。 图像边缘检测算法在过去已经被许多人提出过,并且这些人的算法都有着 很多不一样的地方。大致可以分为两类,(1)基于梯度的边缘检测算法,(2)基 于零点交叉边缘检测算法。主要具体的有 Sobel,Reberts,Laplacian,LOG 等 这些算法。 1.2.11.2.1 基于基于 LaplacianLaplacian 算子的视网膜图像的分割方法算子的视网膜图像的分割方法 Laplacian 算子是常用的边缘检测算子。拉普拉斯算子是最简单的各向同性 微分算子,具有旋转不变性。一个二维图像函数的拉普拉

11、斯变换是各向同性的 二阶导数。 另外,拉普拉斯算子还可以表示成模板的形式,如图1-1所示。图1-1(a) 表示离散拉普拉斯算子的模板,图1-1(b)表示其扩展模板,从模板形式容易 看出,如果在图像中一个较暗的区域中出现了一个亮点,那么用拉普拉斯运算 就会使这个亮点变得更亮。因为图像中的边缘就是那些灰度发生跳变的区域, 所以拉普拉斯锐化模板在边缘检测中很有用。一般增强技术对于陡峭的边缘和 缓慢变化的边缘很难确定其边缘线的位置。但此算子却可用二次微分正峰和负 峰之间的过零点来确定,对孤立点或端点更为敏感,因此特别适用于以突出图 像中的孤立点、孤立线或线端点为目的的场合。 1-1(a) 1-1(b)

12、 1.2.21.2.2 基于基于 SobelSobel 算子的视网膜图像的分割方法算子的视网膜图像的分割方法 Sobel 算子在图像上求出二维的空间梯度,和梯度高的区域与边缘的区域相 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 6 一致。Sobel 算子通常用于求输入的灰度级图像的每一个的近似的绝对梯度。 Sobel 模板设计是用来在图像的垂直和水平方向最大的限度去反映边缘,这些 方向性的边缘最后会汇合在一起的。基于 Sobel 算子的模板是 1.2.31.2.3 基于基于 LOGLOG 算子的视网膜图像的分割方法算子的视网膜图像的分割方法 这个算子可以说是 Lap

13、lacian 的改进版,因为 Laplacian 其他的梯度算子 一样,会增强图像中的噪声。而 LOG 算子比 Laplacian 算子多做的就是它是先 对图像进行了 Gauss 平滑。通过 Gauss 平滑除去图像噪声,然后再进行边缘的 检测,这样做的效果会比较好。下面是 LOG 的 5*5 的模板。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 7 第第 2 2 章章 设计方案设计方案 图像边缘提取一般划分为视网膜图像采集、预处理、算法处理、保存处理 图片几个过程。图像采集主要完成视网膜原始图像的获取及保存任务,然后经 过预处理阶段进行图像的去噪、平滑等操作,形成

14、标准视网膜数据库,再对这 些数据库中的图像进行算法处理,然后保存处理以后的图片以进行不同的算法 之间的比较。 2.12.1 图像信息的采集图像信息的采集 我们采用 Nommyd-7 免散瞳眼底相机作为视网膜图像信息采集工具。 Nommyd-7 免散瞳眼底相机、扫描图像类型真彩色图像、图像存储格式 BMP 格式、 分辨率 565584。随机选择 10 个学生,对他们的左眼和右眼分别各采集 5 对 视网膜图像,建立视网膜图像数据库。 2.1.12.1.1 采集的过程采集的过程 以一个人采集为例: 第一步,将 Nommyd-7 免散瞳眼底相机跟计算机连接好。 第二步,将一只眼睛对准相机上。 第三步,

15、开始拍摄,将拍摄以后的图像以 bmp 的格式保存下来。 2.1.22.1.2 图像命名规则图像命名规则 采集到的图像需要采用统一的命名规则,经过一定的组织才能最终成为标 准数据库。 具体命名方法如下:每幅图像用二个字段表示 ,即表示为 AB. bmp 的形式。A 表示被采集者的姓名的第一个字母(如果出现重复的时候,再在后面加数字, 表示第几个重复的) 。B 区分采集人的左右 ,左眼用“L”表示 ,右眼用“R” 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 8 表示; 例如,陈红用右眼拍摄,命名为:chR.bmp。如果有第二个陈红来拍摄右眼的视 网膜,命名为:ch1R.

16、bmp。这样命名,对于较小的环境而言,是有好处的,可 以直接通过命名,得知这是谁的视网膜。同时,也存在缺点,当被采集者的数 量增大的时候,就会失去上面的优势。 2.22.2 数字图像预处理数字图像预处理 由于 Canny 算子这个算法本身就是根据灰度值的变化来确定某一点是否是 边缘,但是我们从相机中得到的是真彩色图。所以,在进行正常的边缘识别的 过程中一定要进行灰度话处理。这也是我们这个系统第一步要做的事情。 2.2.12.2.1 灰度化处理灰度化处理 由彩色转化为灰度的过程叫做灰度化处理,它是使 RGB 模型中的 R=G=B。转 换后的黑白图像的一个像素用一个字节表示该点的灰度值,它的值在

17、0255 之 间,转换关系为: Gray(i,j)=0.11R(i,j)+0.59G(i,j)+0.3B(i,j) 在实际中,可以取 3 个分量中的最大值作为灰度值。灰度处理首先读入图 像的拷贝文件到内存中,找到 R,G,B 中的最大值,使颜色的分量值都相等且 等于最大值,这样就可以使图像变成灰度图像。 算法: 1)取得图像文件的拷贝文件; 2)取得图像的数据区指针,得到 R,G,B 三个分值; 3)对 R,G,B 三个分量做比较,gray=max(R,G,B) ; 4)将 gray 返回给 R,G,B 三个分量; 5)显示图像。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目

18、研究报告 9 2.32.3 对图像进行对图像进行处理处理(Canny(Canny 算子算子) ) 坎尼(Canny)算子是 1986 年 John Canny 在 IEEE 上发表的“A Computational Approach to Edge Detection”这篇文章中提出的。文章中还 给出了边缘检测的三条准则,即 Canny 准备(Cannys Criteria)。并在此基础 上提出了一个实用算法。 Canny 的目标是找到一个最优的边缘检测算法,最优边缘检测的含义是: (1)优良的信噪比,即对边缘的错误检测率要尽可能的低。也就是说将非边 缘点判别为边缘点比将边缘点判别为非边缘点的

19、概率要低。 (2)优良的定位性能,即检测出的边缘位置尽可能在实际边缘的中心。 (3)对同一边缘仅有唯一的响应,即单个边缘产生多个响应的概率要低,并 且虚假边缘应受到极大的抑制。 Canny 算子对图像的处理过程可以概括为一下几个步骤: (1)过滤,边缘检测主要依赖于导数的计算,但很容易受噪声的影响。但是 滤波器在降低噪声的强度的同时也降低了边缘强度的强度。 (2)增强,增强算法将邻域中灰度有显著变化的点突出显示。一般通过计算 梯度幅值完成。 (3)检测,有一些梯度幅值很大并不一定是边缘点,所以必须进行进行的检 测。 (4)对边缘精确的定位。 2.3.12.3.1 过滤过滤(Gauss(Gaus

20、s 滤波器滤波器) ) 高斯滤波器是一种线性线性平滑滤波,适用于消除高斯噪声,广泛应用于 图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过 程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得 到。以下是它的函数: 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 10 (x,y)分别是它离中心点的位置,而 则是一个标准方差,通过这个未知 数可以控制 Gauss 函数的模板及平滑的程度。 然后就是用 Gauss 函数对图像 f(x,y)进行平滑就可以得, 这里的*符号表示的是卷积运算。通过这个运算以后就可以得到进行平滑以后的 图像 F(

21、x,y)了。 2.3.22.3.2 计算梯度与梯度幅值计算梯度与梯度幅值 这一部分是以 F(x,y)为基础的,要求出 F(x,y)的梯度则必须要求出 F(x,y) 的 x 偏导和 y 偏导。在数字图像里则是通过近似的计算也或者它们的偏导的。 传统的Canny算子是采用2*2邻域来计算F(x,y)的梯度的。其中,x 和y 方向偏导数的2个 阵列P x i, j 和P y i, j 分别为: 这个公式可以化作一个模板,上面这个公式就可以化成这样的一个模板。X 偏导与Y偏导分别为一下两个。 不过我设计的 Canny 算子在这里求梯度模板则是使用 Sobel 模板。 浙江省“新苗人才计划”项目 视网膜

22、血管分割系统设计与实现 项目研究报告 11 接下来则是要求出每个像素的梯度幅值与梯度方向。可以使用上面求出的 偏导了计算这两个变量。 Mi,j是梯度幅值。梯度方向是 2.3.32.3.3 非极大值抑制非极大值抑制 为了精确定位边缘, 必须细化梯度幅值图像M i, j 中的屋脊带, 只保 留幅值局部变化最大的点, 这一过程就是非极大值抑制。通俗的讲就是,保证 Canny算法的单个边缘响应,不能单看像素点的梯度幅值的大小来判断这个点是 否是边缘点,必须通过让像素点进行比较,看它是不是一定范围内的极大值才 能确定。 Canny算法中使用的3*3的大小,包含8方向的邻域。其实可以说是4个方向, 因为这

23、个邻域是对称。这4个方向分别为0(0-22.5,157.5-180),45(22.5-67.5), 90(67.5-112.5),135(112.5-157.5)。括号内是每一个角度的范围。当梯度的角 度值符合其中的某一个范围内,则将这个像素点的方向定为括号前面的角度。 在每一个点上, 邻域的中心像素m i, j 与沿梯度方向的2 个梯度幅值的插 值结果进行比较。如果邻域中心点的幅值m i, j 不比梯度方向上的2 个插 值结果大, 则将m i, j 对应的边缘标志位赋值为0,这一过程把M i, j 宽屋脊带细化为一个像素宽, 并且保留了屋脊的梯度幅值。可以通过下图(1-2) 更加清楚的了解非

24、极大值抑制的过程。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 12 1-2 比如我们梯度的方向为10度,这时候我们应该把这个像素点的梯度方向归入0 度的范围内。然后就是拿中间的那个值与8和4这两个位置的像素进行比较,如 果不是最好的则将其设置为0,不然则这个像素就是边缘的极值点。 2.3.42.3.4 用双阈值算法检测和连接边缘用双阈值算法检测和连接边缘 双阈值算法是对经过非极大值抑制和梯度直方图分类的子图像N i, j 分别使用高、低2个阈值S(h) 和S(l)分割得到2 个阈值边缘图像T h i, j 和T l i, j 。由于图像T h i, j 是由高阈值

25、得到, 因此它应该不含有 假边缘, 但T h i, j 可能在轮廓上有间断。因此双阈值算法要在T h i, j 中把边缘连接成轮廓, 当达到轮廓端点时, 该算法就在由低阈值得到的边缘 图像T l i, j 的8邻域位置寻找可以连接到轮廓上的边缘, 这样, 利用递归 跟踪的算法不断地在T l i, j 中搜集边缘, 直到将T h i, j 中所有的 间隙都连接起来为止。 2.3.42.3.4 CannyCanny 算法的缺点算法的缺点 (1) Canny算法在求梯度的时候,由于模板的不同会有很大的不同。有可能 造成对边缘的定位的确很精确,但是对噪声太过于敏感,从而导致出现假的边 缘,并且丢失真的

26、边缘。 (2) 关于双阈值算法的高阈值与低阈值的取值问题也是一个很大的问题, 不能根据图像本身的特点去估计这两个值,每一次都是认为的去设定这几个值。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 13 2.42.4 CannyCanny 算法与数学形态学的结合算法与数学形态学的结合 灰度形态学处理的对象和结构元素是灰度函数,可充分考虑图像的灰度信 息,更完整地描述图像的特征。膨胀和腐蚀是数学形态学的2种最基本运算,由 这2种基本运算可以组成多种复合运算,产生各种形态学实用算法。 膨胀:是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张 的过程。可以用来填补物体

27、中的空洞。其离散形式的形态变换如下: (fb) (s,t)=maxf(s-x,t-y)+b(x,y)(s-x,t-y) D ;(x,y) D + fb 其中,f(x,y)和 b(x,y)表示定义在二维离散空间 D 和 D 上的两个离散函 fb 数,f(x,y)表示输入图像,b(x,y)表示结构元素; 腐蚀:是膨胀的对偶运算,表示用结构元素 b 对图像 f 进行检测,寻找图 像内部可以容纳该元素的区域,若原点在结构元素内部,则腐蚀具有收缩图像 作用;若原点不在结构元素内部,则可用于填充图像内部的孔洞;同样,其离 散形式的变换如下: (f b) (s,t)=minf(s+x,t+y)-b(x,y)

28、(s+x,t+y) D ;(x,y) D fb 开运算即先腐蚀后膨胀的过程,用来消除小物体、在细小点处分离物体、 平滑较大物体的边界的同时并不明显改变其面积;闭运算即先膨胀后腐蚀的过 程,用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改 变其面积;变换形式如下: 开运算:fb=(f b)b + 闭运算:fb=(fb) b + 在上述的 Canny 算法已经是边缘检测算法中效果比较好的一种了,但是有 时候它的效果还是不那么让人满意。所以我们提出了将数学形态学这个新型学 科也加到我们的项目中来。这个数学形态学主要做的是前期的工作,而 Canny 算法本身应该说是不变的。 浙江省“新

29、苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 14 本文针对的是灰度图像进行处理的。从上述可以知道形态学的基本运算就 两种,一种是膨胀,用来填充一些小孔,有对图像外部滤波的作用。另一种是 腐蚀,以消除图像中小的成分,有对图像内部滤波的作用。 本文中数学形态学主要用于前期的图像去噪。这是一部很重要的一步,因 为前期的图像会对后期的检测产生很大的影响。滤波器可能在一定程度上到达 去噪,但是在去噪的同时也是会消减图像本身的边缘的信息,可能导致最后的 边缘不完整。如果用数学形态学去噪则不会对图像的信息进行消减,它能很好 的保存图像的信息。因为数学形态学是基于信息的几何特征,预先定义了结

30、构 元素,所以能达到既能消除噪声又能很好的保留图像的信息。 从一些资料1得知,数学形态学的开运算能很好的图像的白噪声,而且图 像没有模糊,但是对黑噪声却没有太多的改变。对图像使用数学形态学的闭运 算,仔细的观察会发现黑噪声也全部消失了,但是会有点图像有点轻微的模糊, 不过应该影响不大。 在这个基础上,再对图像使用Canny算法就会有更加好的效果。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 15 第第 3 3 章章 实验结果实验结果 3.13.1 实验结果实验结果 实验的结果是通过 5 个人的视网膜进行边缘识别。而且对不同的算法进行 了比较。而且也很着重的比较了使用

31、了数学形态学以后 Canny 算法与没有使用 以前的差别。下面是检测的结果 原图 只有 Canny 算子处理 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 16 数学形态学加 Canny 我们可以看出只有 Canny 算法处理过的图片最外面一圈假的边缘点,而且 如果仔细观察会发现有数学形态学的图片的血管比只有 Canny 的要清晰不少。 虽然从这张照片中看不去数学形态学的很大的优势,但是如果当照片原图没有 那么好的情况下,则优势就很明显了。 3.23.2 研究成果研究成果 经过项目的研究和系统的开发,形成了以下研究成果: 1)建立了可用于视网膜的数据库; 2)设计了一

32、套用于视网膜血管检测的系统原型程序; 3)发表了研究论文 1 篇; 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 17 第第 4 4 章章 结结 论论 4.14.1 总结总结 本课题的主要工作是研究视网膜血管分割算法,并且仔细的研究了 Canny 算子和数学形态学。通过不同的算法对 5 个同学的左右眼睛的视网膜进行了检 测,并且对处理以后的进行仔细的对比,然后保存。本身 Canny 算法在边缘检 测算法中已经算是比较好的一种算法,与数学形态学的结合让它变得更加的完 美。本文主要的研究工作和成果体现在如下几个方面: 1).对 Sobel,Reberts,Laplacia

33、n,LOG,Canny 几种常见算法进行了比较, 然后通过对不同质量照片的出来,来发现它们的优点和缺点。也发现了这几种 算发中 LOG 与 Canny 的检测能力比其他的要好一点。 2).让 Canny 算法与数学形态学进行了结合,数学形态学很好的弥补了 Canny 算法的部分的确定。在 Canny 算法的基础上使图像变得更加的清晰。并 对数学形态学也有了一定的掌握的,数学形态学是一门新兴的、以形态为基础 对图像进行分析的学科,它用具有一定形态的结构元素去度量和提取图像中的对 应形状以实现对图像的分析和识别、边缘检测等图像预处理问题中有着明显的 优势。数学形态学的基础对于膨胀与腐蚀的掌握。也发

34、现了正确的使用数学形 态学可以能很好的处理图像边缘的问题。 4.24.2 工作展望工作展望 虽然本课题的研究取得了一定的进展,但视网膜技术及系统的最终完善还 有待进一步的研究。尤其是在一些核心算法的研究上,如何针对视网膜图像的 特点,提出更高效的边缘提取算法,是后续研究工作的重点。另外,虽然我们 从实验方面验证了视网膜图像边缘识别系统的性能和可靠性,但还需要在理论 上对视网膜的检测唯一性与不变性方面作进一步的探讨。 随着现代化技术的不断出现,传统身份识别方法已经不能满足现代社会对 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 18 个人身份识别的要求。生物特征身份识别

35、具有传统方法所无法比拟的高准确性、 高安全性、高可靠性等优点,能够克服传统方法的弊端。作为新兴的生物特征 身份识别技术,视网膜识别凭借其高度的准确性,已经得到学术界和企业界越 来越广泛的关注。 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 19 参考文献参考文献 1张惠蓉.眼微循环及其相关疾病M.北京:北京医科大学中国协和医科大 学联合出版社,1993. 2吴振中.现代临床眼科学M.长沙:湖南科学技术出版社,1996. 3汤敏,王惠男.彩色视网膜血管图像的自动分割算法J.仪器仪表学报,200 7,28(7):1281-1285. 4姚畅,陈后金,李居朋.基于过渡区提取

36、的视网膜血管分割方法J.电子学 报,2008,36 (5):974-978. 5潘立丰,王利生.一种视网膜血管自适应提取方法J.中国图象图形学报,2 006,11 (3):310-316. 6Gonzalez C Rafael, Woods E R ichard. 数字图像处理(第二版)M , 北京: 电子工业出版社, 2003: 463 474 7Canny J. A computational app roach to edge detection J . IEEE Transactions on Pattern A nalysis and M ach ine Intelligence,1

37、986, 8 8Dem igny D, Kam le T. A discrete exp ression of Cannys criteria for step edge detecto r perfo rmances evaluation J . IEEE Transactions on Pattern A nalysis and M ach ine Intelligence, 1997, 19 (6) : 1199 1211. 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 20 附录附录 1 1 视网膜血管分割系统视网膜血管分割系统 处理图像的程序(Canny,S

38、obel 等): /专门用来出来图像分割的一个类 class ImgSegment : public ImgCenterDib public: /输出图像每像素的位数 int m_nBitCountOut; /输出图像位图数据指针 unsigned char * m_lpImgDataOut; /输出图像的颜色表 LPRGBQUAD m_lpColorTableOut; private: int m_imgWidthOut; int m_imgHeightOut; int m_nColorTableLengthOut; public: ImgSegment(); ImgSegment(CSiz

39、e size,int nBitCount,LPRGBQUAD lpColorTable,unsigned char *pImgData); 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 21 ImgSegment(); CSize GetDimensions(); void Reberts(); void Canny(); void Laplacian(); void LOG(); int ComputeGrad(int X_Grad,int Y_Grad );/求梯度的函数 /阈值估计 void EstimateThreshold(unsigned char * i

40、mgIn, int nWidth, int nHeight, int *pnThdHigh,int *pnThdLow, unsigned char * imgOut, double dRatioHigh, double dRationLow); /最后的边缘连接函数 void Hysteresis(unsigned char * imgIn, int nWidth, int nHeight, double dRatioLow,double dRatioHigh, unsigned char *imgOut); /也是最后边缘连接的一个函数,用来自我调用 void TraceEdge (int

41、 y, int x, int nLowThd, unsigned char *pUnchEdge, unsigned char *pnMag, int nWidth); /非极大值控制 void NoMaxSuppress(unsigned char * imgIn, unsigned char * img_GradX,unsigned char * img_GradY,int nWidth,int nHeigth,unsigned char * imgOut ); private: /模板卷积函数 void TemplateEdge(unsigned char * imgIn,int wid

42、th,int height,int nBitCount,int *mask,int maskW,int maskH,unsigned char * ; void ImgSegment:Canny() /定义高斯模板 int G_mask25; G_mask0 = 2; G_mask1 = 4; G_mask2 = 5; G_mask3 = 4; 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 22 G_mask4 = 2; G_mask5 = 4; G_mask6 = 9; G_mask7 = 12; G_mask8 = 9; G_mask9 = 4; G_mask10

43、 =5; G_mask11 = 12; G_mask12 = 15; G_mask13 = 12; G_mask14 = 5; G_mask15 = 4; G_mask16 = 9; G_mask17 = 12; G_mask18 = 9; G_mask19 = 4; G_mask20 = 2; G_mask21 = 4; G_mask22 = 5; G_mask23 = 4; G_mask24 = 2; int Grad_maskX9; int Grad_maskY9; Grad_maskX0 = 0; Grad_maskX1 = 0; Grad_maskX2 = 0; Grad_maskX

44、3 = -1; Grad_maskX4 = 0; Grad_maskX5 = 1; Grad_maskX6 = 0; Grad_maskX7 = 0; Grad_maskX8 = 0; Grad_maskY0 = 0; Grad_maskY1 = -1; Grad_maskY2 = 0; Grad_maskY3 = 0; Grad_maskY4 = 0; Grad_maskY5 = 0; Grad_maskY6 = 0; Grad_maskY7 = 1; 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 23 Grad_maskY8 = 0; if(this-m_lpIm

45、gDataOut != NULL) delete m_lpImgDataOut; m_lpImgDataOut = NULL; if(this-m_lpColorTableOut != NULL) delete m_lpColorTableOut; m_lpColorTableOut = NULL; this-m_nBitCountOut = m_nBitcount; this-m_nColorTableLengthOut = this-ComputeColorTableLength(this- m_nBitCountOut); if(m_nColorTableLengthOut != 0)

46、this-m_lpColorTableOut = new RGBQUADthis- m_nColorTableLengthOut; memcpy(this-m_lpColorTableOut,m_lpColorTable,sizeof(RGBQUAD) * this-m_nColorTableLengthOut); this-m_imgHeightOut = this-m_imgHeight; this-m_imgWidthOut = this-m_imgWidth; int LineByte = (this-m_imgWidth * this-m_nBitcount/8 + 3 ) / 4

47、* 4; /临时变量 unsigned char * T_ImgDataOut_G; unsigned char * T_ImgDataOut_X; unsigned char * T_ImgDataOut_Y; unsigned char * T_ImgDataOut_S; T_ImgDataOut_G = new unsigned charLineByte * this-m_imgWidthOut; T_ImgDataOut_X = new unsigned charLineByte * this-m_imgWidthOut; T_ImgDataOut_Y = new unsigned c

48、harLineByte * this-m_imgWidthOut; T_ImgDataOut_S = new unsigned charLineByte * this-m_imgWidthOut; 浙江省“新苗人才计划”项目 视网膜血管分割系统设计与实现 项目研究报告 24 / this-m_lpImgDataOut = new unsigned charLineByte * this- m_imgWidthOut; /Gauss 平滑 this-TemplateEdge(m_pImgData,this-m_imgWidth,this- m_imgHeight,this-m_nBitcount,G_mask,5,5,T_ImgDataOut_G,false); /求 X 的梯度 this-TemplateEdge(T_ImgDataOut_G,this-m_imgWidth,this- m_imgHeight,this-m_nBitcount,Grad_maskX,3,3,T_ImgDataOut_X,true); /求 Y 的梯度 this-TemplateEdge(T_ImgDataOut_G,this-m_imgWidth,this- m_imgHeight,this-m_nBitcount,Grad_maskY

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

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


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