- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于SSE4的电子相册
问题概述
利用SSE4技术实现图片的淡入淡出效果,设计出一个电子相册。
问题分析
根据题目要求,首先利用VC++中的MFC框架构建电子相框,初步完成图片的显示功能。利用加权平均公式:
Resultpixel=Apixel-Bpixel*fade+Bpixel,(1)
在fade因子从1渐变为0的过程中,产生一系列A、B的中间图像,实现A图像到B图像的淡入淡出效果,计算过程使用SSE4技术嵌入汇编完成。
详细设计
3.1设计概述
首先在Visual Studio2010中创建一个MFC工程,本设计主要用到的类是MFC框架中的CXXView类(其中XX是工程名,本设计创建的工程名为:SSE4),在该类构造函数CSSE4View::CSSE4View()中实现本地4张图片的加载,得到图片的副本。然后在CSSE4View::OnDraw(CDC* pDC)中完成图片的显示,利用上述公式,将两张图片的渐变过程分为128帧,具体令fade因子从128/128渐变为0,分子每减一次1,便调用CSSE4View::HANDLE(int factor,int k1,int k2)函数,利用嵌入SSE4技术的汇编程序计算出中间图像,返回主调函数在界面上显示这一帧的图像,128帧的逐一显示即可完成第一张图片到第二张图片的彻底转变,重复上述行为显示第二张到第三张图片以及剩余图片的渐变即可设计出一个电子相册。
3.2设计过程
本文结合具体代码论述该电子相册的实现过程。
首先在‘SSE4View.h’文件的SSE4View类中声明以下变量(SIZE为#define宏定义,在这里=4):
变量说明CBITMAP m_bitmap[SIZE]加载本地四张图片的存储变量BYTE* m_newptr[SIZE]四张图片的副本存储变量BYTE* m_tarptr合成的中间图像存储变量并声明类方法:BYTE HANDLE(int factor,int k1,int k2),该方法具体实现合成中间图像的计算过程。
在CSSE4View::CSSE4View()中,用loadImage()打开4张图片,存储到hBitmap[SIZE],将其加载到m_bitmap[SIZE]中,再创建结构体数组变量bm[SIZE]获得图片的基本信息,具体包括图片存储的首地址、图片的宽度、高度等信息。为了防止破换原图片,保险起见,本设计将图片拷贝到m_newptr[SIZE]中,由于loadImage只能打开.bmp格式的图片,所以本设计具有一定的局限性,只能实现图片为24位.bmp格式的电子相册。每个像素点占24位,即3个字节,利用memcpy()函数每次实现一个像素的拷贝,根据bm[]中图像的首地址、宽度和高度信息实现所有像素的拷贝即可得到图片的副本。
在void CSSE4View::OnDraw(CDC* pDC)中,循环SIZE次依次实现每两张图片的淡入淡出,本设计将图片的渐变过程设置成128帧,即fade因子从128/128渐变到0,调用HANDLE()函数根据上述公式得到中间图像m_tarptr,调用函数pDC-SetPixel()以RGB格式显示此中间图像。
在BYTE CSSE4View::HANDLE(int factor,int k1,int k2)中利用SSE4汇编指令具体计算上述公式生成中间图像。SSE4指令能对多组数据进行并行处理,含有多个128位的寄存器,考虑到计算过程中可能存在溢出,本设计具体实现时采用的是8组并行,即一次处理可8个字节的数据,利用SSE4指令中的扩展命令对其进行扩展,每个数据占16位来保证数据的正确性,在不考虑其他因素的情况下,性能可提高8倍。
在开始两张图像的中间合成前要做好下面几个数据准备:(1)得到两张原图和合成图的首地址;(2)将当前渐变因子复制存储到容量为8的数组fade[8]中,来支持8个数据的并行运算。(3)计算公式迭代次数,利用图片的宽度和高度得到像素个数,每个像素占3个字节,得到整张图片的字节数all,由于一次计算可以处理8个字节的数据,all/8即可求出迭代次数。
接下来嵌入SSE4指令的汇编来具体合成图片,将地址、迭代次数、渐变因子送入寄存器中,将渐变因子扩展到128位,以每次处理8个字节为基准来处理整幅图的像素,进入循环后,扩展原图数据到128位,利用前面提到的公式(1),根据SSE4提供的指令对原数据进行计算,由于这里我们将渐变因子的浮点形式写成了除法形式:fade/128(其中渐变因子fade为分子),在乘完fade后我们要将结果右移8位来做除法运算。将合成后的结果赋值给目的地址所指向的内存单元。在经历了多次迭代后得到整张中间图片。
结果展示
附录
代码实
您可能关注的文档
- 2015.4.2初三物理-替换电阻技术总结.doc
- 2015.4排放污染物动态表技术总结.doc
- 2015.5西城高三二模及技术总结.doc
- 2015.8-12月时政0902技术总结.doc
- 《财务管理与》B及答题.doc
- 《仓储配送管理实务》单元设计2答题.doc
- 家装电路施工图解答题.doc
- 2015.21跨境电商人才初级认证以及技术总结.doc
- 2015_高考物理专题复习_带电粒子在复合场中的运动技术总结.doc
- 《仓储与库存管理》本科教学大纲答题.doc
- 区委书记、市国资委党委领导班子2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面检查材料【两篇文】.docx
- 局党组书记、市国资委党委领导班子2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面个人检查材料2篇文.docx
- 市交通运输局局长2025年专题生活会对照“四个带头”含落实意识形态工作责任制方面个人对照检查发言提纲与检察院领导班子“四个带头”检查材料【2篇文】.docx
- 市投资促进局党支部书记2025年组织生活会对照“四个带头”个人对照检查发言材料与党组书记“四个带头”个人对照检查材料(内蒙古地区四个对照,反面典型案例检视剖析)【2篇文】.docx
- 市教育局党委副书记、市国资委党委领导班子2025年“四个带头”个人对照检查发言材料(上年度整改+个人事项+典型事例剖析)2篇文.docx
- 2025年专题生活会“四个带头”方面对照检视材料(问题+原因+措施+意识形态)与纪检委员专题生活会“四个带头”方面个人对照检查材料【2篇文】.docx
- 检察院领导班子2025年专题生活会对照“四个带头”检查材料与县司法局专题生活会党组书记个人对照“四个带头”对照检查材料(含反面典型案例全面剖析)2篇文.docx
- 市机关事务局党支部书记、局党组书记2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面个人发言材料、检查材料【2篇文】.docx
- 2025年领导干部专题生活会“四个带头”对照检查材料与市审计局领导班子专题生活会“四个带头”含反面典型案例剖析对照检查材料2篇文.docx
- 2025年县司法局专题民主生活会班子围绕“4个带头”对照检查材料与反面典型案例回顾与剖析对照检查发言材料2篇文.docx
文档评论(0)