基于Linux的虚拟试妆系统设计

天天见闻 天天见闻 2024-03-01 科技 阅读: 28
摘要: 近几年针对该问题提出了多种虚拟试妆解决方案。以公司的SoPC技术和Linux操作系统为基础,设计了一款嵌入式虚拟试妆系统。系统硬件设计系统软件设计虚拟试妆系统包含唇彩试妆和自由试妆两大功能。图5所示为试妆软件功能界面划分的思路及程序流程图。采用移植的FTK图形库完成虚拟试妆软件编写。

随着社会的进步,人们对自身形象愈加重视,化妆成为女性一门必修课。如何选择合适的化妆品对于不少女性来说是一项难题。近几年针对该问题提出了多种虚拟试妆解决方案。包括通过浏览器进行本地与远程服务器交互方案及使用 C++开发上位机软件[1]等。

以公司的SoPC技术和Linux操作系统为基础,设计了一款嵌入式虚拟试妆系统。该系统在SD卡中存储信息,通过摄像头采集用户面部图像,用户可通过触摸屏浏览、选择商品对影像进行上妆,并查看试妆效果,最终达到选购化妆品的目的。系统具有体积小巧、方便易用等特点,适合于各种商场的化妆品柜台。

1 系统总体结构设计

系统以DE2-70为核心板,外接PS2键盘录入信息,通过扩展口分别接入LTM触摸屏和D5M 500万像素摄像头。为使用Linux操作系统,构建了基于带MMU的Nios II处理器的SoPC。通过SDRAM运行内核和RAM文件系统,使用SSRAM作为显示缓存,将硬件编程代码烧入EPCS,而将压缩的内核、文件系统与引导代码一起烧入Flash。系统采用大学计划IP中的PS2 和Video IPs分别管理PS2接口和触摸屏的显示部分,自行编写硬件模块实现触摸屏的配置、摄像头采集和SSRAM多路复用。此外,系统还使用SPI模式管理SD/MMC卡以及第三方IP管理网络物理芯片。系统结构框图如图1所示。

2 系统硬件设计

2.1 运行Linux的最小系统搭建

Linux操作系统对SoPC系统的构建有特殊要求,包括带MMU处理器设置、全功能定时器启用、通信终端设定等。表1总结了基于Linux系统所需要添加的SoPC组件以及关键设置[2]。

2.2 影像采集和存储方案设计

图2所示为本系统使用的影像采集和存储方案。在SoPC系统外,通过模块配置和采集摄像头数据,经由模块合成指定格式数据并生成SSRAM写时序送入进行仲裁;既接收的数据写入SSRAM的指定区域,又允许SSRAM 访问SSRAM获取相应数据。

(1)

该模块分别提取传入RGB分量的高5、6、5 bit数据,拼接成16 bit数据,读入两个像素合成32 bit,同时生成对应的21 bit SSRAM地址,将其传递给。

(2)

该模块对来自SoPC系统的SSRAM控制器和的读写请求做出仲裁。在CPU读请求有效期间,模块读取SSRAM中的数据发送给总线;超出读请求有效期则接收模块图像数据写入SSRAM。在该模块中添加两个分别作为实时图像数据及其对应地址的缓冲空间,实现不同时钟域的数据同步。

3 系统软件设计

3.1 开发包修改及内核配置

系统采用社区发布的nios2-linux-.tar内核开发包作为软件开发基础。SoPC系统构建好后,通过“sopc---files -- .h”生成自定义硬件对应的C语言头文件,将该文件拷贝到“nios-linux/linux-2.6/arch/nios//asm/”路径中。开发包通过.h和nios.h两个文件中的宏定义管理SoPC组件与Linux内核驱动代码对设备的映射,同时通过.c文件内置了大量设备的驱动支持,由内核配置生成的.h文件和nios.h以及.h共同控制。图3所示为这三个文件之间的关系。

[!--.page--]

默认的内核开发包并不能直接使用,需针对本系统进行移植修改,主要内容如下:

(1).h中的串口宏定义和.c中使用的宏定义不同,将.c中关于串口0的宏定义*改为*。

(2)/dev/* 系列设备的主设备号与注册时不一致,导致挂载操作失败,解决办法是将"nios2--dist///nios2/-table.txt"中关于*的主设备号修改为179。

图4所示为本系统进行的内核配置。

在所有配置中,需要特别注意以下几点:

(1)内核配置菜单中,需将默认的“Nios II --->Nios II FPGA (MMU )”修改为“Nios II FPGA ()”。

(2)为防止内核解压缩内容覆盖内核压缩文件,设置“Nios II --->Link for ”为。

3.2 应用程序开发

3.2.1 图形库移植

FTK是Funny Tool Kit的缩写,是一个专门为嵌入式系统开发的图形库,其核心代码只有几百KB,在传统控件基础上可开发自定义控件,具有主题设置功能[3]。FTK支持Linux系统,因此在发行版Linux操作系统上安装FTK函数库只需下载相应代码,编译安装即可。而Nios II平台移植FTK需解决以下几个问题:

(1)Nios II平台下png和jpeg编解码函数库无法使用,同时FTK的bmp解码函数采用定义整形指针的方式,如“(*( int*))”对内存进行访问会触发异常中断。解决方法为移除FTK对png和jpeg格式的支持并修改r.c代码,将4字节指针访问修改为4个单字节指针访问。

(2)Nios II平台通过触摸屏设备进行人机交互。解决办法:内核开发包中开启tslib函数库而FTK源代码进行配置时添加“---tslib”参数。

3.2.2 交互界面设计

虚拟试妆系统包含唇彩试妆和自由试妆两大功能。在唇彩试妆功能中,用户首先要选择进行试妆所需的唇部影像,然后用户需手动确定唇部区域,接着进入商品挑选环节。自由试妆同样也要经历以上步骤。图5所示为试妆软件功能界面划分的思路及程序流程图。

FTK界面开发包含以下几部分工作:

(1)调用进行初始化。调用e函数创建窗口,设置控件的大小及位置;

(2)使用类似函数关联控件和响应函数。试妆系统每个功能下均有多个界面通过按钮进入,因此在响应函数中需通过调用e或创建新的界面;

(3)设计自定义控件,包括用户浏览图片控件、描唇控件等。

FTK应用程序要在系统硬件平台上运行,RAM文件系统中至少需要具备四部分内容:FTK动态函数库、tslib函数库、FTK配置文件(字体、主题、输入法)以及应用程序。动态函数库在编译后会出现在RAM文件系统的lib目录中,而FTK配置文件需通过修改rc脚本使Linux内核初始化完毕后从SD卡中拷贝到内存中。图6总结了FTK应用程序在Nios II平台上运行必备条件及设置方法。

详细介绍了本系统的硬件架构和Linux开发方法,侧重阐述了Linux系统运行的最小SoPC系统搭建,利用大学计划IP构建触摸屏显示子系统、摄像头影像采集和存储模块的实现以及Linux内核配置和应用程序开发的重要细节。采用移植的FTK图形库完成虚拟试妆软件编写。实践表明,该系统运行稳定流畅,效果良好。

参考文献

[1] 祝秀萍,刘文峰,张海峰.人脸虚拟化妆系统的研究[J].计算机与信息技术,2008(8):38-42.

[2] . a Nios II with an MMU[EB/OL].,2011.

[3] 李先静.FTK开发者邮件列表[EB/OL].,2011.

其他相关
领悟顶级大佬的核心心法,走上稳定盈利之路

领悟顶级大佬的核心心法,走上稳定盈利之路

作者: 天天见闻 时间:2024-05-24 阅读: 1
而这个学习和成长的过程离不开心法和技术的全面学习,心法是道,技术是术,今天继续跟老铁们重温游资大佬们的核心心法,每一次的重温都能带来不一样的成长和共鸣,在我们稳定盈利的道路上起到巩固和升华的作用。专业人士如果还不能达到稳定获利的境界的话,那只有从心态上去寻找原因了。...
Win10电脑的自带浏览器闪退怎么办其实简单四步就可解决!

Win10电脑的自带浏览器闪退怎么办其实简单四步就可解决!

作者: 天天见闻 时间:2024-05-21 阅读: 1
我们知道,Win10系统自带的浏览器默认是Edge,有网友表示使用它时经常出现闪退的情况,这是怎么回事呢?其实,这种情况一般是因为软件文件损坏导致的,重装Edge浏览器就可以解决。2、进去后,找到.这个文件夹,彻底删除即可;这时Edge浏览器就重装好啦,闪退现象一般就不会再出现了!...
国债逆回购,看这一篇就够了(附逆回购全攻略)

国债逆回购,看这一篇就够了(附逆回购全攻略)

作者: 天天见闻 时间:2024-05-20 阅读: 2
、什么是国债逆回购?、什么是国债逆回购?国债逆回购能赚钱吗?平时的话逆回购收益很低,跟货币基金差不多,不值得关注。5、操作方便:启动逆回购时与购买股票一样操作简单,且不用作后续操作,资金到期后自动到账。第一步:登录证券账户,注意是普通交易账户,不能是融资融券账户等,找到如下图所示的“国债理财”即国债逆回购。...
2018小学奥数专题四:简单方程的经典题型以及解题方法

2018小学奥数专题四:简单方程的经典题型以及解题方法

作者: 天天见闻 时间:2024-05-14 阅读: 1
在数学中,方程常用于解决应用题,其优点在于可以使未知数直接参加运算。用简单的方程解应用题:列方程解应用题的一般步骤是:简单方程解应用题的经典例题:对于较难的应用题,恰当选择未知数,往往可以使列方程变得容易些。...
主题:穴位--敷脐疗法

主题:穴位--敷脐疗法

作者: 天天见闻 时间:2024-05-02 阅读: 1
赤白痢疾的敷脐疗法穴位:脐中脐血的敷脐疗法穴位:脐中穴位:脐中来自[敷脐疗法]栏目新生儿破伤风的敷脐疗法穴位:脐中穴位:脐中来自[敷脐疗法]栏目疳积的敷脐疗法穴位:脐中此法适用于腹胀、腹大、腹痛,蛔虫病而服驱虫药未收效的疳积证患儿。穴位:脐中来自[敷脐疗法]栏目子宫脱垂的敷脐疗法穴位:脐中每晚临睡前换药1次,直至子宫复位、疗效稳定为止。穴位:脐中来自[敷脐疗法]栏目遗精的敷脐疗法穴位:脐中穴位:脐中来自[敷脐疗法]栏目便秘的敷脐疗法穴位:脐中穴位:脐中穴位:脐中来自[敷脐疗法]栏目腹痛的敷脐疗法穴位:脐中穴位:脐中穴位:脐中...
板块龙头的判断及第一买点的方法

板块龙头的判断及第一买点的方法

作者: 天天见闻 时间:2024-04-29 阅读: 1
第三种情况:板块龙头二板放量过左峰下面再来说说个股在上涨初期如何判断它可能会成为板块龙头的方法上面的分析判断只是抛砖引玉,个股上涨初期判断板块龙头的逻辑方法基本就是这样。今天的帖子更加详细的讲解了板块龙头的判断及第一买点的方法,希望朋友们能更好的掌握,更准确的运用到实际的操作中。...
我来说两句

年度爆文