赞
踩
数图大作业我们组选了基于模板匹配的文字识别这个题目。老师提供了多行文字行列分割参考程序(CVI 5.0),我参照了例程的思路,在CVI2012环境下完成了预处理、行列分割以及模板匹配算法设计和代码编程。

1.模板图像和测试图像均由“画图”程序裁剪而成,注意模板图像和测试图像需要缩放至同一尺寸,方便进行匹配,这部分可以用 imaqResample 函数来完成。例如:
将 splitImage 图片缩放成 60 * 60 的大小,并保存至 dstImage 。
为了防止切割到汉字,可以先进行列分割和行分割,再进行缩放。
imaqResample (dstImage, splitImage, 60, 60, IMAQ_ZERO_ORDER, IMAQ_NO_RECT);
2.为了方便后面的行列分割,图像预处理部分需要完成输入的测试图像的二值化和反色,经过二值化后的图像灰度值仅有 0 和 255 ,经过反色处理后白色像素点变成黑色像素点,即灰度值从 255 变成 0。二值化可以用 imaqThreshold 函数完成,反色可以用 imaqNor 函数完成。
二值化和反色处理代码如下:
imaqThreshold(binImage, srcImage, 100, 255, TRUE, 255);
// 二值化:灰度值如果超过100,则替换为255,否则为0
imaqNor(binImage, binImage, binImage);
// 反色:或非运算,第一个参数是输出图像,后面两个是参与运算的输入图像
除了测试图像需要进行二值化处理,模板图像也要进行二值化处理。
3.行列分割均可以根据像素值来分割,对于白底黑字的图片来说,逐行逐列扫描,检测到黑色像素即可确定存在汉字或标点符号。
但要注意列分割必须对每一行进行,不能进行全局列分割。意思是,先逐行分析,然后行扫描,最后列扫描,而不能直接进行行扫描和列扫描,因为每列文字有可能对不齐。
4.模板匹配除了要完成文字识别,还要完成标点符号以及空格的识别。
5.一键运行功能的实现可以通过在 .uir 文件创建一个按钮,在按钮的回调函数中,调用行列分割以及模板匹配的函数。

功能键包括:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。