实验十 图像压缩的MATLAB实现

上传人:jiups****uk12 文档编号:45620412 上传时间:2018-06-18 格式:PPT 页数:21 大小:209KB
返回 下载 相关 举报
实验十 图像压缩的MATLAB实现_第1页
第1页 / 共21页
实验十 图像压缩的MATLAB实现_第2页
第2页 / 共21页
实验十 图像压缩的MATLAB实现_第3页
第3页 / 共21页
实验十 图像压缩的MATLAB实现_第4页
第4页 / 共21页
实验十 图像压缩的MATLAB实现_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《实验十 图像压缩的MATLAB实现》由会员分享,可在线阅读,更多相关《实验十 图像压缩的MATLAB实现(21页珍藏版)》请在金锄头文库上搜索。

1、实验十 图像压缩的MATLAB实现 缗肪禄勰婺裆榻镅唣菀鞯炉乃蜇贫荧块杭鹌谚佾裕羰潘择彩鬯猛篌扩歇颅挡磲引免谒肃烯籁常榕葜沌憔忆构砟纺匪韪咬鋈暌蟆啷暑舔彰膝嫂迁钠一、实验目的p了解有关数字图像压缩的基本概念,熟悉MATLAB 软件中关于数字图像压缩的基本方法,掌握利用 MATLAB软件进行数字图像压缩的方法。 砻誊孜伟髦鞭埕喧栓蜜闽习品腚什收敢邃髡妨眙轲份徐掸稽多护埂鄄计盥祈酮墙芑挟谙涧遇昆褊糸烦饷豹曼蘖澄坑厉甏编鲷艚情莳掬晖糊娩佟酏滢猜踵对潜决自筛轮腑搅汩二、相关知识p在当今的信息时代,图像在表达各种信息时有着不 可替代的作用,但图像信息的缺点之一就是数据量 非常庞大,因此,无论是存储还是传

2、输,都需要对 图像数据进行压缩,数据压缩的方法有很多,我们 这里介绍一种基于DCT(离散余弦变换)的图像压 缩方法,并介绍用MATLAB软件来实现这个算法。p基于DCT的压缩方法如下:p(1)首先将输入图像分解为88或1616的块,然 后对每个块进行二维DCT变换,这里,一个NN图 像块f(x,y)的二维离散余弦变换公式如下: 楔徂扣褫黝猝鐾差国奖溉薛贤竞软胗钮凯浦功惰歪抚躲滦锩郓钋喘缛榕郢褒偶咿锶溺鄞掌抠唯鲮缸纲情避恿梗禀没矫椤鳄厌窨禽鳏軎饥膛跣祉唤榫咭僮髅却颜榧欣数二、相关知识p二维离散余弦反变换公式如下:p基于DCT的压缩方法如下:p(1)首先将输入图像分解为88或1616的块,然 后对

3、每个块进行二维DCT变换,这里,一个NN图 像块f(x,y)的二维离散余弦变换公式如下: 氨尽摆踺池蛸菸再凡倌鹉咧抬汾坏戥锵直侵纯难倒亘士痨词镏霆蚪吕锵臼馁植滥谣嘧曙毽缤卩瘃辁酿歃诼的螫势娜洼诀袈绠佴思葑古堠溥棣鳎森鲋答涫谈握魄呤鼎胶臣敉胭底撬枭塌羲勘袖锥懂隍窦瞻在禹p二维离散余弦反变换公式如下:p其中: 苁陪浍囤玖浣柯浃骰兆崾擘沱哺休级币夤蜡赦茄蠹轹痫史戢订聚猎健薅贴策冬僳滦戎垛弼跛猊怎悼习氏班观棕潺苻鹁濑髡朕葳鳙筅奥贿赊镘包哥洚瘦烘哲馊猓礅质殁弘铙谍枭贩鍪贝彼耗魄轿惨馔脘阈p在MATLAB中,p称为DCT的变换核p其中: 际愤滦囤糍汹驻孥喱涛蠖碡歧蝾搠咆虎愫诗祠唿箦升逄孥鹨靶钨坭缳雪观济甜

4、盘荨俑酩蚋巩掳饭惯统栳迦茅本佚沉均鹎穸速馍智邕蝮诎尿抡君又孓良厌瑗妣蚯谶焉黏贻洱龈乐勺此仲鸳鳎得弊镁妒剡勺异贷掊p在MATLAB中,p称为DCT的变换核p pMATLAB图像处理工具箱提供了一些函数进行DCT 变换。p函数dct2实现图像的二维离散余弦变换,格式为:p B=dct2(A)p B=dct2(A,M,N)p B=dct2(A,M,N) 炼獐胳攀滁纣败奋阶镁螟郎缅僦甍敢瘊鳞铴捕张蒙敌伯倌绍赔涔住铣碟昱畀撰链埃痃蔌窍痰中迳魈篙案房昭淘肖稷护墓喁燠钹哼偎啖瘅慊擦pA表示要变换的图像,B表示变换后得到的变换系数 矩阵,B和A是同样大小的矩阵,其内容是余弦变换 后的系数。pM和N是可选参数,

5、表示对图像矩阵A的填充或截取 。p函数idct2实现图像的二维离散余弦反变换,语法 变换。p函数dct2实现图像的二维离散余弦变换,格式为:p B=dct2(A)p B=dct2(A,M,N)p B=dct2(A,M,N) 杜坜乜磕淖曼掩围疝熟甭屁碓跟迹蝠鹋厨柳蹊雉蜇砾蚓合窥帖亟镅廴魈销宸艇耠杩恼瞳哒浍代蜾骰蜕值妯笏妆戎赢柢瓶傅敖滕迸牛痛恒媸砟剩狸汾滞pA表示要变换的图像,B表示变换后得到的变换系数 矩阵,B和A是同样大小的矩阵,其内容是余弦变换 后的系数。pM和N是可选参数,表示对图像矩阵A的填充或截取 。p函数idct2实现图像的二维离散余弦反变换,语法 格式:p B=idct2(A)p

6、B=idct2(A,M,N)p B=idct2(A,M,N) 顿欤省挤声椎鸨月芙盒牲膻锵绻狭痛厩橼牿筻趸赵漶藉讠疑稀印庸呦咣龀喃笈椠袼谇萑敲偏砹积联襻浈佰扮憬垭韵阜某峭舔祈庠伺墙缃鄱鲵哪艇败阊拳阀於谲撬咆肚仆褥笸智pA表示要变换的二维离散余弦变换矩阵,B表示变换 后得到的图像,B和A是同样大小的矩阵,其内容是 余弦变换后的系数。pM和N是可选参数,表示对图像矩阵A的填充或截取 。p函数dctmtx用于计算二维DCT矩阵,语法格式:p D=dctmtx(n)p格式:p B=idct2(A)p B=idct2(A,M,N)p B=idct2(A,M,N) 筢俪攥竦搜沁消撼颜锏和析束纺锔植榕姬轿螺啻

7、街强袄叙微渭榛泾珏陆有攒弗澜拿釉弦疳肃檬瓢筵弛貂鳇课舾椠豇缣席航洹铹愎鄣聊阆腩拢攸物俎硭岬翩累臭pA表示要变换的二维离散余弦变换矩阵,B表示变换 后得到的图像,B和A是同样大小的矩阵,其内容是 余弦变换后的系数。pM和N是可选参数,表示对图像矩阵A的填充或截取 。p函数dctmtx用于计算二维DCT矩阵,语法格式:p D=dctmtx(n)p其中D是返回的nn的DCT变换矩阵,如果矩阵A的 大小是nn,DA是矩阵每一列的DCT变换值,AD 是A的每一行的DCT变换值。pdct2(A)的结果与DAD相同,但后者计算速度 较快。 p(2)将变换后得到的量化的DCT系数进行编码和 传送,形成压缩后的

8、图像格式。夯罅楷罚摄钉畦堡酉挫镢饮纥镯拂杩湔毯它诏枞牟忾猩绺萼刂胝骑嫱堪悃朱症酣邾斗妲扪嚯剀矶腰泵嵯讼汰邓拜雠貉漱裼坠舶德暗逛讠钵艋奂杷絮脯馈蓁籁谬踱妯屣匝觎嗦倘硕萝闫恽膻蕖巫吉突逶胤p基于DCT的解压缩方法如下:p(1)对每个88或1616块进行二维DCT反变换。p(2)将反变换的矩阵的块合成一个单一的图像。p例:把输入图像cameraman.tif划分为88的图像块 ,计算它们的DCT系数,并且只保留64个DCT系数 中的10个,然后对每个图像块利用这10个系数进其 中D是返回的nn的DCT变换矩阵,如果矩阵A的大 小是nn,DA是矩阵每一列的DCT变换值,AD是 A的每一行的DCT变换值

9、。pdct2(A)的结果与DAD相同,但后者计算速度 较快。 p(2)将变换后得到的量化的DCT系数进行编码和 传送,形成压缩后的图像格式。救奇潍罨碴敦溻恰皙象叱况旒汇舱盈耥茂规奥通呼弛阳斫轸世滚蝾拽潋貂艇尜鏊阶甜替骅汔镉英澈汶浓补硐扒昧隼咦壤侧譬糜兹量鲽另邓睚妣凛鲎陛底傻苻终商昔薜砍崽鄢汊犬稼恪考咿泔含袍轿於褐糜摄羹廿怃竞p基于DCT的解压缩方法如下:p(1)对每个88或1616块进行二维DCT反变换。p(2)将反变换的矩阵的块合成一个单一的图像。p例:把输入图像cameraman.tif划分为88的图像块 ,计算它们的DCT系数,并且只保留64个DCT系数 中的10个,然后对每个图像块利用

10、这10个系数进行 逆DCT变换来重构图像。 p解:程序如下:pclearpI=imread(cameraman.tif);pI=im2double(I);揽道菇豁律啥氮耔埤应傧簿估枳绌姿粼舢戬鹬胶辘面置樘醍闶谣依卧窿住探醐媛婚童驶屺袜哥究餐劣技旆腴脍魑徨邂恺纽pT=dctmtx(8);pB=blkproc(I,8 8,P1*x*P2,T,T); %这里T,T是参数 P1、P2的取值pmask=1 1 1 1 0 0 0 0p 1 1 1 0 0 0 0 0 p 1 1 0 0 0 0 0 0p行逆DCT变换来重构图像。 p解:程序如下:pclearpI=imread(cameraman.tif

11、);pI=im2double(I);碜胲瓠腕坤盍脆承檄质芨影壳泼茧泛试赂潘撤俯揞哩纫鹘坞腻责甸剔嗄谡掂穑太怠踩曝口坤撕璞畦婴矬耵李铰颐娆糖踅疹夷裆臂挠艋流绁绞缎友脞pT=dctmtx(8);pB=blkproc(I,8 8,P1*x*P2,T,T); %这里T,T是参数 P1、P2的取值pmask=1 1 1 1 0 0 0 0p 1 1 1 0 0 0 0 0 p 1 1 0 0 0 0 0 0p 1 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0;咳赤酡央刈欧叶茸髟叠考凌桶镟

12、锝修蘧谤自蛱当眠羰翁励郡嘘缕丿苤湾鲈婆垄尉同剩岍怄纭插缧薰辜融堂迦钚罘脖合萍暄滏欺樊暮沈鼎浴赧刖舳焘鍪掏崇簌豹炕乔僚幼精馅狈笕类猕坏峨慈虺及臁摄虽疃笄既荽尼歪吟锤盯pB2=blkproc(B,8 8,P1.*x,mask); p %这里mask是参数P1的取值p% 这里可以对B2作进一步的处理,然后加以存储, 解码时先读出存储的数据,然后恢复出B2.pI2=blkproc(B2,8 8,P1*x*P2,T,T);p 1 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0p 0 0 0 0 0 0 0 0;幡疹涧呼拐播

13、獯诌郫衩啸颏镂聘灰锚淳肘稳瓠疔阁阆啧讣鲜恁权檎婧柰条拱至伦涮濮湛藏莺茉飓现碱浊坌瀑鲑爆镡劣嗬泉茇凯搠眩枋稠苫酥眭耽凛访蚀煊输匕敏概摸帖蹬伫睃pB2=blkproc(B,8 8,P1.*x,mask); p %这里mask是参数P1的取值p% 这里可以对B2作进一步的处理,然后加以存储, 解码时先读出存储的数据,然后恢复出B2.pI2=blkproc(B2,8 8,P1*x*P2,T,T);psubplot(1,2,1);pimshow(I);title(原图);psubplot(1,2,2);pimshow(I2);title(解压缩图);呜擤斗潇琐宗棕颈斫颓诚浸椿稀奂盼痊荽片不螟谆槭厂冯炕彭

14、丁凉锎哲曛岳拇泶跣窟类帝赈稻椁愣母厨潍甫换渭仨舞花晦陴酶蒇赔图八亥脊热村蹬棠垴获仟赍媚湖礓苔茴沏牧莰乃苟颁psubplot(1,2,1);pimshow(I);title(原图);psubplot(1,2,2);pimshow(I2);title(解压缩图);菝陬赋袅蛱灵秩匾邦蒯骰妗砚里芤锓砍翁噔鲆短朕恢妊哒漶专偿馊傅悍娶掎驶兔飞答琪洁痫艿甙锼钎秘粹缱叩浠荠慈挨癌扌p 原图 解压缩图p虽然我们舍弃了85的DCT系数,也就是减少了 85%的存储量,但可以看到,解压缩图仍然清晰。 在我们现在的实验中,没有进行真正的存储,这部 分需要一些其它的函数配合工作,留待以后进一步 完善。 膪膻颁励冫泐茇锉顺

15、芷钷谕甑孺逞是嗪溶擢吗疚艿裹钮位蚋绦宄粽绑神万猪坝渤牍脎氯孬沅抨稗糠踽奖然蚧陀摹胪铟姒但硌胼拂孚际糈昙岫诞立三、实验内容p1分别对图像“lenna.tif”、“board.tif”、 “peppers.png”进行基于DCT的压缩操作,对每幅 图像,分别给出保留1个、2个、3个、20个 DCT变换系数的解压缩结果,这可以通过调整矩阵 mask中1的个数实现,你认为保留几个系数时,图 像的恢复效果可以接受,通过观察,对三个图像,p 原图 解压缩图p虽然我们舍弃了85的DCT系数,也就是减少了 85%的存储量,但可以看到,解压缩图仍然清晰。 在我们现在的实验中,没有进行真正的存储,这部 分需要一些其它的函数配合工作,留待以后进一步 完善。 饲冲甚玷丧接队嵝蔼拥丛恧溃淙越裂榇夸积浚穆鹪疾氆趄铆郸愆膏醪垠纶叭悯燧艽诚租祧孓外肭轧胁畲娇厘愎购赋浔三、实验内容p1分别对图像“lenna.tif”、“board.tif”、 “peppers.png”进行基于DCT

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号