基于SOPC的智能辅助饮食系统设计

2016-02-09 08:27杨志东丁佳铭徐佑宇
实验科学与技术 2016年6期
关键词:嘴部像素点使用者

杨志东,丁佳铭,徐佑宇,申 腾

(武汉大学 电子信息学院,湖北 武汉 430072)

基于SOPC的智能辅助饮食系统设计

杨志东,丁佳铭,徐佑宇,申 腾

(武汉大学 电子信息学院,湖北 武汉 430072)

该文基于无臂残疾人无法进行自主饮食,设计了一套智能辅助无臂残疾人饮食的嵌入式系统。该系统由CCD相机得到脸部图像,通过FPGA的二值化处理和Nios II的图像分析,定位出嘴部位置,再由FPGA产生持续PWM波控制机械臂的运动,将饮品送到使用者嘴边进行饮用。该系统具有语音识别功能,全程通过语音进行人机交互,并具有自动添加饮品功能和水温异常报警功能。

嵌入式系统;定位;机械臂;语音识别

随着科技的发展,多自由度机械手臂广泛应用于生活、半导体制造、工业、医疗、军事以及太空探索等领域。机械手臂能够接受指令,精确地定位到三维(或二维)空间上的某一点进行作业。

另外电子技术的发展也日新月异,已经融入生活各个方面,智能化已经成为一种趋势。其中SOPC是一种新的可编程系统,具有灵活的设计方式,可裁减、可扩充、可升级,并具备软硬件在系统可编程的功能。

本文基于这一特点设计了一个基于SOPC的智能辅助饮食系统,该系统能够辅助行动不便的人进行饮食。通过对使用者面部的图像分析得到嘴部具体位置,系统给舵机发送相应PWM波使舵机完成抓取并移动水杯至使用者嘴部,放回水杯等一系列操作。该系统还具有智能添水,水温异常报警的功能。

1 系统功能概述

本系统利用D5M相机撷取使用者面部影像后进行图像处理,找到嘴部位置,将嘴部坐标存储起来,在DE2-115构建的Nios II中对各个模块进行控制,实现辅助行动不便人士饮食的作用。系统各功能概述如下。

1)语音识别:通过对使用者语音的采集与识别,来了解使用者的需求,从而系统根据使用者意愿完成相应操作。

2)图像处理:本系统通过总线连接摄像头获取图像信息,通过对采集的图像进行一系列算法实现人脸识别,最后得到使用者嘴部的位置坐标。

3)机械臂控制:编写Verilog语言,通过FPGA控制的有6个自由度机械臂上的舵机工作,从而使机械臂完成指定动作。

4)SD卡播放:播放SD卡中预先存储好的人声和音乐,实现系统与使用者的交互。

5)智能续杯:测量水杯的整体重量,判断是否需要加水,通过继电器控制电磁水阀的通断,实现续杯功能。

2 系统总体结构

2.1 硬件设计

本系统使用Altera公司生产的DE2-115开发板,内置Cyclone©IV 4CE115 FPGA芯片,2 MB SRAM,2片64 MB SDRAM,VGA输出接口,40引脚扩展接口,带二极管保护电路,24 bit CD品质CODEC芯片等。利用Quartus建立Nios II软核处理器,该处理器是Altera的第二代FPGA嵌入式处理器,其性能超过200DMIPS。Nios II软核处理器对由摄像头传进来的数据进行算法分析,以及对各种I/O口进行软件控制。硬件结构分为输入、输出、信息处理3部分,如图1所示。

2.2 软件设计

软件流程主要是对语音、图像、温度以及机械臂等的时序控制以及条件判断。本文采用Nios II软核进行软件编写。软件流程图如图2所示。

2.3 机械平台设计

机械平台最下面是一个步进电机,用于控制平台的旋转,第一层放置4个杯子,分别装有不同的饮品,根据使用者的意愿,对应饮品的杯子会旋转至机械臂正前方,此外每个杯子底部装有压力传感器;第二层是4个水罐,分别位于4个杯子的正上方,并且杯中装有相应饮品,水罐上装有电磁阀以及温度传感器。机械平台3D图如图3所示。

3 图像撷取处理模组设计

图像撷取处理模块由图像拍摄存储模块和图像处理模块组成。

3.1 图像拍摄存储模块

使用者影像经D5M相机拍摄后,进入CCD_ Caputer module并经过RAW2RGB module将图片转为RGB格式,然后对RGB格式的图片作灰度处理,再对灰度图片进行二值化处理。图片需要在VGA显示出来并存储在Nios II中进行嘴部定位算法分析,本文自定义了一个SRAM controll module模块,该模块通过控制读写时序实现了VGA和Nios II的读写操作,省去了SDRAM较繁琐的读写操作。

3.2 图像处理模块

3.2.1 RAW2RGB算法

D5M CMOS摄像头(加了一个偏振片来消除反光干扰)拍摄得到的是RAW格式,奇数行包括green和red颜色的像素,偶数行包括blue和green颜色的像素。奇数列包括green和blue颜色的像素,偶数列包括red和green颜色的像素。为了方便图像处理,先进行RAW2RGB的操作。

图2 软件流程图

图3 机械平台3D图

1)调用altshift_taps的megafunction,altshift_ taps可以作为数据移动寄存器组,经常在图像处理程序中被用到。采集一系列像素点数据,需要同时对2行像素点同时进行处理时,就可以用altshift_ taps.共2个taps,每个taps数据宽度为图像每行像素点的个数(1 280)。

2)在格式转换时,用到以下4个参量。

mDATA_0:第M行第N列的像素。

mDATAd_0:第M行第N-1列的像素。

mDATA_1:第M+1行第N列的像素。

mDATAd_1:第M+1行第N-1列的像素。

3)4个参量组成一个以mDATA_0(位于左上角)为核心的模板。模板中必定包含一个R、一个B、2个G像素点,那么R作为当前像素mDATA_ 0的R值,B作为当前像素mDATA_0的B值,取2个G的平均值作为当前像素mDATA_0的G值(通过取G的高10位,舍去最后一位来实现)。每个RGB点相当于图中4个像素点中的交点,因此根据坐标位置有4种像素排列情况,根据周围4个R、G1、G2、B像素点的值得到对应点的RGB值。

mDATA_0 mDATAd_0 mDATA_1 mDATAd_1

3.2.2 RGB转灰度图以及二值化算法

对于彩色转灰度,通用公式为:

Gray=R×0.299+G×0.587+B×0.114

但在FPGA中为了避免低速的浮点运算,需要整数算法,整数算法可进一步转化为移位算法,最终得到Gray=(R×38+G×75+B×15)>>7,该式运算速度快,精度较高,比较适合。

1)二值化处理:为了找出嘴部位置,在进行计算前先将灰度图作二值化处理,即将图像的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果,将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像,所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值表示为255,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。本系统中阈值可以调节,以适应各种环境。

2)嘴部定位算法:采用本文自定义的算法,该算法采取逐次减小扫描区域面积,最后得到嘴部中心坐标。算法如图4所示。嘴部定位算法对二值化得到的600×800个像素点进行扫描计算,具体有以下6个步骤。

①对得到的像素点从上至下逐行扫描,当找到某一行像素点灰度值为0的个数占本行总个数的30以上,记录该行行数为k。

②对第k行像素点进行扫描,先从左向右扫描,扫描到某一点以及其后连续10点灰度值都为0,记录这点坐标为(k,m)。同理再从右向左扫描,扫描到某一点以及其后连续10点灰度值都为0,记录下这点坐标为(k,n)。将嘴部扫描区域缩小在这两点形成的矩形内。

③对(k,m)和(k,n)点形成的矩形局域进行扫描,从k行开始扫描,当扫描到某一行像素点灰度值为255的个数占本行总个数的70以上,记录下该行行数为a。

④对第a行像素点进行扫描,先从左向右扫描,扫描到某一点以及其后连续10点灰度值都为255,记录下这点坐标为(a,b)。同理再从右向左扫描,扫描到某一点以及其后连续10点灰度值都为255便记录下这点坐标为(a,c)。将嘴部扫描区域再缩小在这两点形成的矩形内。

⑤对(a,c)和(a,b)点形成的矩形区域进行扫描,从a行开始扫描,当扫描到某一行像素点灰度值为0的个数占本行总个数的60以上,记录下该行行数为d。

⑥对第d行像素点进行扫描,先从左向右扫描,扫描到某一点以及其后连续10点灰度值都为0,记录下这点坐标为(d,e)。同理再从右向左扫描,扫描到某一点以及其之后连续10点灰度值都为0便记录下这点坐标为(d,f)。根据人脸比例可得嘴部坐标(f-e+d,(f+e)/2)。

4 语音交互模块设计

语音交互模块由语音采集识别模块和audio player模块组成。

图4 人脸嘴部定位算法示意图

4.1 语音采集识别模块

模块由LD3320语音识别芯片和STC单片机芯片组成。LD3320芯片是一款“语音识别”专用芯片。该芯片集成了语音识别处理器和一些外部电路,包括A/D、D/A转换器,麦克风接口和声音输出接口等。在该模块中拾音器采集到音频后,通过语音识别芯片判断是否为MCU单片机预先设定的词,如果是,再由I/O输出特定的信号传给DE2开发板,Nios II处理核心通过判断信号来识别用户的请求,从而做出相应的操作。

4.2 audio player模块

在DE2-115上实现一个SD卡音乐播放器,它读取存储在SD卡里面的音频文件,并通过CD品质的音频DAC芯片播放出来。设计使用Nios II处理器读取音乐数据并用Wolfson WM8731音频CODEC芯片完成播放工作。当语音采集识别到用户语音时,通过Nios II控制播放相应音频文件,从而实现语音交互的功能。

5 机械臂控制模块设计

本系统采用了有6个自由度的机械臂,由6个舵机来控制它的运动轨迹。通过Verilog语言编写PWM模块,输出6个占空比可调PWM波,将模块与外部电路连接,按照Avalon总线协议与Nios II核连接,从而实现在Nios II中控制输出PWM波的占空比的功能,选择用FPGA产生PWM波可以缓解软件工作压力,提高系统整体运行速度。在图像处理完后可获得嘴部的坐标,但这个坐标是在VGA中的坐标,要将这个坐标换算到实际空间中,可调整摄像头和人脸的距离使VGA显示和实际图像成1∶1,然后将机械臂放置在头部左侧,将三维问题转化为二维问题来解决,所以只需要对二自由度机械臂的运动做算法分析,就可以达到控制机械臂将杯子放到使用者嘴部位置的功能。

6 系统测试结果

图5为二值化后的图像,以此左上方为原点建立坐标系。实际效果如图6所示,误差范围在1 cm以内,如表1所示。

Design of an Intelligent Auxiliary Dieting System

YING Zhidong,DING Jiaming,XU Youyu,SHEN Teng
(College of Electronic Information,Wuhan University,Wuhan 430072,China)

Based on the phenomenon that disabled people without arms are not convenient to eat and drink,an embedded system for arm less disabled to eat and drink is designed.The system receives the image of face from CCD camera and locates the mouth via binary image process of FPGA and image analyze of Nios II.Using Pulse Width Modulation power,this system can control its mechanical arm to send the drink in front of disabled people's mouth.Since this system has speech recognition,disabled people can just talk to the system to make an order.Moreover,the system has the function of filling up the drinking automatically and alarm for abnormal drinking temperature.

embedded system;location;mechanical arm;speech recognition

图5 二值化效果图

O341;G642.423

A

10.3969/j.issn.1672-4550.2016.06.010

2016-01-12;修改日期:2016-03-14

武汉大学设备处自主式开放实验项目基金(WHU-2016SKFSY-3)。

作者介绍:杨志东(1974-),男,硕士,主要从事大学生实践教学、学科竞赛组织与管理工作。

猜你喜欢
嘴部像素点使用者
基于局部相似性的特征匹配筛选算法
此人为何杠得如此嚣张?
圆号教学中嘴部教学的重要性及训练方法研究
高中素描头像教学中提高嘴部刻画能力的策略探究
基于5×5邻域像素点相关性的划痕修复算法
基于Horn-Schunck光流法的多目标反刍奶牛嘴部自动监测
新型拼插休闲椅,让人与人的距离更近
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
抓拍神器