值大于T的点的灰度值作和并除以个数得到平均值T0,同理,将灰度值小于T的点作处理得到T1;将T0与T1作平均得到TT,dTTT。将TT的值赋给T4如果d的值大于等于预先设置的范围allow,就重复进行(3)的过程直至最后得到一个新的迭代阈值T。根据这个T将图片二值化。1处理结果:可以看到这种二值化的整体效果很好,但是部分文字有笔画丢失的现象,而且对于光照不均的图像将会产生很多的误差点。如下图2产生误差的原因:迭代化的二值化方法是对整张图像的所有像素点的像素值都基于设定的范围作了平均化操作,然而对于光照不均的图像,每一个区域的阈值的allow值都应该有所不同,而迭代化二值化方法无法做到所以产生了误差。而且对于不同的图片要自己选取合适的allow值,不够智能。
13对图像的倾斜校正通过对图像的倾斜校正可以使二值化之后的图像极方便地就能获得后续的水平和垂直投影,进而使对整个图像的分块和每块中单个字符的分割变得准确而又简单。
(1)设定参数,并以此参数对二值化后的图像进行膨胀过程(2)对膨胀后的图像进行数学形态学运算bwmorphBWthi
I
f,其中thi
表示操作为细化,I
f则表示将一直对图像作同样的形态学处理直至不再发生变化。通过这步操作可以将图像缩成连通线。
f(3)通过霍夫函数拟合出细化图片中的直线,并计算这条直线的斜率,转化为旋转角,对图片进行旋转。即得到了倾斜校正之后的图像。132倾斜校正的结果与分析可以看到通过倾斜校正,图片变成了我们熟悉的文档格式,有着水平的行和垂直的列,下面将通过水平和垂直的投影,来将每一行每一列的信息分割出来。14开运算排除干扰点倾斜校正之后的图像我们可以看到还有很多的干扰点,通过开运算函数bwareaope
可以排除图像中的干扰点使分割处理更加准确。下图为开运算的处理效果
2对图像的分割处理
由于医疗表单数据通常都是行列分明而且有着统一的格式,字与字之间都是对齐而且有间距的,通过行分割与列分割,将图像分为对应的小块,再将每一块中的字符进行识别,就可以直接将行与列的信息与以后要输出的excel表格关联起来,很便捷。
21对图像的行分割与列分割在进行行分割与列分割,先要对图片的水平和垂直分量进行投影操作,通过观察投影的波形图,我们可以清楚地看到每行每列的位置与投影的波谷的对应关系。211水平与垂直投影过程与效果水平(垂直)投影的获取过程很简单,先获取图像的纵(横)坐标范围,在这个大小范围内,对每一行(列)的r