基于dct的图象压缩毕业论文内容摘要:
在高频系数为零的几率较大,因此,这种排序对于提高后面的熵编码的压缩效率非常有利。 直流分量的编码和解码对直流分量,并 不直接进行编码,而是利用差分编码的方法,对本块和前一块的直流分量之差 Diff DC I DC I1 , I 为块号 编码。 同时,由于亮度分量和灰度分量的统计特性不同,他们的 Haffman 编码也不相同,其码字结构为: 223 其中 4bit 二进制码“ SSSS”用来将 DC 的差值幅度范围分为 255。 其后的附加位用以唯一的规定该类中一个具体的差值幅度。 将附加位用 Haffman 码进行变长编码,其码表也由 JPEG 预先给出。 其 Haffman 编码表如下: 直流分量在解码时,只 需要用在编码过程中相同的这张 Huffman 表解码就可以了,其过程比较简单,所以在这里不再详细论述。 交流分量的编码 JPEG 用 Z 形扫描的方法将二维 DCT 系数展开成一维,其码字结构为 : 224 其中低 4 位“ SSSS”同直流分量的含义一样表示尾数的位数,高 4 位“ NNNN”给出了当前这个非零系数相对于前一个非零系数的位置 JPEG 对“ NNNNSSSS”采用二维 Haffman 码编码,这有利于提高编码效率,同样这张二维码表也由 JPEG预先给定。 64 个变换数经量化后,左上角系数是直流分量 DC 系数 ,即空间域中 64个图像采样值的均值。 相邻 8x8 块之间的 DC 系数一般有很强的相关性, JPEG 标准对 DC 系数采用 DPCM 编码 差分编码 方法,即对相邻像素块之间的 L 系数的差值进行编码。 其余 63 个交流分量 AC 系数 使用游程编码,从左上角开始沿对角线方向,以 Z 字形 zigzag 进行扫描直至结束。 量化后的 AC 系数通常会有许多零值,以 Z 字形路径进行游程编码有效地增加了连续出现的零值个数。 为了进一步压缩数据,对 DC 码和 AC 行程编码的码字再作基于统计特性的熵编码。 JPEG标准建议使用的熵编码方法有 Huffman 编码和自适应二进制算 术编码。 以上过程主要是基于数据的自身特点及其统计特性,整个过程以达到最大压缩里比为目的,其中又考虑到图像数据的统计特性。 以上过程已经有相应的软件证明这个压缩编码系统的可行性,同时根据 Shannon 香农 无噪声编码定理,定义如果对熵为某个特定值的信号源做无失真编码,计算所得的平均码长为一个围绕熵值向上波动的某个比特值,因此可能达到的最大压缩比为 : 通过分析 JPEG 压缩的过程,认识到 JPEG 的目的是为了给出一个适用于连续色调图像的压缩方法,使之满足以下三个要求 : 第一,达到或接近当前压缩比与图像保真度的技术 水平,能覆盖一个较宽的图像质量等级范围,能达到“很好”到“极好”的评估,于原始图像相比,人的视觉难以区分。 能适用于任何种类的连续色调的图像,且长宽比都不受限制,同时也不受限于景物内容、图像复杂度。 计算机复杂性是可控制的,其软件可在各种 CPU 上完成,算法也可用硬件实现。 通过实验可以验证使用 JPEG 压缩系统可以将压缩比达到 100:1,这样的压缩比可以说是基本上可以解决我们在前而所论述过的由于图像数据量大而产生的多种问题。 经过以上三个过程,原始图像得到很大程度的压缩。 压缩以后的数据,对于图像数据的存储来说, 节省了存储空问,使得原有的存储设备,能够用来存储更多的信息。 而对图像的传输而言,则减少了传输率,节省了传输时间,解决了数据量大和带宽有限的问题。 由于 JPEG 压缩算法是个对称算法,以上在 JPEG 的编码过程中己经详细说明了 JPEG 的编码过程并说明了解码过程的各个算法,所以这里只对 JPEG 的解码过程做简单说明。 首先,待解码的数据送入熵解码器,如果熵编码时采用的是 Haffman 编码方法,则解码需要根据相应的码表对输入数据进行解码,这种熵编码的解码过程是无失真的过程,所以解码器的输出能够完全恢复编码前的数据。 由 熵解码器输出的数据送入反量化器中,在反量化器中,图像模块的每一个系数与相应的量化阶相乘,以恢复量化前的系数值。 由于在量化过程中采用了四舍五入的方法,且根据码表设计原则对各个系数采用不同的量化间隔,所以在反量化过程中必然存在失真。 因而不可能精确地恢复量化前的系数值,相应的恢复出的最终图像也会因此而引入失真。 正是由于这个过程,使得 JPEG 算法具有对图像有较大的压缩比。 量化器的设计是整个压缩算法的关键环节,在 JPEG 算法中,量化器给出了缺省的数值,这在前一节中已经做了详细的介绍。 解码的最后一个过程就是反向离散余 弦变换,即 IDCT 过程。 由反量化器输出的数据通过在编码过程中算出的离散余弦变换表做反向的离散余弦变换,就得到了最终恢复的图像数据。 CxImage 类库是一个优秀的图像操作类库。 它可以快捷地存取、显示、转换各种图像。 而且 CxImage 类库是完全免费的 ,更宝贵的就是作者完全公开了源代码。 CxImage 是一个 C++类,可以加载、保存、显示,转换 BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式图像。 本次设计只用到了关于 JPEG 的部分,因为该函数库是开放函数库,故在此不多做介绍。 本章系统的阐述了基于 DCT 的 JPEG 系统的组成及实现的方法:经过 DCT 变换,量化,熵编码后图象被压缩,再经熵解码,反量化, IDCT 最后还原出原图象。 最后对于 JPEG 存在的问题,本文阐述比较明确,为下一步解决这些问题提供了可靠的,也为找到解决办法提供了方向。 3 章 图象块效应的产生 JPEG 系统存在的问题 JPEG 算法主要存在两个问题 :块效应和运算复杂、速度慢。 这些问题在压缩比很高的情况下表现得很明显,严重影响重建图像质量。 JPEG 中为 了对数据进行最大限度的压缩,需要将量化后的数据重新按“之”字形排列成一维数组,以计算各个连续零的长度。 并分开处理直流分量和交流分量,前者采用 DPCM,后者采用行程编码去除冗余。 然后将处理后的数据进行熵编码,以上压缩过程存在有很大的复杂性,同时因为 JPEG 算法的对称性,这就意味着编码器中实现的复杂性同样存在于译码器中。 可以看出 JPEG 算法的实现具有很大的复杂度。 再从计算复杂度的角度来看,在进行 DCT 和 IDCT 变换的时候,由于对每个系数都要进行 64x8x8x3 次乘法和 64x8x8 次加法。 在熵编码中如果采用 Huffman编码,将要收集图像数据的统计特性以及构建 Huffman 树,同时设计快速的查找算法,这些都增加了计算机的处理复杂度,影响了图像压缩的速度。 在多种文献中介绍了解决这些问题的多种方法,可大致归纳如下 : DCT 变换算法,如自适应改变块的大小,采用变种 DCT,但是有些方法会导致与 JPEG 标准不兼容。 采用滤波来处理平滑块边界,同时因采用低通滤波器,往往是牺牲某些高频信息为代价。 利用 HVS Human Visual System 的研究成果设计量化算法,以尽量消除人眼能感觉到的图像质量的下降。 余弦变换在 低比特率时其恢复图像的块边界上会出现明显可见的方块效应,从而降低了图像的视觉质量。 JPEG 压缩算法中,首先将采样数据分成 8x8 不交迭子块单独进行 DCT,但是在量化和编码过程中则是针对单个数据进行处理,缺少对块内元素的相关性的考虑。 为了获得高压缩比而对变换系数进行粗糙量化时,相邻块的边界就会不连续,即出现“块效应”,块效应主要出现在图像的平坦区,如果量化阶很大,压缩比提高了,但是精度却减少,以至块效应更明显。 变换系数进行粗糙量化时,相邻块的边界就会不连续,即出现“块效应”,块效应主要出现在图像的平坦区,如果 量化阶很大,压缩比提高了,但是精度却减少,以至块效应更明显。 对于图象的块效应,近来涌现出多种消除算法,例如一些被大家所熟知的算法: ZENG 提出的利用阶梯函数来表示块效应,对一些图像块的 DCT 系数应用零掩盖技术进行去除方块效应。 这种方法简单,但是会导致高频信息丢失严重,且会产生新的方块效应。 LIU 提出一种在 DCT 域块效应盲测量方法,把图像块边界分成 3 类,对每类边界分别应用不同的 DCT 域滤波方法去除块效应,但是这种算法处理后图像主观质量不是太好. Luo 应用相邻块之间 DCT 系数的相关性提出一种在平滑区采用二维 DCT 系数加权滤波,边缘区用 Sigma 空问滤波器的快速去块效应算法非常简单,但是该算法没有对是否存在块效应进行判断.同时在 标准中还用到了环路滤波器,它是放在 IDCT 块之后对图象进行处理。 本文运用了一种新的算法来对块效应进行处理。 这种方法只是在 DCT 域内多进行了一些 DCT 变换,提高了点与点之间被降低的相关性,以达到去处方块效应的目的。 块效应的产生,如前文所述,是由于不交迭子块单独进行 DCT 变换所至。 这样的结果就是,在 IDCT 后图象象素点之间相关性的恢复产生了问题,象素点在图象恢复后,只与它所在的 8x8 变换块中的其它象素点恢复了相关性,而与另外的 8x8 变换块相关性没有得到恢复,进而产生了块效应。 这种效应在高压缩比(即量化系数变大的时候)由为突出。 基于以上考虑提出了如下算法:为了解决块与块之间的相关性问题,以单个象素点为基础,对该点所包含的所有 8x8 变换块进行 DCT 变换处理,每一次处理后都会得到该点在该处理块中的值,对所有值进行平均,就可有效的平滑图象的块效应。 该算法的依据在于,对象素点进行平均后,有效的减少了图象各点的高频分量,使图象变化趋于平缓。 而又不会损坏图象的象素点的低频分量,保持了图象的原 貌。 本问文将该算法称为均值算法。 DCT 要对图象所有的点进行 8x8DCT 变换,首先要考虑的是图象边界各点的问题。 由于图象边界上的点在某一方向上不具备变换条件,所以要对图象进行必要处理,以保证各点都能进行次数一样的变换。 根据前文所述,不难理解每个点所要进行的 DCT 变换次数为一个定值 64(每个点都包含在不同的 64 个 8x8DCT变换块内,边界点除外)。 要想使边界点也达到非边界点的效果我们要进行图象的拓展,具体方法就是以边界点为轴进行镜像。 如图 32。 以边界点为轴,向 4 个方向分别镜像添加 7 个点,这样就能保证边界 点也能处在 64 个 DCT 变换块中。 特殊的, 4 个角方向也需要镜象,只须把边界所加点进行翻转即可。 假设原图象为 mxn,则镜像后图象大小变为 m+2x7 x n+2x7 大小。 图 32 镜像延拓 镜像加点程序如下: void Pad_Array float Mat[IMS+2*f][IMS+2*f] //边缘处理 int i,j。 for i IMS。 i 0。 i for j IMS。 j 0。 j Mat[i+f][j+f] Mat[i][j]。 for i 0。 i f。 i++ //行处理 for j 0。 j IMS+2*f。 j++ Mat[i][j] Mat[2*fi][j]。 Mat[IMS+f+i][j] Mat[IMS+fi2][j]。 for i 0。 i IMS+2*f。 i++ //列处理 for j 0。 j f。 j++ Mat[i][j] Mat[i][2*fj]。 Mat[i][IMS+f+j] Mat[i][IMS+fj2]。 经过镜像加点后,图象就达到了处理的要求。 具体均值算法如下 [5]: 31 其中表示图像在 i,j 方向的输出。 32 33 其中。 对每一个点进行 64 次 DCT 变换,每一次的值相加再平均,这样就能平滑各个点的高频分量,有效的消除方块效应。 其主要程序流程如图 33 所示。 图 33 DCT 均值算法流程 本章详细阐述了块效应的产生原理,块效应是在高压缩比的情况下比较明显的,近来社会上提出了多种解决办法。 在详细分析了块效应产生的原理后,本文提出了一种均值算法,实现比较简单,不需要进行过多的其他变换,而只是用DCT 的多次变换就解决了这一个问题。 章 评价图像压缩技术和系统的性能,主要考虑 三个关键参数: 压缩比在所要求的恢复图像质量的条件下,必然要考虑是否达到了高的压缩比。 如果压缩比用输入数据量与输出数据量之比来衡量,则必须明确输入和输出的格式。 一种衡量压缩比的方法是确定压缩前后每个象素所需要的位数 比特数。 这里我将输入的位图 .bmp 定义为 .ding 格式,将输出的格式定义为 .jpg 格式。 通过将输入的 .bmp 图像大。基于dct的图象压缩毕业论文
相关推荐
晶振输入 3 X2 晶振输出 4 GND 地 5 RST 控制移位寄存器 /复位 6 I/O 数据输入 /输出 7 SCLK 串行时钟 8 VCC2 主电源输入 DS1302 读写和控制说明 DS1302 的数据读写方式有两种,一种是单字节操作方式,一种是多字节操作方式。 每次仅写入或读出一个字节数据称为单字节操作,每次对时钟 /日历的 8字节或 31 字节 RAM 进行全体写入或读出的操作
通 过 DDRAM 显 示在屏幕中。 ● 地址计数器 AC 地 址计数器 是用 来贮 存 DDRAM/CGRAM 之一的地址 ,它可由 设 定指令 缓 存器 来改 变 ,之后只要 读 取或是 写 入 DDRAM/CGRAM 的值 时 ,地 址计数器 的值就 会 自 动 加一, 当 RS 为 “ 0” 时 而 R/W 为 “ 1” 时 , 地址计数器 的值 会被读 取到 DB6—— DB0中。
窗体,打开摄像头,获取视频句柄等相关数据,完成视频信息的初步采集。 关闭设备 断开系统与摄像头的链接,释放视频窗口和内存空间。 保存为 BMP 文件 实时拍摄,抓取瞬间图像 ,并 保存为 BMP文件。 开始录像 将视频捕获的图像信息保存为 avi 文件,录像过程完成音频文件( *.wav)的同步录制。 该模块分为短时录制和长时录制,短时录制的录制时间完全由用户控制。 长时录制时
输入 /输出控制各类型的机械或生产过程。 浙江机电职业技术学院毕业设计说明书 4 DCS 与 PLC 的差异 PLC 系统与 DCS 系统的结构差异不大,只是在功能的着重点上有所不同。 DCS 着重与闭环控制及数据处理; PLC 着重与逻辑控制及开关量的控制,但也可实现模拟量控制。 现对于 PLC 系统, DCS 的明显特点如下。 ( 1) 控制功能强。 可实现复杂的控制规律,如串级、前馈、解耦
电路 电路 显示电路 键盘电路 3 89C52 芯片内部有一个高增益反相放大器,用于构成振荡器。 引线 XTAL1 和 XTAL2 分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。 这里,我们选用 52单片机 12MHZ 的内部振荡 方式,电容器 C1, C2起稳定振荡频率,并对振荡频率有微调作用 C1 和 C2 可在 20100PF 之间取值 ,这里取33P。
短开发周期,降低研制成本。 复杂可编程逻辑器件 CPLD 是当今应用最广泛的可编程逻辑器件之一,后者也称为可编程专用集成电路( ASIC)。 CPLD 的静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就大大地提高了数字系统设 计的灵活性和通用性。 硬件描述语言是一种用形式化方法来描述数字电路和设计数字 逻辑系统的语言,它的发展至今已有几十年的历史