毕业设计中期报告
毕毕业业设设计计((论论文文))中中期期报报告告 题题 目病例识别系统实现目病例识别系统实现 院院 (系)(系) 计算机科学与技术学院 专专业业计算机科学与技术 学学生生林陶然 学学号号 1 班班号号 1203106 指导教师指导教师张英涛 中期报告日期中期报告日期2016 年 4 月 25 日 哈尔滨工业大学教务处制哈尔滨工业大学教务处制 20162016 年年 4 4 月月 目录目录 一.工作完成情况一.工作完成情况-----------------------------------------------------1-----------------------------------------------------1 二.已完成的研究工作及结果二.已完成的研究工作及结果-------------------------------------------1-------------------------------------------1 三.目前存在的问题及解决方法三.目前存在的问题及解决方法-----------------------------------------5-----------------------------------------5 四.后期拟完成的研究工作及进度安排四.后期拟完成的研究工作及进度安排-----------------------------------5-----------------------------------5 五.参考文献五.参考文献---------------------------------------------------------6---------------------------------------------------------6 一、工作完成情况一、工作完成情况 经过为期一个多月的学习研究以及不断的寻求解决问题的办法,我很好地处理了 通过手机拍摄的医疗表单图像,完成了对于图像的灰度处理,二值化处理,倾斜校正, 去除杂质处理之后,终于将其中的关键数据分行分列的从图片中分割出来,最后将分 好的每一个小块部分进行处理,获得了单个的字符,以便我以后将要进行的字符识别 工作。 二、二、已完成的研究工作及结果 已完成的研究工作及结果 1.1. 对图像的预处理过程对图像的预处理过程 对图像的预处理过程包括图像增强,灰度化,和二值化过程,中值滤波,倾斜校 正等等。 在图像进行灰度化处理之前,由于光线环境等等问题,首先对图片进行一次自动 增强操作。 调用了 autoenhance 函数,根据预先设定的效果范围来调整图像的亮度,颜色和对 比度。 对图像的灰度化处理则直接使用 matlab 中现有的灰度图转化函数 rgb2gray()即 可。关于这个函数的具体内容在此就不再赘述。可以在 matlab 中查看。 而二值化方法的选择就显得尤为要,很大程度上影响了后续的分行分列的字符提 取效果。这里我一开始采用的迭代二值化的处理方法,并发现了一些问题。由于拍照 的光线不均,决定以后将采用自适应阈值法。 1.11.1 中值滤波中值滤波 Matlab 中有现成的 medfilt2中值滤波函数可供调用。在此简述一下他的实现过 程和作用。 中值滤波的基本原理就是把一点的值用规定的该点对应的一个邻域中各点值的中 值来代替。本人所采用的是[3*3]的窗口大小。 (1)将模板中心与像素点重合; (2)读取模板中各对应像素的值; (3)将这些灰度值由小至大排列; (4)取中值代替该像素点的值。 中值滤波对孤立的噪声像素即椒盐噪声、脉冲噪声具有良好的滤波效果。对于本 系统来说,它消除杂点有很好的效果。 1选择一个初始的阈值 T,T 的取值方法很简单,整张图片的最高灰度值和最低 灰度值之和的一半; 2将新的阈值 TT 赋值为 0,并设置一个范围为 allow,d|T-TT|; 3遍历整张图片,将灰度值大于 T 的点的灰度值作和并除以个数得到平均值 T0, 同理,将灰度值小于T 的点作处理得到 T1;将T0 与 T1 作平均得到 TT,d|T-TT|。将 TT 的值赋给 T 4如果 d 的值大于等于预先设置的范围 allow,就重复进行( 3)的过程直至最后 得到一个新的迭代阈值 T。根据这个 T 将图片二值化。 1处理结果 可以看到这种二值化的整体效果很好,但是部分文字有笔画丢失的现象,而且对 于光照不均的图像将会产生很多的误差点。如下图 2产生误差的原因迭代化的二值化方法是对整张图像的所有像素点的像素值都 基于设定的范围作了平均化操作,然而对于光照不均的图像,每一个区域的阈值的 allow 值都应该有所不同,而迭代化二值化方法无法做到所以产生了误差。 而且对于不同的图片要自己选取合适的 allow 值,不够智能。 1.31.3 对图像的倾斜校正对图像的倾斜校正 通过对图像的倾斜校正可以使二值化之后的图像极方便地就能获得后续的水平和 垂直投影,进而使对整个图像的分块和每块中单个字符的分割变得准确而又简单。 (1)设定参数,并以此参数对二值化后的图像进行膨胀过程 (2)对膨胀后的图像进行数学形态学运算 bwmorphBW,thin,Inf,其中 thin 表示操作为细化,Inf 则表示将一直对图像作同样的形态学处理直至不再发生变 化。通过这步操作可以将图像缩成连通线。 (3)通过霍夫函数拟合出细化图片中的直线,并计算这条直线的斜率,转化为旋 转角,对图片进行旋转。即得到了倾斜校正之后的图像。 1.3.21.3.2 倾斜校正的结果与分析倾斜校正的结果与分析 可以看到通过倾斜校正,图片变成了我们熟悉的文档格式,有着水平的行和垂直 的列,下面将通过水平和垂直的投影,来将每一行每一列的信息分割出来。 1.41.4 开运算排除干扰点开运算排除干扰点 倾斜校正之后的图像我们可以看到还有很多的干扰点,通过开运算函数 bwareaopen可以排除图像中的干扰点使分割处理更加准确。下图为开运算的处理效 果 2.2. 对图像的分割处理对图像的分割处理 由于医疗表单数据通常都是行列分明而且有着统一的格式,字与字之间都是对齐 而且有间距的,通过行分割与列分割,将图像分为对应的小块,再将每一块中的字符 进行识别,就可以直接将行与列的信息与以后要输出的 excel 表格关联起来,很便捷。 2.12.1 对图像的行分割与列分割对图像的行分割与列分割 在进行行分割与列分割,先要对图片的水平和垂直分量进行投影操作,通过观察 投影的波形图,我们可以清楚地看到每行每列的位置与投影的波谷的对应关系。 2.1.12.1.1 水平与垂直投影过程与效果水平与垂直投影过程与效果 水平(垂直)投影的获取过程很简单,先获取图像的纵(横)坐标范围,在这个 大小范围内,对每一行(列)的像素值进行累加。 可以看到,上图有13 行,而水平投影曲线中有13 个零点,是互相对应的。 下面将以行分割为例,介绍图像分块的过程。 数组 H,J 分别用于保存一行的起点与结束点。 对于 x 坐标由 i 到图像的高度 M 遍历,如