方向线素特征介绍张睿,2010.101. 输入:二值字符图像2. 产生字符轮廓:3. 计算每个像素的方向矢量:在局部区域里(以3X3区域为例)计算中心像素的方向矢量该矢量通常是4维,对应“横、竖、撇、捺”4个方向也可以是8维矢量,即在4个方向基础上,对轮廓做顺时针跟踪,将每个方向又分成2个指向,例如:“横”可以分成“左向横”和“右向横”以4维矢量为例:在3X3区域里包围中心点的8个像素可以产生256种组合然后根据线段的方向分别给矢量的4个元素赋值这个过程可以通过查表实现横分量竖分量撇分量捺分量0.500.5010000.5000.50001… ...4. 图像分块:将字符图像均匀分成NXN块(以8X8为例)然后对每个分块中的所有像素的4维矢量求和于是产生了8X8X4=256维的矢量,该矢量即是“方向线素特征”5. 一种改进是对分块的边缘进行模糊化处理,即相邻分块之间有部分重叠区域,对分块中所有像素的矢量求和过程中,计算加权和,重叠部分的权重低,越远离分块中心权重越低方向线素的补充-具体实现方式以上所述是原理性说明,在具体实现的时候上面的第2步和第3步,即边缘提取和方向矢量分解,可以同时完成。
计算机实现的过程是对字符图像的所有像素进行遍历,假设遍历到的当前像素标示为如下图所示的蓝色可以在3X3区域内,根据当前像素及周围8个像素的颜色(黑或白),来判断当前像素是否是边缘像素以及取得当前像素的方向矢量如果当前像素是白色,即当前像素是背景点(不是笔画点),则当前像素的方向矢量是[0, 0, 0, 0]如果当前像素是黑色,即当前像素是笔画点,则需要通过查表来判断该像素是否是边缘,以及得到它的方向矢量由上图可见,我们已经对周围的8个像素做了编号,他们记为:[ A7, A6, A5, A4, A3, A2, A1, A0 ]如果Ai (i=0,…,7)是黑色,则取值为1,如果是白色,则取值是0于是8个像素的所有颜色排列共有256种,即:[0 0 0 0 0 0 0 0][0 0 0 0 0 0 0 1][0 0 0 0 0 0 1 0][0 0 0 0 0 0 1 1][0 0 0 0 0 1 0 0][0 0 0 0 0 1 0 1][0 0 0 0 0 1 1 0]… …… …[1 1 1 1 1 1 0 1][1 1 1 1 1 1 1 0][1 1 1 1 1 1 1 1]根据每种颜色组合,和上面第3步的原理,为每个颜色组合人工定义方向矢量。
例如:当组合为[0 0 0 0 0 0 0 0]时,图像是,当前像素实现上是“孤立”像素,它的方向矢量不存在,即方向矢量是 [0, 0, 0, 0]当组合为[1 1 1 1 1 1 1 1]时,图像是,当前像素不是边缘点,它的方向矢量也是 [0, 0, 0, 0]当组合为[0 0 1 1 1 1 1 1]时,图像是,当前像素是边缘点,它的方向矢量根据上面第3步的原理,取值是[0.5, 0, 0.5, 0]依此方法,所有组合都可以给出方向矢量的取值,这个过程完全是人工预先设定好的计算机只需要通过查表就可以直接得到当前像素的方向矢量结果如果只考虑四方向分解,即“四方向线素特征”,则和的方向矢量相同,都是[0.5, 0, 0.5, 0]当进行八方向分解时,上面两个图像的结果则完成不同,分别是[0.5, 0, 0.5, 0, 0, 0, 0, 0]和[0, 0, 0, 0, 0.5, 0, 0.5, 0]同理,在八方向线素特征中所有组合的八方向矢量结果也是人工预先定好的特征的作用是对字符图像进行数值化描述,并尽可能使其具有好的可分性当轮廓方向和宽度变化的时候,方向线素特征的结果也会发生变化但是只要这种变化不在不同种类字符之间产生混淆,就可以通过大量样本学习和分类器设计来获得最终的正确识别结果。
本人发表的多篇文章(请用Rui Zhang, Xiaoqing Ding在网上查询)中所使用的特征均是上述的“方向线素特征”,该特征是目前字符识别最有效的特征之一。