Profile - CN392


CN392

基于Nios II 的盲人读书器

中国石油大学(华东)
计算机科学与技术


Finals


[print]


Project

Name of Project:基于Nios II 的盲人读书器

Contact Information

Name:贾彦富
E-Mail:upc_altera@163.com
Telephone:053286982369
Mobile Phone:15153239403
Mailing Address:山东省青岛经济技术开发区长江西路66号10号公寓楼519宿舍

Contest Advisor

Name:刘文英
E-Mail:wyliu@hdpu.edu.cn
Telephone:13365462112

Members

No.NameE-MailEnglish Name
1贾彦富upc_altera@163.comjiayanfu
2李国银guoyin_li@163.comliguoyin
3潘超pcfree2008@163.companchao

Project Paper - view as Preliminary(2009/06/15), Final(2009/09/14), Draft, Latest

1. 设计概述 (Preliminary Paper)

 

            设计意图
我国盲人人口约有500万,占全世界盲人总数的18%,是世界上盲人最多的国家。大部分的盲人读书时,只能看用盲文编辑的书籍,但是盲文书籍不仅制作耗时费钱,而且盲文书籍不但体积大、重量大而且信息量也小,对盲人的学习效率有很大的影响。而人的知识80%是通过视觉获得的,这样因为视觉障碍而导致盲人在认知、学习、生活等方面都存在着很大的困难。所以帮助残疾人是我们的责任和义务,更是我们的荣幸。
本设计的初衷是开发一款便携产品,能够通过扫描普通纸类书籍或者是存储在读书器中的电子书,将书中文字通过音频设备播放出来。通过该设备的使用,使得盲人可以像正常人一样“看书”,像正常人一样出入图书馆等公共教育场所,使得他们可以更好的发展。
该设计具有良好的应用前景。国外有类似产品,但是性能不够高,功能不够齐全,而且需要盲人的操作性强等。我们利用DE2开发板开发该系统可以使系统性能更高、更方便,而且功能更齐全。
 
 
            适用范围及针对用户群
本产品主要针对盲人和视力有障碍者。
可以用在个人室内,让盲人读书更方便,生活更舒适。也很适合于老年人等视力有障碍群体。也可以用在很多的公共场所,譬如图书馆之类的教育场所,使得盲人等残疾人士可以像正常人一样出入阅览室。
 
 
            选用Altera器件的原因:
 本设计主要采用了Altera DE2+Nios II的设计方式
 
    采用Alera DE2的优势:
  1.  Altera DE2 开发平台FPGA核心数量高达33216个逻辑单元,其强大的性能可以让自己定制不同的功能模块。
  2.  强大的存储能力。8MByte同步动态随机记忆本(SDRAM),4MByte快闪记忆本(FLASH),512Kbyte静态记体(SRAM),SD卡插槽。这些存储体可以为系统程序的存放,以及汉字库和声音库的存放,拍好的文字照片,扫描以后需要存储的文字信息以及网上下载的电子书等实体提供存储空间。
  3. 丰富的接口。具有24位元CD品质立体音输入(Line- In)、输出(Line-Out)及麦克风输入(Mic-In)等多种音频输入接口,能够方便实现我们的声音采集,而且提供的Audio CODEC也大大方便了音频编解码;开发板上提供的USB接口,可以接照相设备实现文字图片的获取,也可以将电子书通过USB接口传给读书器。
              采用Nios II的优势:
  1.  软核的优势。Nios II软核系统可以根据我们的要求灵活地定制裁剪功能,甚至采用多个软核,选择满足性能和成本的最佳方案。同时Nios II处理器支持使用专用指令,较硬核更具有灵活性。而且可以自定义指令提高算法执行效率。
  2.  C2H加速。C2H的使用使得使用c语言等程序开发更方便,而且速度更快。
  3.  IP核。Altera和他的合作伙伴为FPGA板提供了丰富的IP核,极大地方便了我们利用FPGA板进行项目开发,缩短了开发周期。
  4.   RTOS操作系统,Nios II IDE集成了已经移植到Nios II处理器的RTOS操作系统,方便我们直接利用该操作系统完成系统的功能设计及功能行扩展。
 

 

(Revision: 13 / 2009-09-15 09:00:04)

2. 功能描述 (Final Project Paper)

 

本设计采用DE2-35多媒体开发平台,设计实现了“盲人读书器”,实现了预计的读电子书和读普通纸张书籍这两大功能。因为是设计给盲人使用,系统增加了一些很实用且很必要的语音提示,每次按下相应的按键,系统会自动发出对该按键的语音描述,例如,开机时的“欢迎使用”以及“上一页”“下一页”等等,并执行相应的功能,这些都给盲人带来了很实际的帮助。
系统将做好的200多个常用汉字的声音文件烧写进非易失的FLASH存储器里面,以作长期保存。在开发板上设置了一个总开关,来控制进入读电子书还是读普通纸张书籍的环境。
当使用读电子书的功能时使用者只需要将读的电子书存放在SD卡里面即可。程序通过获取SD卡数据,获得每个汉字的ASCII码,根据ASCII码计算出每个汉字的区位码,再根据区位码计算出每个汉字相应的声音文件在FLASH里面存放的地址,最后取出声音文件送至音频输出处,驱动音频发声。系统还对一些常用的标点符号以及空格键、回车键进行了很好的处理,另外还在开发板上设置了开、关、上一页、下一页等控制按键来实时控制系统的运行。
当使用读普通纸张书籍的功能时使用者只需将纸张摆放在固定好的摄像头的指定位置即可。系统将摄像头采集到的数据通过DMA传输到SRAM中,以便软件对其进行处理。软件上使用了二值化、归一化、细化、提取特征点、模板匹配等一系列的算法,最终跟实现读电子书的功能一样,利用ASCII码和区位码在FLASH中找到相应的声音文件并发出声音。对于该功能也同样设置了一些按键来进行实时控制,比如,开、关以及决定摄像头是否进行数据采集的功能按键。
开发版使用的按钮功能如图所示:
                              图1、按钮功能示意图

(Revision: 7 / 2009-09-17 16:41:40)

3. 性能参数 (Final Project Paper)

  1.硬件设备: 

  • 1G容量的SD卡一枚,并且是FAT16系统。
  • 音响一部。
  • CMOS摄像头一个。
  • 直流电源一台。
  • LCD显示器一台。
  • 电脑一台
  • DE2-35开发板一台。

    2. 软件设备

  • Quartus 9.0
  • Nios2 IDE
  • Modelsim

   3.CMOS摄像头性能参数:

  • 芯片:OV7950.
  • 制式:NTSC。
  • 有效像素:512*582pixels。
  • 工作电压:DC 8V----12V。

   4.系统性能工作参数

  • 系统时钟频率:50MHZ。
  • CMOS摄像头采集数据频率:27MHZ。

    5.纸张文字格式参数

  • 字体大小:3.5cm*3.5cm
  • 字体列间距:2.5cm;行间距:2.5cm
  • 模板纸张如图所示:

   6.Quartus硬件顶层模块:(如图所示)

   7.硬件资源利用情况:(如图所示)

8.SOPC系统组建图:(如图所示)

(Revision: 11 / 2009-09-15 10:09:40)

4. 设计结构 (Preliminary Paper)

                                                      图4.1       系统操作流程图

 

 

                                                                图4.2     系统硬件框图 

 

 

 

                                                                       图4.3  Nios II CPU结构图

 

 

 

                                                                       图4.4      系统模块化设计

        系统设计分为了三个模块,其中“提取文字模块”是指从文字图片(或电子书)上提取文字特征信息,并存放;“识别文字模块”是指根据存放的文字特征信息匹配汉字库,具体识别出是哪个文字;“发声系统模块”是指将确定的汉字和声音库中的声音文件进行一一映射,并提取所对应的声音文件,通过音频设备发声。

(Revision: 8 / 2009-09-15 09:50:19)

5. 设计方法 (Final Project Paper)

 

1、模式选择:

      作品设计中需要“电子书”和“普通纸书”两种模式下工作,利用开发板上的Toggle Switch[1]实现模式的选择。如图所示:

                              图1、模式选择流程图

                                    

2、数据采集:

1>电子书数据采集。

          SD卡的读取是通过SOPC上的PIO来实现的,分别使用了3种类型的PIO,1位的CLK_PIO,1位的CMD_PIO,4位的DAT_PIO,这样将SD卡挂载到总线上,成功的实现了SD卡的读取操作。

                              图2、SD卡数据读取模块图

                                

 2>普通纸书数据采集

        作品开发中自己设计了CMOS摄像头模块。CMOS摄像头的数据经过ADV7181B处理以后,再经过SDRAM缓冲区的“去隔行”操作,然后通过一系列的数据转换为RGB数据,RGB数据分两路处理:一路经过LCD显示,用来校正纸张的摆放位置;一路数据通过将RGB数据转换为灰度值数据,送到FIFO中。将FIFO挂载到总线上,成功的通过DMA从FIFO中读取数据。

       应该说明的是,该自定义模块不仅成功的读取到了CMOS摄像头的数据,而且特别利用了由于采集的是静态图像的特点,实现了对于一帧图像可以分时分段的采集,成功解决了存储器有限的问题。

                              图3、CMOS摄像头数据读取模块设计图

         

 

3、数据处理

 1>“电子书”数据处理:

      该部分详细地说明“电子书”的整个工作流程。程序实现过程中,成功读取了SD的中的系统目录,以及每个目录的内容。并且通过开发板上的Toggle Switch  和 Pushbutton Switch按钮很好的实现了硬件中断,达到了“播放/暂停”,“上/下翻书”的功能。

                              图4、“电子书”部分工作流程图

2>“普通纸书”数据处理。

      该部分详细地说明了对于获取到的CMOS摄像头数据的处理。

      程序中事先已经存放了几十个汉字的特征点。

      每次使用前,只需将符合格式(包括文字大小,文字之间的间距)的文字纸张摆放的固定位置,将“播放/暂停”按钮拨到“播放状态”,然后按动扫描,就开始扫描纸张,并且进行一系列软件上处理,最后匹配文字,然后实现相应文字的声音的播放。

      各个软件程序处理的模块如下所示。

      (1)整体处理结构。

                              图5、普通纸书整体处理结构

                                

      (2)预处理流程模块。

                              图6、预处理流程模块流程图

                                

  •  图像二值化,该作品是通过采用阈值处理对图像数据进行的二值化数据处理。

       二值化过程中,阈值的选取非常重要,如果能选取一个合适的阈值就能将图像合理的分割开来。通常阈值的选取方法有极小值点阈值、最优阈值、最大类间方差法阈值等。该作品采用的是,Ostu提出的“最大类间方差法”,算法简单、稳定有效。

     二值化软件流程中,关键步骤,阈值选取流程图如下所示:

          图6.1、二值化中“阈值选取”软件流程图

                      

  • 归一化调整。归一化是处理是非常重要的一部分。归一化包括位置归一化,大小归一化及笔画粗细归一化。该作品主要进行位置和大小的归一化。归一化流程图如下所示:

          图6.2  “归一化调整”软件流程图

              

  • 细化处理。细化处理目的是提取源图像的骨架,即是将源图像中线条宽度大于一个像素的线条细化成只有一个像素宽度,形成“骨架”形成骨架后能比较容易的分析图像。

     细化的基本思想是“层层剥夺”,即从线条边缘开始一层一层向里剥夺,直到线条剩下一个像素为止。系统采用了“Hilditch”细化算法,其软件流程图如下所示:

             图6.3  “细化处理”操作软件流程图

    

  • 特征提取。根据上面几个步骤处理的结果,提取每个文字的特征点。软件流程图如下:

          图6.4    “特征提取”  操作软件流程图

                             

      (3)模版匹配文字识别模块。

                              图7、模版匹配文字识别模块流程图

     “普通纸书”的扫描发声,整体上已经通过,整体流程如下图所示:

                               图8、“普通纸书”部分工作流程图

                            

        首先根据“制作模板流程”(如图中红色框所示)获取文字的模板,本设计中做了20多个模板。然后再根据“扫描识别流程”(如图中蓝色框所示),进行文字的匹配操作。

     下表是扫描识别的结果,表中*表示未识别出,平均识别准确率为55.5%。

                                 
   表1  扫描识别结果统计表
原文字
识别结果 *
原文字
识别结果 *
  

 

 

(Revision: 50 / 2009-09-17 16:37:48)

6. 设计特点 (Preliminary Paper)

 

  1. 本系统需要实现“提取图片(电子书文档)文字”和“识别文字”这两大复杂算法,根据NiosII的SOPC设计理念,采用了两个NiosII软核来分别主要实现这两个算法以能够提高系统的速度。
  2.  将两大算法中的“提取文字的特征信息” ,“读取文字的特征信息”等常用指令设为自定义指令,用硬件电路实现,加速算法的执行速度。
  3. 引入ucosII操作系统,给该作品的开发提供了有力的帮助,使得系统运行过程中的任务管理以及多处存储的设计变得很方便。
  4. 充分利用开发板上提供的SD卡插槽接口,解决了质量较高,体积较大的文字图片存储问题。
  5. 设计中需要用到一些实时交互的按钮,开发板上提供的“Toggle Switch”和“Pushbutton Switch”能够很好的解决这些问题。
(Revision: 6 / 2009-09-15 09:15:46)

7. 总结 (Final Project Paper)

       经过几个月的不懈努力和不断探索,较好完成了预期的设计任务。

 成功加载了所需的各种外设例如,通过PIO成功读取SD卡存取;将自定义CMOS摄像头模块挂载到了Avalon总线,并成功的读取每帧图像数据。使用DMA设备传输大量的图像数据信息等等。不仅将自定义外设—CMOS摄像头成功挂载到总线上,而且该模块可以同时实现将一帧数据分时分段的传输,这样既能解决了一帧文字信息的实时捕获,又解决了存储器有限的问题。

 ※ 在程序上不仅顺利的实现了所设计的功能,成功使用开发板上的Toggle Switch和Pushbutton Switch的多个按钮,实现了中断的处理,达到了预想的效果;而且还使用DMA编程实现了大量数据的合理传输。
 
※该系统在设计上再做合理的完善,譬如加大声音库,不仅能正常播放声音,而且还能够使声音有声有色;再者扫描纸张书的时候,利用更合理的算法,将文字的识别率再进一步提高等等,这样系统就能更有实用价值,适合批量生产,当然了也是我们下一步努力的方向。
 
※ 虽然整体流程上已经调试通过,并且能够成功的工作,但是仍然存在一些问题。譬如,声音库的制作上有点不够好,所发出的声音不够柔和;扫描纸书时,识别率还比较低,还没有使用合理的优化加速方法等。
 
※ 对于刚刚接触FPGA的新手,Quartus与SOPC Builder友好的界面与实用的功能很大程度上方便了系统的开发,让我们能够比较快的完成自己的设计。利用Quartus II与SOPC Builder对Nios II及其外围系统进行面向用户的设计,使该嵌入式系统在硬件结构、功能特点、资源占用等方面满足用户系统设计的要求。通过参加这次比赛,不仅使我们更加熟练了Quartus,Nios2 IDE等软件的应用,更加深入地理解嵌入式开发的整体流程,更使我们对FPGA产生了浓厚的兴趣。
 
※ 最后,我们参赛小组衷心地感谢Altera公司提供的这次机会,让我们在学习中开阔了视野,锻炼了动手能力,提升了合作意识。这给每位参赛队员留下了美好的经历和宝贵的财富!

 

(Revision: 14 / 2009-09-17 10:50:01)