当前位置:首页 > 特征提取方法
4.2.2 特征提取方法
图像经过一系列的预处理之后,原来大小不同、分布不规则的各个字符变成了一个个大小相同、排列整齐的字符。下面接要从被分割归一处理完毕的字符中,提取最能体现这个字符特点的特征向量。将提取出训练样本中的特征向量代入BP网络之中就可以对网络进行训练,提取出待识别的样本中的特征向量代入到训练好的BP网络中,就可以对汉字进行识别。
特征向量的提取方法多种多样,可以分为基于结构特征的方法和基于像素分布特征的方法,下面给予简单介绍,并说明本文所用的方法。
(1)结构特征。结构特征充分利用了字符本身的特点,由于车牌字符通常都是较规范的印刷体,因此可以较容易地从字符图像上得到它的字符笔画信息,并可根据这些信息来判别字符。例如,汉字的笔画可以简化为4类:横、竖、左斜和右斜。根据长度不同又可分为长横、短横、长竖和短竖等。将汉字分块,并提取每一块的笔画特征,就可得到一个关于笔画的矩阵,以此作为特征来识别汉字。
(2)像素分布特征。像素分布特征的提取方法很多,常见的有水平、垂直投影的特征,微结构特征和周边特征等。水平、垂直投影的特征是计算字符图像在水平和垂直方向上像素值的多少,以此作为特征。微结构法将图像分为几个小块,统计每个小块的像素分布。周边特征则计算从边界到字符的距离。优点是排除了尺寸、方向变化带来的干扰,缺点是当字符出现笔划融合、断裂、部分缺失时不适用。
①逐像素特征提取法
这是一种最简单的特征提取方法。它可以对图像进行逐行逐列的扫描,当遇到黑色像素时取其特征值为1,遇到白色像素时取其特征值为0,这样当扫描结束后就获得一个维数与图像中的像素点的个数相同的特征向量矩阵。
这种特征提取方法的特点就是算法简单,运算速度快,可以使BP网络很快的收敛,训练效果好,更重要的是对于数字图像这样特征较少的图像,这种方法提取的信息量最大,所以对于本系统来说,这种方法较为适用。但是它的缺点也很明显,就是适应性不强,所以本文没有选用这种方法。
②骨架特征提取法
两幅图像由于它们的线条的粗细不同,使得两幅图像差别很大,但是将它们的线条进行细化后,统一到相同的宽度,如一个像素宽时,这是两幅图像的差距就不那么明显。利用图形的骨架作为特征来进行数码识别,就使得识别有了一定的适应性。一般使用细化的方法来提取骨架,细化的算法有很多,如Hilditch算法、Rosenfeld算法等。对经过细化的图像利用EveryPixel函数进行处理就可以得到细化后图像的特征向量矩阵。骨架特征提取的方法对于线条粗细不同的数码有一定的适应性,但是图像一旦出现偏移就难以识别。 ③微结构法
本文使用此方法实现车牌汉字的识别。其具体算法是:
微结构法将图像分为几个小块,统计每个小块的像素分布。本文提取出汉字的39个特征,存储在数组f[0]~f[38]中。具体算法可分为四步:
图4.1 图4.2 图4.3 图4.4
步骤一:把字符平均分成9份,如图4.1所示,给每一份编号如图4.2,统计每一份内黑色像素的个数,存储在数字tz[0]~tz[9]中,统计在行方向和列方向上每一份内的黑色像素个数和与之相邻的一份内黑色像素个数的比值作为一个特征,例如:行方向上提取特征f[0]=tz[1]/ tz[0],f[1]=tz[2]/ tz[1],f[2]=tz[0]/ tz[2],…,f[8]=tz[6]/ tz[8];列方向上f[9]=tz[3]/ tz[0],f[10]=tz[6]/ tz[3],f[11]=tz[0]/ tz[6],…,f[17]=tz[2]/ tz[8],共18个特征。
步骤二:把字符横向分成三份,如图4.3所示,统计每一份内的黑色像素个数,每一份内的黑色像素个数与前一份内黑色像素个数的比值作为一个特征,f[18]=tz[10]/ tz[9],f[19]=tz[11]/ tz[10],f[20]=tz[9]/ tz[11];把字符纵向分成三份,如图4.4所示,统计每一份内的黑色像素个数,每一份内的黑色像素个数与前一份内黑色像素个数的比值作为一个特征,f[21]=tz[13]/ tz[12],f[22]=tz[14]/ tz[13],f[23]=tz[12]/ tz[14];共六个特征。
步骤三:如图4.5,在竖直方向上找出三列,统计在该列中跳变点的个数,
即相邻点像素值从0变到255的次数,共三个特征,记为f[24],f[25],f[26];在水平方向上找出三行列,统计在该行中跳变点的个数,即相邻点象素值从0变到255的次数,共三个特征,记为f[27],f[28],f[29]。
图4.5
步骤四:把每一份内黑色象素的个数tz[0]~tz[9],作为9个特征,记为:f[30]~f[38]。
这样得到汉字的共39个特征,根据这些特征就可以区分每个车牌汉字,进行识别。
共分享92篇相关文档