(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf_第1页
(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf_第2页
(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf_第3页
(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf_第4页
(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf_第5页
已阅读5页,还剩57页未读 继续免费阅读

(通信与信息系统专业论文)基于s3c2440的gps导航设备中图像浏览软件设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 摘要:当前,大多数码产品都包含图片浏览器,本文所设计的图片浏览器是基于 $ 3 c 2 4 4 0 的g p s 导航设备中的一个必要组成部分。 本图片浏览器由三个模块组成:显示模块、操作模块、加载图片列表模块。 显示模块包括2 4 位位图和j p e g 格式图片的显示;操作模块由图片自动播放、旋 转、放大、缩小、加载、卸载和查看上一幅、下一幅图片,以及软件退出组成。 其中,实现图片旋转功能时,其他设计者的做法是在两个设备上下文之间进行像 素点拷贝,所以旋转速度比较慢,为了解决此问题,本文采用了预分配内存的机 制,它的基本思想是:将图片旋转后先存放在预分配的内存里,然后再显示:加 载图片列表模块由操作模块的加载功能触发的,图片列表中每一项由图片名称和 图片路径组成。 本文首先介绍了本设计的项目背景及其发展情况,其次给出图片测览器的硬 件平台,接着分析1 a m p 、i 陷文件的格式,以及针对不同的文件格式如何进行相应 的解码,然后详细阐述图片浏览器每个模块中基本功能的实现原理,最后提出了 本图片浏览器还存在的不足、以及今后的改进方向。 关键词:图片浏览器;b m p ;j p e g ;设备上下文 分类号:t p 3 1 1 5 2 北塞窑煎太堂亟堂位论塞垦5 工基! a b s t r a c t :n o w a d a y s ,m o s td i g i t a lp r o d u c t sh a v ep i c t 毗ev i e w e r t h ep i c t u r ev i e w e r d e s i g n e di nt h i s t h e s i si sa ni n d i s p e n s a b l ep a r to fg p sn a v i g a t i o nd e v i c eb a s e do n $ 3 c 2 4 4 0 t h ep i c t u r ev i e w e rc o n s i s t so ft h r e em o d u l e s ,w h i c ha r ed i s p l a ym o d u l e ,f u n c t i o n m o d u l ea n dl o a d i n gp i c t u r el i s tm o d u l e d i s p l a ym o d u l ec o n c l u d e sd i s p l a y i n g2 4b i t s b i t m a pa n dd i s p l a y i n gj p e gp i c t u r e f u n c t i o nm o d u l ei sm a d eo fp l a y i n gp i c t u r e a u t o m a t i c a l l y , r e v o l v i n gp i c t u r e ,m a g n i f y i n gp i c t u r e ,m i n i f y i n gp i c t u r e ,l o a d i n gp i c t u r e , u n l o a d i n gp i c t u r e ,l o o k i n ga tp r e v i o u sp i c t u r e ,l o o k i n ga t n e x tp i c t u r ea n dq u i t t i n g s o f t w a r e a sf o rr e v o l v i n gp i c t u r e 。o t h e rd e s i g n e r su s u a l l yc o p yp i x e l sb e t w e e nt w o d e v i c ec o n t e x t s s or e v o l v i n gp i c t u r ei sv e r ys l o w t os o l v et h i sp r o b l e m ,t h et h e s i s a d o p t sam e c h a n i s mo fa s s i g n i n gt h em e m o r yp r e v i o u s l y 1 t sb a s i ci d e ai st os t o r et h e p i c t u r ei nt h em e m o r ya s s i g n e dp r e v i o u s l ya f t e rt h ep i c t u r ei sr e v o l v e d ,t h e nt od i s p l a y i t l o a d i n gp i c t u r el i s tm o d u l ei sr u nb yl o a d i n gf u n c t i o n e v e r yi t e mi np i c t u r el i s t c o n s i s t so fp i c t u r en a m ea n dp i c t u r ep a t h i nt h i st h e s i s ,w ef i r s t l yi n t r o d u c et h ep r o j e c tb a c k g r o u n do ft h i sd e s i g n s e c o n d l y , w eg i v et h eh a r d w a r ep l a t f o r mo fp i c t u r ev i e w e r t h i r d l y , w ea n a l y z et h e b m pf o r m a t , t h e j p gf o r m a t , a n dc o r r e s p o n d i n gd e c o d i n gm e t h o d t h e n ,w ee x p o u n dh o w t or e a l i z e t h eb a s i cf u n c t i o ni ne v e r ym o d u l eo fp i c t u r ev i e w e r l a s t l y , w ep o i n to u tt h es h o r t a g e o fo u rp i c t u r ev i e w e r , a n dt h ed i r e c t i o no fi m p r o v i n g k e y w o r d s :p i c t u r ev i e w e r ;b m p ;j p e g ;d e v i c ec o n t e x t c i 。a s s n o :t p 3 11 5 2 学位论文版权使用授权书 本学位论文作者完全了解北京交通大学有关保留、使用学位论文的规定。特 授权北京交通大学可以将学位论文的全部或部分内容编入有关数据库进行检索, 并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同意学校向国 家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:交l 被 签字日期:九力年,) 月嘭日 名:移歹弓 签字f | 期:弘_ 年,) , 9 h t n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的研 究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表或 撰写过的研究成果,也不包含为获得北京交通大学或其他教育机构的学位或证书 而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作 了明确的说明并表示了谢意。 学位论文作者签名:趔破 签字日期: 加7 年,) 月日 致谢 本论文的工作是在我的导师李兴华老师的悉心指导下完成的,李老师严谨的 治学态度和科学的工作方法给了我极大的帮助和影响。在此衷心感谢两年半来李 老师对我的关心和指导。 我的导师李兴华老师,他严谨细致、一丝不苟的作风一直是我工作、学习中 的榜样;他循循善诱的教导和不拘格的思路给予我无尽的启迪。李老师,这篇 论文的每个实验细节和每个数据,都离不开你的细心指导;您在生活上同样也给 予我极大的鼓励。感谢李老师! 感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系 着彼此之问兄弟般的感情,维系着寝室那份家的融洽。两年半了,仿佛就在昨天, 希望以后常聚。 感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远 健康快乐是我最大的心愿。 在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完 成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的 谢意! 序 本文介绍的图片浏览器是天津中环公司导航p d a 项目的。个应用软件是基 于w i n c e 平台下的,用e v c 开发的。在设计和文章撰写的过程中,除了得到我 的导师李兴华老师的帮助外,还得到了两位富有经验的同事韩健辉和张强的帮助, 在此对他们表示感谢。 1 引言 1 1 项目的背景 作为公司基于$ 3 c 2 4 4 0 的g p s 导航设备项目中的一个重要组成部分,图像浏 览软件在设计上力求达到和当前数码相框一样的标准。下面就简要的介绍一下车 载导航p d a 和数码相框。 一、车载导航p d a 随着汽车的普及和道路的建设,城际间的经济往来更加频繁,活动的区域也 越来越大。为了提高生活质量,大量的休闲活动、探险活动的举行使我们并不局 限在自己认识的一小块区域中,不认识道路,找不到目的地的情况也屡有发生, 就此,车载g p s 导航仪将会以合适的价位走入车主的世界,成为车上的基本装备。 g p s 导航系统是以全球2 4 颗定位人造卫星为基础,向全球各地全天候地提供 三维位置、三维速度等信息的一种无线电导航定位系统。它由三部分构成,一是 地面控制部分,由主控站、地面天线、监测站及通讯辅助系统组成。二是空间部 分,由2 4 颗卫星组成,分布在6 个轨道平面。三是用户装置部分,由g p s 接收机 和卫星天线组成。现在民用的定位精度可达】0 米内。车载导航p d a 即用户装置。 卫星导航技术的发展趋势主要表现在三方面:一是卫星导航的多系统并存, 使系统可用性得以提高,应用领域将更广阔;二是多元组合导航技术j 下在得到推 广应用,主要有g p s 与移动通信基站定位、陀螺、航位推算技术等的组合应用; 三是卫星导航与无线通信等其它高技术相结合,如g p s 接收机嵌入到蜂窝电话、 便携式p c 、p d a 和手表等通信、安全和消费类电子产品中,从根本上促进了1 1 r 技术的整体发展。 具有车载g p s 导航仪功能的p d a ,内置有g p s 接收器,并且有g p s 地图, 实现实时定位车辆的位置,其它功能与普通p d a 一样,可以进行影音播放,图片 浏览等。 二、数码相框 数码相框是展示数码照片而非纸质照片的相框。数码摄影必然推动数码相框 的发展,因为全世界打印的数码相片不到3 5 。数码相框通常直接插上相机的存 储卡来展示照片,当然更多的数码相框会提供内部存储空间以接外接存储卡功能。 简而言之,数码相框是观看和分享数码照片的专用设备。 1 数码相框分类 ( 1 ) 简单功能数码相框( 只能展示j p e g 格式的图片) ( 2 ) 简单多媒体数码相框( 还能播放音乐和视频) ( 3 ) 高级多媒体数码相框( 通常支持无线8 0 2 1 l 连接,还能从网站甚至电子邮 件下载图片) 2 数码相框的主要部件 数码相框由三大部件组成:l c d 液晶屏、p c b 电路板和外框。液晶屏可以是 模拟的也可以是数码的,它们通过尺寸来区分。p c b 电路板是数码相框的核心, 因为它包含必须的软件。对于最终用户而言,外框是一个重要的标准。外框的材 质通常是塑料或木头的,有一些数码相框提供可更换的外框。 1 2 项目背景市场分析及项目水平 一、车载g p s 市场分析和存在的问题 据统计,国内现今的汽车保有量已经突破了3 3 0 0 万辆,且每年汽车销量仍在 两位数以上的幅度进行增长。在拥有几千万辆现有保有量的情况下,再加上超常 规的增长速度,和消费者对汽车导航需求的日益增加,即便只有1 0 的车辆安装 g p s 导航仪,最终的需求量也是令人咋舌的。巨大的市场前景让各大硬件制造厂 商纷纷试水,众多品牌的g p s 不断涌现。 1 车载g p s 导航地图软件市场分析 g p s 导航地图软件是g p s 导航仪的核心,纵观全国大大小小的地图厂商不下 一百余家,真正能在市场中占有一席之地的还是凯立德、灵图、瑞图、城际通等 移动导航系统巨商。 幽1 1g p s 后装导航地图软件市场分析幽 f i g1 1a n a l y s i s o f t h e n a v i g a t i o n m a p s o f l w e m a r k e t i n g p s 2 从图1 1 中可以看出,凯立德在汽车后装市场上一马当先,占据市场4 0 1 , 自1 9 9 9 年进入导航领域以来,经过十年发展的凯立德已经成为国内移动导航系统 第一品牌。 而居第二的灵图市场占有率为1 6 1 ,虽然灵图在导航电子地图方面有着信息 点较少、覆盖不够全面等缺点,但是经过近几年的积累,灵图公司的研发力量和 地图数据采集制作能力已经得到了很大提高,并基本保持着一年一个大版本更新, 四次小规模升级的速度。 城际通在市场占有率的榜单上分数是1 4 5 ,与一般的导航地图生产商有所不 同的是,城际通不仅出品软件,还自己生产硬件设备,例如坤达系列的g p s 导航 仪就是其旗下产品。 而在此三甲之外可谓诸方混战。瑞图万方的市场占有率为1 4 1 ,以比较微小 的差距落后于城际通;四维图新:四维在此次市场占有率榜单上仅占7 3 ,这一 成绩似乎不是那么骄人,与其前装市场上的地位有很大差距。据了解,截至0 7 年 下半年,四维图新的地图已经可以覆盖全部中国路网,并且可以提供9 8 0 个县市 的商用地图,但是对于不同的车型,四维的地图却做不到一视同仁,有些极尽详 细,有些却较为粗陋,难以满足消费者的导航需求,这也是四维在后装市场上所 占份额不高的原因之一;高德:市场占有率榜单成绩是7 9 ,与四维同样比较注 重汽车前装市场,并为国内一些汽车制造企业定制开发的汽车导航电子地图,用 于国内中高档轿车的车载多媒体导航,精力投入的方向不同也使得高德在后装市 场的把控力略有不足。 2 g p s 单芯片与模块共存 目前,中国g p s 导航的市场潜力巨大。但是在这巨大的市场下,芯片供应商 却没有显示出相应的强大供应队伍。2 0 0 6 年全球能数得出的商用化g p s 芯片厂商 仅有s i r f 、a t m e l 和美信等廖廖几家,n x p 、r f m d 和s i g e 等公司的软件g p s 方案离商用还差一些距离。今年,g p s 芯片厂商会在单芯片、低功耗上进一步提 升。老牌厂商s i r f 公司将在其成功销售的s i r fi h 家族上针对无线( 手机) 市场推 出支持r o m 的方案,具有更低的成本和功耗;而一向以推g p s 模块( 基于a t m e l 的芯片1 为主的u b l o x 将于今年第一季推出自己的单芯片u b l o x 5 ,拥有1 6 0d b m 的灵敏度;u n a y 公司也会推出u n 9 5 1 8 9 6 1 8 ;还有a t m e l 的a t r 0 6 3 0 3 5 等,这 些单芯片专门针对手机等嵌入式应用,具有体积、功耗和成本优势。 3 软件g p s 方案尚待成熟 去年,已有不少公司在宣传其软件g p s 方案,包括n ) 口、r f m d 、s i g e 以及 a t m e l 等公司。所谓软件g p s 就是将现在g p s 中的基带芯片取消,直接将g p s 的 软件写入到手机的基带( 或应用处理器) 中。这个方法的优势是可以节省很大的成 3 本,据称这些软件方案可以使g p s 成本下降到5 美元以下。 软件g p s 还存在很多的问题。一是采用软件g p s 方案设计难度加大,前期的 成本投入以及调试麻烦,这个难度要比使用单芯片的方案的难度更大,而且开发 的周期也加长了,同时软件的调试也比较麻烦。二是目前提供的g p s 软件的水平 也是一个问题,目前所能提供的方案根本没有成热,和现在的g p s 模块、芯片的 水平还没有可比性。软件g p s 虽然能实现很低的成本,但是它会占用手机中较多 的资源,并且手机提供给g p s 的资源也不稳定,导致g p s 的性能相应也不稳定。 因此,现在市面上还看不到这种方案的成熟商用。 当然,软件g p s 可能会成为未来的一个方向,特别是各种嵌入式应用。另一 个方向是,利用g p s 本身的a r m 核作为整个系统的处理器,实现简单操作功能 的产品也是应用的一个方向,产品的体积将会更小,应用更加灵活,功耗也更低。 二、数码相框市场分析及发展 数码相框由概念型产品进入市场至今,已经经历了5 、6 个年头。作为数码相 机及互联网不断飞速发展的衍生产物,今天已经被越来越多的普通消费者所接受。 1 数码相框市场分析: n ) 数码相框市场成长的必然性 ( a ) 市场需求的必然性: 在上世纪末本世纪初,数码相机有了迅速的发展,普及型数码相机的分辨率 由2 0 0 乃- 像素增长到现在的5 0 0 - - 8 0 0 万像素,价格也由3 0 0 美元左右下降到了现 在的1 2 0 美元左右。 传统的便携和单反3 5 c m 胶片相机已被数码相机替代基本退出市场。消费者拍 摄冲洗胶卷扩印照片的消费习惯已基本放弃。取而代之的是:数码相机 的大量使用,用各种存储器( 电脑硬盘、半导体存储器及可刻录光盘) 保存照片 成为大家习惯的做法,即使重印照片,其来源也大多来自数码相机。 因此,以各种电子显示器件如c r t 、= d 、d l p 等,用各种平台如t v 、p c 、 d v d 、d v b 等,去傲数字照片的回放和浏览,成为上游厂商和消费者共同的方向。 作为一种以数字照片的保存、回放和浏览为核心功能的产品,数码相框自然迎合 了消费者的这一需求。 ( b ) 核心器件性能和价格的合理化刺激了市场的发展: 数码相框有三大核心器件:处理器,半导体存储器和l c d 显示屏。 随着基于a r m 的s o c 不断发展,数码相框所需要的a r m + j p e g 处理器技 术已为许多厂商所拥有,集成了u s bh o s t 及卡接口单元的产品也不鲜见;n a n d f l a s h 技术飞速发展,单位容量的价格在过去的6 年中约下跌了4 0 - 5 0 倍;中小尺 寸的l c d 显示屏由于各种应用的市场需求成熟,在过去的2 年中,价格也下跌1 以 4 倍。 ( 2 擞码相框的市场正处在导入期和成熟期的交汇点 “) 解决方案和产品正在成熟 目前市面上的解决方案,有沿用d v d 的处理器以软解码方式处理数字照片的, 也有s o c 的应用于相框产品的,但高集成度的s o c 平台和方案并不多,常见的只 有a m l o g i c 、台湾旺宏和其乐达等几家。 ( b ) l c d 显示屏的瓶颈 作为高分辨率数字相片的还原,要求l c d 显示屏有较高的分辨率以及采用逐 行的显示模式,p h i l i p s 的数码相框采用了7 2 0 x 4 8 0 的数字屏,而现在大多数厂商 采用的还是大量在传统视听设备上使用的模拟7 ,屏,其分辨率等效为4 8 0 x 2 3 4 , 而且由于隔行扫描造成的帧抖动大大影响了静止图像的重现效果。 ( 3 ) 今后几年将为处在数码相框产品链各段的企业带来巨大的商机 未来几年,数码相框的市场将处在逐渐走向成熟期的阶段,其产销量和市场 需求依然将保持大幅度的增长。 2 数码相框的平台及关键器件 目前的数码相框主芯片,针对的还是中小尺寸的i , c d 显示屏的应用,主要来 自于d v d p i a y e r 平台的核心芯片,其他的多媒体应用平台以及一些专用平台也有 一些市场份额。表1 1 罗列了可以或己经应用于数码相框的平台及其主要参数: 表1 1 数码相框的方案及其主要参数 v e n d o rj p e gu s bu s b c a r di n t e r f a c e n a n dt v d e o d o rh o s td 目,i c e f l a s ho u t 硬解软解2 01 12 o1 1c f m i c r o s d ,x dm s m s d d v em m c p r o a m j o g i c vvvvvv v e s svvv s u n p l u s vvv 旺宏 v 世纪民生vv i t m e lv v 瑞芯 vvv 帅 ” 读取位图信息头 获得位图的长和宽 获得指向位图实际 图像数据的指针 g e t b m p f i l e b i t s 0 s t r e t c h d i b i t s o 显 5 2j p e g 图的解码 如何获 实际图1 针即g 刮 ( : 读取臀件头 图5 4 显示位图流程图 f i g5 4f l o wc h a r to fs h o w i n gb i t m a p 大家知道,图像信息的数据量非常大。举一个例子就明白了,一张 a 4 ( 2 1 0 m m + 2 9 7 m m ) 幅面的照片,若用中等分辨率( 3 0 0 d p i ) 的扫描仪按真彩扫描, 共有( 3 0 0 2 1 0 2 5 4 ) ( 3 0 0 2 9 7 2 5 4 ) 个像素,每个像素占3 个字节,其数据量为2 6 m 字节,其数据量之大可见一斑了。如今在i n t e r n e t 上,传统基于字符界面的应用逐 渐被能够浏览图像信息的w w w ( w o r l dw i d ew e b ) 方式所取代。w w w 尽管漂亮, 但是也带来了一个问题:图像信息的数据量太大了,本来就已经非常紧张的网络 带宽变得更加不墩重负,使得w o r l dw i d ew e b 变成了w o r l dw i d ew a i t 。总之,大 数据量的图像信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的 处理速度增加极大的压力。单纯靠增加存储器容量,提高信道带宽以及计算机的 处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。压缩的理论基 础是信息论。从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定 的信息,去掉确定的信息( 可推知的) ,也就是用一种更接近信息本质的描述来代 替原有冗余的描述。这个本质的东西就是信息量( 即不确定因素) 。 压缩可分为两大类,第一类压缩过程是可逆的,也就是说,从压缩后的图像 能够完全恢复出原来的图像,信息没有任何丢失,称为无损压缩:第二类压缩过 程是不可逆的,无法完全恢复出原图像,信息有一定的丢失,成为有损压缩。选 择哪一类压缩,要折中考虑,尽管我们希望能够无损压缩,但是通常有损压缩的 压缩比( 即原图像占的字节数与压缩后图像占的字节数之比,压缩比越大,说明 压缩效率越高) 比无损压缩的高。 图像压缩一般是通过改变图像的表示方式来达到,因此压缩和编码是分不开 的。图像压缩的主要应用是图像信息的传输和存储,可广泛地应用于广播电视, 电视会议,计算机通讯,传真,多媒体系统,医学图像,卫星图像等领域。 压缩编码7 1 的方法有很多,主要分成以下4 大类:( 1 ) 像素编码;( 2 ) 预测编码1 8 1 ; ( 3 ) 变换编码【8 】;( 4 ) 其它方法。 所谓像素编码是指,编码时对每个像素单独处理,不考虑像素之间的相关性。 在像素编码中常用的几种方法有:l 脉冲编码调制( p u l s ec o d em o d u l a t i o n ,p c m ) ;2 熵编码( e n t r o p yc o d i n g ) ;3 行程编码( r u nl e n g t hc o d i n g ) ;4 位平面编码( b i tp l a n e c o d i n g ) 。这里面,我们要介绍的是与j p e g 有关的熵编码1 9 l 中的哈夫曼( h u f f m a n ) 编码,行程编码( 以读取p c x 文件为例) 。 所谓预测编码是指,去掉相邻像素之间的相关性和冗余性,只对新的信息进 行编码。举个简单的例子,因为像素的灰度是连续的,所以在一片区域中,相邻 像素之间灰度值的差别可能很小。如果我们只记录第一个像素的扶度,其它像素 的灰度都用它与前一个像素灰度之差来表示,就能起到压缩的目的。如2 4 8 ,2 ,1 , 0 ,1 ,3 ,实际上这6 个像素的灰度是2 4 8 ,2 5 0 ,2 5 1 ,2 5 1 ,2 5 2 ,2 5 5 。表示2 5 0 需要8 个比特,而表示2 只需要两个比特,这样就实现了压缩。 常用的预测编码有调制( d e l t am o d u l a t i o n ,简称d m ) ;微分预测编码 ( d i f f e r e n t i a lp u l s ec o d em o d u l a t i o n ,d p c m ) 。 所谓变换编码是指,将给定的图像变换到另一个数据域( 如频域) 上,使得 大量的信息能用较少的数据来表示,从而达到压缩的目的。变换编码有很多,如1 离散傅立叶变换( d i s c r e t ef o u r i e r t r a n s f o r m ,d f n ;2 离散余弦变换( d i s c r e t ec o s i n e t r a n s f o r m ,d c t ) :3 离散哈达玛变换( d i s c r e t eh a d a m a t dt r a n s f o r m ,d h t ) 。 其它的编码方法也有很多,如混合编码( h y b i r dc o d i n g ) ,矢量量化( v e c t o r q u a n t i z e ,v ,l z w 算法。在这里,我们只介绍l z w 算法的大体思想。 我们将以j p e g 压缩编码标准为例,看看上面的几种编码方法在实际的压缩编 码中是怎样应用的。 1 哈夫曼( n u f f m a n ) 编码 h u f f i n a n 编码是一种常用的压缩编码方法,是h u f f m a n 于1 9 5 2 年为压缩文本 文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数 据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制玛,且码 的长度是可变的。举个例子:假设一个文件中出现了8 种符号s o ,s 1 ,s 2 ,s 3 , s 4 ,s 5 ,s 6 ,s 7 ,那么每种符号要编码,至少需要3 比特,假设编码成0 0 0 ,0 0 1 , 0 1 0 ,0 1 1 ,1 0 0 ,1 0 1 ,1 1 0 。1 1 1 ( 称做码字1 。那么符号序列s o s l s 7 s o s l s 6 s 2 s 2 s 3 s 4 s 5 s o s o s l 编码后变成0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 ,共用了4 2 比特。 我们发现s 0 ,s 1 ,s 2 这三个符号出现的频率比较大,其它符号出现的频率比较小, 如果我们采用一种编码方案使得s o 。s 1 ,s 2 的码字短,其它符号的码字长,这样 就能够减少占用的比特数。 例如,我们采用这样的编码方案:s o 到s 7 的码字分别0 1 ,1 1 ,1 0 1 ,0 0 0 0 , 0 0 0 1 ,0 0 1 0 ,0 0 1 1 ,1 0 0 ,那么上述符号序列变成0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 ,共用了3 9 比特,尽管有些码字如s 3 ,s 4 ,s 5 ,s 6 变长了( 由3 位 变成4 位) ,但使用频繁的几个码字如s 0 ,s 1 变短了,所以实现了压缩。 编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如 果s 0 的码字为0 1 ,s 2 的码字为0 1 1 ,那么当序列中出现0 1 1 时,你不知道是s 0 的码字后面跟了个l ,还是完整的一个s 2 的码字。我们给出的编码能够保证这一 点。 下面给出具体的h u f f m a n 编码算法: ( 1 ) 首先统计出每个符号出现的频率,上例s 0 到s 7 的出现频率分别为4 1 4 , 3 1 4 ,2 ,1 4 ,1 1 4 ,1 1 4 ,1 1 4 ,1 1 4 ,1 1 4 。 ( 2 ) 从左到右把上述频率按从d , n 大的顺序排列。 ( 3 ) 每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的 根节点,这两个叶子节点不再参与比较,新的根节点参与比较。 ( 4 ) 重复( 3 ) ,直到最后得到和为1 的根节点。 ( 5 ) 将形成的二叉树的左节点标0 ,右节点标i 。把从最上面的根节点到最下面 的叶子节点途中遇到的o , i 序列串起来,就得到了各个符号的编码。 上面的例子用h u f f m a n 编码的过程如图5 5 所示,其中圆圈中的数字是新节点 产生的顺序。可见,我们上面给出的编码就是这么得到的。 订9 l曲 面 订蝗叫 m 0 0 0 1 1 10 0 1 00 0 1 1 1 0 01 0 11 t s o 0 1 图5 5h u f l 编码的示意图 f i g5 5f i g u r eo fh u f f m a nc o d i n g 产生霍夫曼编码需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始 数据中,每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立 二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效, 因而得到广泛的应用。 2 行程编码限i 9l e n g t hc o d i n g ) 行程编码的原理也很简单:将一行中颜色值相同的相邻像素用一个计数值和 该颜色值来代替。例女1 1 :a a a b c c c c c c d d e e e 可以表示为3 a ! b 6 c 2 d 3 e 。如果一幅图像是 出很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。 然而,该算法也导致了一个致命弱点,如果图像中每两个相邻点的颜色都不同, 用这种算法不但不能压缩,反而数据量增加一倍。所以现在单纯采用行程编码的 压缩算法用得并不多,p c x 文件算是其中的一种。 p c x 文件最早是p cp a i n t b r u s h 软件所采用的一种文件格式,由于压缩比不高, 现在用的并不是很多了。它也是由头信息,调色板,实际的图像数据三个部分组 成。其中头信息的结构为: t y p c d e fs t r u c t c h a rm a n u f a c t u r e r ; c h a rv e r s i o n ; c h a re n c o a l n g ; c h a rb i t 锄e r _ p i x d ; w o r d x m i n ,y m i n ; w o r dx m a x y m a x ; w o r dh r e s ; w o r d v 嘲: c h a rp a l e t t e 4 8 ; c h a rr e s e r v e d ; c h a rc o l o u rp l a n e s ; w o r db y t e s _ p e rl i n e ; w o r d p a l e t t e _ t y p e ; c h a rf i l l e r 5 8 ; p c x h e a d ; 其中值得注意的是以下几个数据:m a n u f a c t u r e r 为p c x 文件的标识,必须为 0 x o a :x m i n 为最小的x 坐标,x m a x 最大的x 坐标,所以图像的宽度为x m a x - x m i n + l , 同样图像的高度为y m a x y i n + 1 :b y t e sp e r _ l i n e 为每个编码行所占的字节数。 p c x 的调色板在文件的最后。以2 5 6 色p c x 文件为例,倒数第7 6 9 个字节为 颜色数的标识,2 5 6 时该字节必须为1 2 ,剩下的7 6 8 ( 2 5 6 3 ) 为调色板的r g b 值。 下面我们针对2 5 6 色p c x 文件,介绍一下它的解码过程。 解码是以行为单位的。该行所d i m 字节数由b y t e s _ p e r _ l i n e 给定。为此,我们 开一个大小为b y t e sp e r _ l i n e 的解码缓冲区。一开始,将缓冲区的所有内容清零。 从文件中读出一个字节c ,若c 0 x c 0 ,说明是行程( r u nl e n g t h ) 信息,即c 的 低6 位表示后面连续的字节个数( 所以最多6 3 个连续颜色相同的像素,若还有颜 色相同的像素,将在下一个行程处理) ,文件的下一个字节就是实际的图像数据( 即 该颜色在调色板中的索引值) :若c “l x 2 7 x 2 :x 1 ) ? “l x 2 7 x 2 :x 1 ) :x 3 m i n w i d t h = m i n i d t h o ? 0 :m i n g i d t h m i n h e i g h t = y 3 ( y l y 2 7 y 2 :y 1 ) ? ( y l y 2 7 y 2 :y 1 ) :y 3 m i n h e i g h t = m i n h e i g h t o ? o :m i n h e i g h t m a x w i d t h = x 3 ( x l y x 2 7 x l :x 2 ) ? x 3 :( x l x 2 7 x l :x 2 ) m a x w i d t h = m a x w i d t h o ? m a x w i d t h :0 m a x h e i g h t = y 3 ( y l y y 2 7 y l :y 2 ) ? y 3 :( y 1 ) y 2 7 y l :y 2 ) m a x h e ig j , l = m a x h e i g h t y o ? m a x h e i g h t :0 d s t w i d t h = m a x w i d t h m i n w i d t h d s t h ej 【g h t = m a x h e i g h t m i n h e i g h t : 其中a n g l e 为旋转角度,i ) s t w i d t h 、d s t h e i g h t 为旋转后的宽度和高度。旋转代 码实现如下: f o r ( u i n ti = 0 :i ( u i n t ) d s t h e i g h t :i + + ) f o r ( u i n tj = 0 :j = o ) ( s r c x = 0 ) ( s r c y s r c h e i g h t ) ) b i t b lt ( d c d s t ,j ,i ,1 ,1 ,d c s r c ,( i n t ) s r c x ,( i n t ) s r c y ,s r c c o p y ) : l 上面的程序是通过两个f o r 循环,在两个d c 中逐个像素进行对拷,然后,将 目的d c 显示到屏幕上。由于是在两个d c 中逐个像素进行对拷,我们发现对于一 幅普通大小图片,比如:8 0 0 * 6 0 0 ,在我们的样机上,它旋转至少需要3 秒以上, 这是产品所不能接受的。 由于我们的产品只需要实现图片的0 。、9 0 。、1 8 0 。、2 7 0 。的旋转,所以我 们采用提前分配内存,在所分配的内存中,建立翻转的图片,当点击旋转按键后, 直接将内存中新建立的图片绘制到我们的显示屏上。在建立翻转的图片时,要注 意4 字节对齐问题:针对l b i t ,4 b i t ,8 b i t ,1 6 b i t ,2 4 b i t 的b m p ,3 2 b i tb m p 一个像素就 是4 字节,不用对齐。一个图像有像素宽度( w i d t h ) 和高度2 个属性,b m p 的4 字节对齐是:一行w i d t h 个像素的数据长度( 字节单位) 如果不能被4 ,则用o 补 齐4 字节后再开始存放下一行的像素数据,如果是最后一行,后面没有数据了, 同样要补齐。 因为我们处理的是2 4 位位图,所以它的信息头b m a p 啪脏a d e r 中的 b i s i z e h n a g e 为: 表6 1 不同旋转度数对应的b i s i z e l m a g e 大小 t a b l e6 1s i z eo fb i s i z e l m a g ef o rd i f f e r e n tr e v o l v i n gd e g r e e s 旋转度数 0 0 9 0 。1 8 0 。2 7 0 。 一 b i s i z e l m a g e( m _ w i d t h * 2 4 + 3( m _ h e i g h t * 2 4 + 3( m _ w i d t h * 2 4 + 3 1 )( m _ h e i g h t 2 4 + 3 1 ) i ) 3 2 t 41 ) 3 2 4 f 3 24 3 2 4 m w i d t h r e _ h e i g h tm _ w i d t hm h e i g h t 求出b i s i z e l m a g e 后,就可以在分配的内存中建立旋转图片了,具体做法:旋 转0 度: b y t e * d s t c o p y : b y t e * m _ b u f c o p y : d s t w i d t h = ( d o u b l e ) m _ w i d t h ; d s t h e i g h t = ( d o u b l e ) m _ h e i g h t ; 】【d e s t - - d s t w i d t h : y 1 ) e s t = d s t h e i 【g h t : m e m s e t i ,0 ,s i z e o f ( b 1 1 m p i n f o ) ) :h i 为一个b i t m a p i n f o 结构体 新建一位图 b i b m i h e a d e r b i s i z e = s i z e o f ( b i b m i h e a d e r ) : b i i m i h e a d e r b i w i d t h = m _ w i d t h ; b i b m i h e a d e r b i h e i g h t = m _ h e i g h t : b i b 皿i h e a d e r b i p l a n e s = l : b i b m i h e a d e r b i b i t c o u n t = 2 4 : b i b m i h e a d e r b i c o m p r e s s i o n = b i _ r g b ; b i b m i h e a d e r b i s i z e i m a g e = ( r e _ w i d t h * 2 4 + 3 1 ) 3 2 4 m _ h e i g h t : b i b m i h e a d e r b i c l r u s e d = 0 : b i b m i h e a d e r b i c l r l m p o r t a n t = 0 : m e m s e t ( d s t l ,0 ,( ( m j i d t h * 2 4 + 3 1 ) 3 2 4 m _ h e i g h t ) ) :将所分配的内存初始化为0 d s t c o p y = d s t l : f o r ( u i n ti = 0 :i m _ h e i g h t :i + + ) 将原始图像进行翻转 f m _ b u f c o p y = mb u f + i ( ( m j i d t h 2 4 + 3 1 ) 3 2 4 ) :1 1 从该行第一个像素向前 f o r ( u i n tj = o :j g e t w i n d o w r e c t ( & r c ) ; s c r e e n t o c i i e n t ( & r c ) ; 其中第一句定义一个坐标结构体,用来存储控件的坐标;第二句用来得到控 件在显示屏幕上的屏幕坐标,这时的原点在显示屏的左上角。第三句将屏幕坐标 映射为相对于对话框的坐标。 这样我们就完成了控件的隐藏,在停止播放时,即o n l b u t t o n d o w n 函数中利 用我们保存在结构体f c 中的坐标信息,将隐藏的控件重新移回原位1 1 “。 6 3 加载图片列表模块 6

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论