jpeg压缩编解码程序_第1页
jpeg压缩编解码程序_第2页
jpeg压缩编解码程序_第3页
jpeg压缩编解码程序_第4页
jpeg压缩编解码程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

JPEG 压缩编解码程序 使用 matlab 2013b 软件进行仿真测试 测试图片在文档最后方 function jpegCompress 以离散余弦变换 DCT 为基础 对灰度图像进行有损压缩及重建 jpeg 算法 该算法过程主要包括以下几个部分 1 读取图像 2 DCT 变换 3 量化 4 Z 形扫描 5 huffman 编码 6 huffman 解码 7 反 Z 形扫描 8 反量化 9 反 DCT 变换 10 输出图像 11 计算压 缩性能 clear all 设定量化因子 quality quality 为量化因子 默认值为 1 决定了截去的系数和压缩比 增加 quality 的值 可增 大压缩比 使压缩编码后的图像占用存储空间更小 quality input 请输入量化参数 数值型 默认为 1 if isempty quality quality 1 end if quality 0 error 请输入大于 0 的数字 end 1 获取图像 tic I imread coin128 tif I imread cameraman128 tif I imread cameraman256 tif I imread finger256 bmp I imread fingerprint256 bmp I imread lena512 bmp 读入读一幅灰度图像 disp 读取图像时间 toc 2 DCT 变换 tic OriginalImage double I 图像数据类型转换 am an size OriginalImage 得到图像的大小 ImageSub OriginalImage 128 为实现 DCT 变换 每个像素值都减去 128 即像素层次移 动 128 fun1 dct2 TCM blkproc ImageSub 8 8 fun1 使用 dct2 函数进行二维 DCT 变换 得到变换系数矩阵 TCM disp DCT 变换时间 toc 3 量化 tic Q 16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 101 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99 quality 亮度量化表 TCM Q blkproc TCM 8 8 round x P1 Q 对图像进行量化 得到量化后的 TCM 即 TCM Q disp 量化时间 toc 4 Z 形扫描 tic TCM Q col im2col TCM Q 8 8 distinct 将每个 8 8 数据块的量化系数排成列向量 得 到 64 数据块总数大小的矩阵 TCM Q col Num col size TCM Q col 2 得到 TCM Q col 的列数 即数据块的个数 Num col order 1 9 2 3 10 17 25 18 11 4 5 12 19 26 33 41 34 27 20 13 6 7 14 21 28 35 42 49 57 50 43 36 29 22 15 8 16 23 30 37 44 51 58 59 52 45 38 31 24 32 39 46 53 60 61 54 47 40 48 55 62 63 56 64 TCM Q colZ TCM Q col order 用 z 型扫描方式对变换系数重新排列 disp Z 形扫描时间 toc 5 编码 tic 5 1 直流编码 dc 为直流系数表 dcdpcm 为直流差值编码表 dc zeros Num col 1 dcdpcm zeros Num col 1 for j 1 Num col dc j TCM Q colZ 1 j 将 DC 系数排列到一个矢量中 end dcdpcm 1 dc 1 for j 2 Num col dcdpcm j dc j dc j 1 求 DC 系数的 DPCM 编码 end dcdmax max dcdpcm 最大直流 dcdmin min dcdpcm 最小直流 dch histc dcdpcm dcdmin dcdmax 统计各个值的直方图 dcnum length dcdpcm dcp dch dcnum 计算各个值的概率 dcsymbols dcdmin dcdmax 直流分量值 dcdict dcavglen huffmandict dcsymbols dcp 生成字典 dcdict 计算平均码长 dcencoded huffmanenco dcdpcm dcdict 对 DC 系数的 DPCM 进行 Huffman 编码 得到 直流编码 dcencoded 5 2 交流编码 将非零 AC 元素重新排列放到 ac 中 每一列均以 eob 作为结束 共有 count 个非零元素 eob max ImageSub 1 创建一个块结束符号 num numel TCM Q colZ size TCM Q col 2 ac zeros num 1 count 0 for j 1 Num col i max find TCM Q colZ j find 函数为寻找 yy 函数中非零元素的位置 max 函数 为取里面的最大值 若无非零元素或者为空 返回 empty if isempty i i 1 end p count 1 q p i 1 if i 1 ac q eob end ac p q TCM Q colZ 2 i j eob count q end ac count 1 end 删除 ac 中的无用元素 acmax max ac 最大交流 acmin min ac 最小交流 ach histc ac acmin acmax 统计各个值的直方图 acnum length ac acp ach acnum 计算各个值的概率 acsymbols acmin acmax 交流分量值 acdict acavglen huffmandict acsymbols acp 生成字典 dcdict 计算平均码长 acencoded huffmanenco ac acdict 对 AC 系数进行 Huffman 编码 得到交流编码 acencoded disp 编码时间 toc 6 解码 tic 6 1 直流解码 dcdecoded huffmandeco dcencoded dcdict 直流 Huffman 解码 根据直流解码恢复直流分量 并放入 TCM Q colZ Rec 的第一行 TCM Q colZ Rec 1 1 dcdecoded 1 for i 2 Num col TCM Q colZ Rec 1 i TCM Q colZ Rec 1 i 1 dcdecoded i 计算第 i 列直流分量 并 将直流分量放入 TCM Q colZ Rec 的第 i 列第 1 行 end 6 2 交流解码 acdecoded huffmandeco acencoded acdict 交流 Huffman 解码 根据交流解码恢复交流分量 放入 TCM Q colZ Rec 的第 2 64 行 j 1 j 用来记录第几列 k 2 k 用来记录第几行 maxk 1 count 0 count 用来记录连续不等于 eob 的个数 当 count 63 时 下一个 eob 仅作为结 束符 不解码 for i 1 size acdecoded if acdecoded i eob TCM Q colZ Rec k 64 j 0 j j 1 k 2 else TCM Q colZ Rec k j acdecoded i k k 1 end end disp 解码时间 toc 7 反 Z 型扫描 tic order2 1 3 4 10 11 21 22 36 2 5 9 12 20 23 35 37 6 8 13 19 24 34 38 49 7 14 18 25 33 39 48 50 15 17 26 32 40 47 51 58 16 27 31 41 46 52 57 59 28 30 42 45 53 56 60 63 29 43 44 54 55 61 62 64 TCM Q col Rec TCM Q colZ Rec order2 用反 z 型扫描方式对变换系数重新排列 TCM Q Rec col2im TCM Q col Rec 8 8 am an distinct 将 TCM Q col Rec 的每个列 向量排成 8 8 数据块 将矩阵变为图像 size disp 反 Z 形扫描时间 toc 8 反量化 tic TCM Rec blkproc TCM Q Rec 8 8 round x P1 Q 对矩阵 TCM Q Rec 进行反量化 disp 反量化时间 toc 9 反 DCT 变换 tic fun2 idct2 ImageSub Rec blkproc TCM Rec 8 8 fun2 使用 idct2 函数进行二维反 DCT 变换 得到 ImageSub Rec ReconImage double ImageSub Rec 128 disp 反 DCT 变换时间 toc 10 输出图像 tic subplot 1 2 1 imagesc I colormap gray title 原始图像 subplot 1 2 2 imagesc ReconImage colormap gray title 重建图像 disp 输出图像时间 toc 11 计算压缩性能 encoded lenght numel dcencoded numel acencoded 编码长度 AverageBit encoded lenght am an 计算编码比特率 每个像素所占 的比特数 CompressionRatio am an 8 encoded lenght 计算压缩倍数 原图大小与压缩 后的比值 e double I double ReconImage MSE sqrt sum e 2 an am 均方误差 指参数估计值与参

温馨提示

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

评论

0/150

提交评论