基于模板匹配算法的字符识别系统研究与实现内容摘要:
2, N4, N6 中至少有三个元素为黑,则,将 P 改为黑,否则不变。 (2)当 P 为黑时,如果: (a)N4, N3, N2 中至少有 1 个为黑,同时 N6, N7 和 N0 中也至少有一个为黑; (b)N2, N1, N0 中至少有一个为黑,同时 N4, N5 和 N6 中也至少有一个为黑,则 P 不变,否则改为白。 噪声处理 噪声处理是一个重要而复杂的工作,通过扫描得到的字符图像有时含有噪声,这些噪声可能是因为纸张质量,污点,扫描通道的碎物或其它干扰造成的。 这些噪声的存在,增加了数字识别的难度,较容易导致误识,拒识。 如能较好地滤除噪声,无疑会为正确识别带来方便。 由于阿拉伯数字 0~9 和英文大写字母均为由连续笔划组成的字符,因此若检测到字 符扫描图像中的笔划数超过 1,则认为该字符图像中肯定存在噪声或者断笔,需加以去噪声或连断笔处理。 将多余的噪声去掉,或将断笔连在主体笔划上。 而噪声和断笔的区分则可通过设定阈值来实现。 具体的方法如下: 设 F(i,j),0 i m,0 j n,,为二值图象,令 A 为二值图象平面上的一个 N N 的窗口区 域,令 A 为包含 A 的 (N+2) (N+2)的窗口区域,若 AjijiF ),(),(=AjijiF ),(),( 0 则我们认为窗口区域 A 中的笔划为噪声或断笔。 通过让窗口 A 在图像平面上浮动,可检测到的笔划判断为噪声;另 N=5,并将检测到的笔划判断为断笔。 对于检测到的噪声,只需要对应的窗口 区域 A 中所有的黑点变为白点,即可将噪声去除。 BMP 图像的存储结构 设备无关位图 (DeviceIndependent Bitmap)DIB 是标准的 Windows 位图格式, DIB自带颜色信息,因此调色板管理非常容易。 任何运行 Windows 的计算机都可以处理DIB,它通常以 BMP 文件的形式被保存在磁盘中。 BMP 文件中包含了一个 DIB,一个 BPM 文件大体上分成如下 4 个部分。 如 表 3— 1 所示: 文件信息头 BITMAPFILEHEARDER 位图信息头结构 BITMAPINFOHEADER 调色板 Palette 位图象素数据 DIB Pixels 表 3— 1 Windows DIB 的组成 位图文件头:主要用于识别位图文件,下面是位图文件头结构定义: Typedef struct tagBITMAPFILEHEADER { UNIT bfType。 DWORD bfSize。 UNIT bfReserved1。 UNIT bfReserved2。 合肥学院 计算机科学与技术系 07 届毕业论文设计 15 DWORD bfOffbits。 } BITMAPFILEHEADER。 其中 , bfType 表示文件类型,必须是 0X424D,即值 应该 是“ BM”,标志该文件是 BMP 位图文件。 bfSize 的值是位图文件的大小。 bfReserved1 和 bfReserved2 为保留字,不用考虑。 bfOffbits 为从文件头 到实际的位图的数据的偏移字节数。 位图信息头:包含了单个象素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位图平面书、图 像 的压缩格式。 以下是位图信息头结构的定义: Typedef struct tagBITMAPINFOHEADER { DWORS biSize。 LONG biWidth。 LONG biHeight。 WORD biplanes。 WORD biBicCount。 DWORD biCompression。 DWORD biSizeImage。 LONG biXPelPerMeter。 LONG biYPelsPerMeter。 DWORD biClrUsed。 DWORD biClrImportant。 } BITMAPINFOHEADER。 表 3— 2 是对上述结构体中各个成员的说明。 结构成员 说明 bitSize 结构 BITMAPINFOHEADER 的字节数,( 40 字节) biWidth 以象素为单位的图像宽度 biHeight 以象素为单位的图像的高度 biplanes 目标设备的位平面数,必须是 1,不用考虑 biBitCount 每个象素的位数 biCompression 图像压缩格式 biSizeImage 以字节为单位的图像数据的大小 biXPelsPermeter 表示目标设备的水平分辨率 biYpelsPerMeter 表示目标设备的垂直分辨率 biClrused 调色板中实际使用的颜色数 biClrImportant 实现位图时必须的颜色数 表 3— 2 其中, biBitCount 分别有如下的意义: 0:用在 JPEG 格式中。 1:单色图,调色板中含有两种颜色,通常说的黑白二色图。 4: 16 色图。 8: 256 色图,通常说的灰度图。 16: 64K 图,一般没有调色板,图像数据中每两个字节表示一个象素。 24: 16M 真彩色图,没有调色板, 图像数据中每 3 个字节表示一个象素。 合肥学院 计算机科学与技术系 07 届毕业论文设计 16 32: 4G 真彩色,一般没有调色板,每 4 个字表表示一个象素,相对 24 位 真彩色图 而言,加入了一个透明度,即 RGBA 模式。 biClrused:这个值通常为 0,表示使用 biBitCount 确定的全部颜色。 biClrImportant:这个值通常为 0,表示所有颜色都是必须的。 调色板 (Palette):有些位图需要调色板,有些位图,如真彩色图,不需要 调色板,它 们的 BITMAPINFOHEADER 后面直接是位图数据。 调色板实际上 是一个数组,调色板是由颜色表项组成的,调色板结构如下: Typedef struct tagRGBQUAD { BYTE rgbBlue。 BYTE rgbGreen。 BYTE rgbRed。 BYTE rgbReserved。 } RGBQUAD。 需要注意的是, RGBQUARD 结构中的颜色顺序是 BGR。 位图数据: 在位图头文件、位图信息头、调色板之后,便是位图的主体部分:位图数据。 根据不同的位图,位图数据所占据的字节数也是不同的,比如,对于 8 位位图,每个字节代表了一个象素, 对于 16 位位图,每两个字节代表了一个象素,对于24 位位图,每三个字节代表了 1 个象素,对于 32 位位图,每 4 个字节代表了一个象素。 图像的颜色处理 在真彩色系统中,图像的颜色与真实世界中的颜色非常自然逼近,人眼难以区分他们的差别,通常使用 RGB 表示法来表现真彩色图像,每一个象素的值用 24 位表示,红、绿、蓝三原色的浓度分别用一个字节来表示。 但对于仅能同时显示 16 色或者 256 色的系统,每一个象素仅能分别采用 4 位或者 8 位表示,象素值与真彩色的颜色值不能一一对应,这时就必须采用调色板技术。 所谓调色板就是在 16 色或者 256色 的 显示系统中,由图像出现的最频繁的 16 中颜色或者 256 种颜色所组成的频色表,颜色表中的值是某种颜色在颜色查找表中的索引值。 当 需要对颜色位数进行转换 时,可用 八叉树颜色量化算法进行转换。 这种方法首先扫描所有的象素,每遇到一种新的颜色就把它放到八叉树中,并创建一个叶子节点,图像扫描结束后,如果叶节点的数量大于调色板所需的颜色数,就将某些叶节点合并到其上一层节点中 (父节点 )去,并将 父节点变为叶节点,这样进行下去直到叶节点的数量等于或者小于调色板所需的颜色数,之后遍历八叉树,将叶节点的颜色填入调色板 的颜色表中。 图像的二值化 实际上在使用的图像处理系统中,处理的对象主要是二值图像。 这是因为在使用的系统中,要求处理的速度高、成本低,所以信息量大的灰阶图像的处理占用太大的部分不是好办法。 因此希望尽可能用二值图像的形式进行处理。 图像信息和背景信息分别对应图像灰度直方图,因此可以通过灰度直方图选择一个阈值把整个图像分成图合肥学院 计算机科学与技术系 07 届毕业论文设计 17 像信息和背景信息两部分,从而把灰度图像转化为黑白二值图像。 图像的灰度直方图是将图像中的象素按其灰度值大小进行组合,所构成的象素数量随灰度级变化的函数的图形形式。 通常,灰度直方图的横轴表示灰度 值,纵轴用来表示频度。 频度,是指具有某一灰度值的象素在图像中出现的次数或者在图像中占总象素的百分比。 如图 3— 2 所示。 图 3— 2 具有二值倾向的灰度直方图 图 像 二值化可根据下面的 阈值处理来进行: 一般采用设定某一阈值,用阈值将图像的数据分成大于阈值和小于阈值的象素群。 例如,输入的函数是 f(x,y),输出的图像是 f\ (x,y)。 如果用灰度变换的方法来研究 f(x,y),其灰度变换函数 为: f\ (x,y)= 时,当 时,当 ),(0 ),(1 yxf yxf 其中: 为阈值。 输出的图像的灰度值大于阈值,其数据点值取 1;反之取 0。 这种灰度变换的方法,成为图像的二值化。 二值化处理就是把图像 f(x,y)分为对象物和背景两个领域,然后求其阈值。 在数字化的图像数据中,无用的背景数据和对象物的数据常常混在一起。 除次之外,在图像中还含有其它的各种噪声。 所以阈值 选取必须根据实际情况进行调节。 这里的关键问题是阈值 的确定方法。 因为灰度图像二值化后可能丢失掉原图像中的一些信息,如果阈值选择不当,二值化后的图像有可能与原图像相差很大,不能正确的反映原图像,这样,二值化就失去了意义 /因为图像二值化的目的是要在尽可能多的保留原图像特征的前提下舍弃冗余信息。 所以阈值的正确选择很重要。 系统中二值化的代码实现如下: void CDigitClass::BinaryDigit(BYTE thre) { digitWidth = ()。 digitHeight = ()。 LONG x, y。 for(x=0。 xdigitWidth。 x++) { for(y=0。 ydigitHeight。 y++) 合肥学院 计算机科学与技术系 07 届毕业论文设计 18 { if(digitarray[x][y] = thre) digitarray[x][y]=(BYTE)1。 else digitarray[x][y]=(BYTE)0。 } } } 图像的细化 细化的定义 经过预处理,待细化的图像 是 0, 1 二值图象。 象素值为 1 的是需要细化的部分,象素值为 0 的是背景区域。 一个图像的“骨架”是指图像的中央的骨骼部分,可以理解为图像的中轴。 例如一个长方形的骨架是它的长方向上的中轴线;正方形的骨架是他的中心点;圆的骨架是他的圆心;直线的骨架是它自身;孤立点的骨架也是它自身。 骨架是描述图像几何及拓扑性质的重要特征之一。 求图像骨架的过程通常称为对图像“细化”的过程。 细化的要求 在字符识别系统中,为减少数据量,准确提取特征,常常需要采用细化算法。 不过字符经过细化后,将不可避免地丢失部分信息。 因此 是否细化应根据实际情况而定。 但一旦决定对字符进行细化,则对细化结果的好坏,将直接影响着识别率。 一般来说,细化有以下的基本的要求: (1)细化要保持原有字符的连续性,不能使本来相连的笔划断开。 (2)要细化成 1 象素的骨架,骨架应接近原笔划的中心线。 (3)不要产生严重的畸变, 对 噪声不敏感。 (4)保留字符原有的拓扑,几何特征,特别是一些明显的拐角不应被光滑掉。 Hilditch 算法描述 Hilditch 细化算法描述 Hilditch 提出了一种串行细化算法,由于该算法是 Hilditch提出的, 就叫做 Hilditch算法。 Hilditch 详细讲述了该算法的思想,但没有给出这种算法地一个简洁的表达式。 Hilditch 细化算法是一种串行算法。 这种方法需要对整幅图像作多次扫描,在每一次扫描过程中。 一些满足给定条件的象素点将被标记,在本次扫描结束后,再将这些标记的象素点删除,然后开始下一次扫描,直到在某一次扫描过程中,再没有象素点被标记,整个细化过程结束。 通常在二值图象中,象素点的值为 1 或者 0,值为 1 的点,称为黑点,也是前景点,即图形象素;值为 0 的点,称为白点,也是背景点。 在细化算法中,每一次 扫描过程中,一个黑点,即图形象素点必须满足下面的条件才能被删除: (1)该点是一个边界点。 合肥学院 计算机科学与技术系 07 届毕业论。基于模板匹配算法的字符识别系统研究与实现
相关推荐
时间增长。 为了实现在允许条件下的最快起动,关键是要获得一段使电流保持为最大值的恒流过程。 按照反馈控制规律,采用某个物理量的负反馈就可以保持该量基本不变,那么,采用电流负反馈应该能够得到近似的恒流过程。 现在的问题是,我们希望能实现 控制 是, 起动过程,只有电流负反馈,没有转速负反馈;稳态时,只有转速负反馈,没有电流负反馈。 怎样才能做到这种既存在转速和电流两种负反馈
很显然,人机接口装置越完备,其能实现的功能也越强,这样也越能增加产品的功能和亲合力。 控制对象可以是电炉也可以是油炉,如果是电炉执行器将会是晶闸管,也可以是静态或固态继电器;如果对象是油炉,执行器可以选择为调节阀,控制输入到油炉的油量大小。 基于模糊算法的温度控制系统,可用各类处理器,如微机、单片机、 DSP 等作为模糊控制器,其内部运行模糊算法程序,用于根据输入
象,模糊控制策略是较为适宜采用的一种方案。 检测装置一般包括传感器和变送装置。 它们检测各种非电量如温度、流量、压力、液位、转速、角度、浓度、成分等并变换放大为标准的电信号,包括模拟的或数字的等形式。 在某些场合,检测量也可能是电量。 与一般 的自动控制系统一样,模糊控制需要能够提供实时数据的在线检测装置,对于有较大滞后的各种离线分析仪器,往往不能满足模糊控制实时性的要求。
第 15 页 共 40 页 图 2 方向信 号 DIR (2) FX 模块的工作原理 FX 是用于位置控制的智能单元。 它可以为步进电机驱动器或伺服电机驱动器 提供控制 脉冲,以控制运动部件的位置和速度。 a) 性能指标 l 每个单元可以控制一个轴。 l 输出控制脉冲 :8388607~+8388606。 l 脉冲速率 :1~99990 个 /s。 l 脉冲速率 的 变化
................................. 15 系统开发环境及设备 ..................................................................................... 15 调试步骤 ..........................................................
4 位光刻 ROM、温度传感器、非易失性的温度报警触发器和配置寄存器。 此外,还有电源检测模块、存储和控制逻辑器、中间结果缓存器和 8位循环冗余校验码( CRC)发生 器。 DS18B20 将温度传感器、 A/D 传感器、寄存器、接口电路集成在一个芯片中 , 代替模拟温度传感器和信号处理电路 ,直接与单片机沟通 ,完成温度采集和数据处理,具有直接数字化输出、测试及控制功能强、传输距离远