matlab图像压缩处理程序,基于MATLAB的图像压缩处理技术的研究与实现最终版(备份存档)...

《基于MATLAB的图像压缩处理技术的研究与实现.doc》由会员分享,可免费在线阅读全文,更多与《基于MATLAB的图像压缩处理技术的研究与实现(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。

1、Plot[,PlotRangegt{,},PlotJoinedgtTrue,DislayFunctiongtIdentity]am@DCTMatrix,]]];图八个基础向量的离散余弦变换的长度目录s(x)可以从它的变换S(u)中恢复出来,该变换采用逆余弦转换(IDCT):()sx=n()()()cosnuxuCusUnx=,,nwhere()Cuforu==otherwise这等式表示s是作为一个基础向量的线性组合。该系数是变换S的要素,这可能被认为反映每个频率的数量展现在输入s中。我们产生一连串的随机数作为测试输入:inut=Table[Random[Real,{,}],{}]{,,,,,,,}DCT是根据点矩阵乘法计算:outut=DCTMatrixinut{,,,,,,,}如上所述,DCT是紧密相关的离散傅立叶变换(DFT)。事实上,它是可能的经由DFT计算DCT(见[Jain,]):首先创建一个新的清单提取偶数要素,其次是翻转的奇数要素。然后乘上DFT的这一重新排列所谓的“旋转因子”的名单,并提。

2、众的图像压缩的方法,利用信息对人类视觉系统[华生]。本文的目标是要说明使用数学的图像处理和给读者提供进一步探讨这一问题的基本工具。一维离散余弦变换一连串n实数s(x)离散的余弦转换,x=,,n,是长度n的目录被:s(u)=nC(u)()()cosnxxusxnu=,nwhere()Cuforu==otherwise转换目录S(u)中的每个元素是输入目录s(x)和基础向量内部的(点)产品。常数因子被选择,以使基础向量是正交和正常化。八个基础向量的n=如图所示。DCT可能是writt一个矢量(输入目录)的产品,格式为nxn正交矩阵,起行为B向量。这种矩阵为n=,可以计算如下:DCTMatrix=Table[Ifk==,Sqrt[],Sqrt[]Cos[Pi(j+)k]],{k,,},{j,,}]N;我们可以检查矩阵是正交的:DCTMatrixTransose[DCTMatrix]ChoMatrixForm每种基础向量都符合某种特定频率的正弦曲线:Show[GrahicsArray[Partition[List。

3、hicsImage使用内置的功能将一个矩阵转化成一个数组的灰色细胞。矩阵元素比例,这样的形象,涵盖全面的graylevels。一个可选的第二个参数指定了一系列的价值占据充分灰阶;价值之外范围是省略一部分的。功能ShowImage显示使用查看的Grahics对象。ltltGrahicsImagemShow[GrahicsArray[Ma[GrahicsImage[,{,}]am,Reverse[DCTTensor],{}]]];图在阵的基础图像的二维离散余弦变换每个基础矩阵的特点是横向和垂直的空间频率。此处矩阵显示的是从左至右、从顶部到底部排列,以便提高频率。为了说明二维变换,我们将它应用于一个图像的字母A:ShowImage[inut={{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,}}]在一维情况下,有可能表示二维DCT作为一个数组的内积(张收缩):outut=Array[(Plus@@Flatten[DCT。

4、对于nxm矩阵s时,二维DCT是一个简单的计算方法:一维DCT是适用于每一行的S和每一列的结果。因此,s的转变可以由:()()(,)()()(,)coscosmnyxxuyuSuvCuCvsxynmnmu=,nv=,mwhere()Cuforu==otherwise由于二维DCT的可以采用一维变换单独的行和列进行计算,我们说,二维DCT的是可以分成两个层面。在一维情况下,变换的每个元素S(u,v)是输入的点积和基础功能,但在这种情况下,基础功能是nm矩阵。每个二维基础矩阵是两个一维的基础向量的外积。因为n=m=,下面的表达产生了一个的基础矩阵中的的排列,一个张量尺寸{,,,}:DCTTensor=Array[Outer[Times,DCTMatrix[[]],DCTMatrix[[]]]am,{,}];每个基础矩阵可以被看作是一个图像。种基础图像在图中显示。GrahicsImagem组,包括在电子补充,包含的GrahicsImage和ShowImage功能,从某一矩阵中创建和显示图形对象。Gr。

5、取出实际的一部分。我们可以采用数学的DFT的功能执行这个程序从n=开始。DCTTwiddleFactors=N@Join[{},Table[Sqrt[]Ex[IPik],{k,}]]{,I,I,I,I,I,I,I}这种功能用来计算一系列长度从n=开始的DCT,然后:DCT[list_]:=Re[DCTTwiddleFactors*InverseFourier[N[list[[{,,,,,,,}]]]]]注意我们使用函数InverseFourier功能来改进工程学上所谓的前向DFT。同样地,我们使用傅立叶来改进所谓的逆DFT。功能N用来将整数转换成虚数,因为(在版)傅立叶和逆傅立叶是不以数字评价,他们的论点都是整数。一系列零的特例需要被超载的功能分开地处理,因为N的整数是一个整数而不是实数。Unrotect[Fourier,InverseFourier];Fourier[x:{}]:=x;InverseFourier[x:{}]:=x;Protect[Fourier,InverseFourier];我们将DCT应用到我们。

6、的图像文件熵编码。一个简单的例子量化是四舍五入成整数。在数字和中代表一个真正的数,一些规定需要许多位精度。四舍五入最接近的整数给出了可以表示的数量,可派位。x=Random[Real,{,}]Round[x]在这个过程中,我们减少数字可能的价值量(从而代表它需要的点数量),但它以丢失一些数据为代价。一个“好的”量化,将允许更多的价值和损失较少的信息,可获得四舍五入前重量因子的数目:w=;Round[xw]采取更大的价值为重量给出来一个quot粗quot的量化。量化,按照量化价值返回进入它之内的最初的范围(但不改变其原来的精密)乘以实现价值的重量:w*%N量化误差是在量子化之后量化中变化和量子化。最大可能的量化误差是成功一半的量子化重量的价值。在JPEG图像压缩标准,每个DCT系数被量化,使用依赖于频率的系数。系数在每个块除以相应地进入一个量化矩阵,其结果是四舍五入至最接近的整数。一般来说,较高的空间频率对人的眼睛来说比低频率更不易看得见。因此,量化的因素通常是选择较大的更高的频率。下列各项量子化点阵式广泛地用于单色图像。

7、的测试输入,比较它早先的矩阵计算结果的结果乘法。比较的结果,我们减去他们然后将片功能应用到压缩价值非常接近于零:DCT[inut]{,,,,,,,}%oututCho{,,,,,,,}逆DCT可以用乘法计算逆DCT矩阵。我们用我们的前面的例子举例说明:Inverse[DCTMatrix]outut{,,,,,,,}%inutCho{,,,,,,,}正如你可能期望的,IDCT也可能是通过逆DFT计算的。那“旋转因子”是复杂的DCT结合的因素和重新安排用于结尾而不是开始:IDCTTiddleFactors=Conjugate[DCTTwiddleFactors]{,+I,+I,+I,+I,+I,+I,+I}IDCT[list_]:=Re[Fourier[IDCTTwiddleFactorslist]][[{,,,,,,,}]]举例来说:IDCT[DCT[inut]]inutCho{,,,,,,,}二维离散余弦变换一维的DCT能有效的处理一维信号,如讲话的波形。分析二维(平面)信号,如图像,我们需要一个二维版本的DCT变换。。

8、和亮度颜色的成份图像。它提供了标准的JPEG文件,但不属于标准,所以我们称之为“事实上的”矩阵:qLum={{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,}};显示矩阵作为灰度图像在频率上显示依赖量化因素:ShowImage[qLum];在改进量化过程中,我们必须将图像分割成区块:BlockImage[image_,blocksize_:{,}]:=Partition[image,blocksize];And@@IntegerQ@(Dimensions[image]blocksize)功能UnBlockImage重新召集区段进入一单独的图像:UnBlockImage[blocks_]:=Partition[Flatten[Transose[blocks,{,,}]],{Times@@Dimensions[blocks][[{,}]]}]举例来说:Table[i+(j),{j,},{i,}]MatrixFormB。

9、Plot[,PlotRangegt{,},PlotJoinedgtTrue,DislayFunctiongtIdentity]am@DCTMatrix,]]];图八个基础向量的离散余弦变换的长度目录s(x)可以从它的变换S(u)中恢复出来,该变换采用逆余弦转换(IDCT):()sx=n()()()cosnuxuCusUnx=,,nwhere()Cuforu==otherwise这等式表示s是作为一个基础向量的线性组合。该系数是变换S的要素,这可能被认为反映每个频率的数量展现在输入s中。我们产生一连串的随机数作为测试输入:inut=Table[Random[Real,{,}],{}]{,,,,,,,}DCT是根据点矩阵乘法计算:outut=DCTMatrixinut{,,,,,,,}如上所述,DCT是紧密相关的离散傅立叶变换(DFT)。事实上,它是可能的经由DFT计算DCT(见[Jain,]):首先创建一个新的清单提取偶数要素,其次是翻转的奇数要素。然后乘上DFT的这一重新排列所谓的“旋转因子”的名单,并提。

10、lockImage[%,{,}]MatrixFormUnBlockImage[%]MatrixForm我们的量化功能块的图像,每个区块划分(元素元素)的量化矩阵,重新组合的模块,然后传到最近的整数:DCTQ[image_,qMatrix_]:=Ma[(qMatrix)am,BlockImage[image,Dimensions[qMatrix]],{}]UnBlockImageRound量子化功能块矩阵,乘上每个区块的量化因素,然后重新组合矩阵:IDCTQ[image_,qMatrix_]:=Ma[(qMatr像压缩技术来实现对原始图像的数据压缩。分析压缩前后的图像的变化。具体的设计要求如下:、熟练掌握Matlab软件,了解DCT变换的原理。、掌握基于DCT变换的图像压缩技术来对原始图像进行数据压缩。.通过设计一个反复使用且操作简单的图形用户界面,进行图像压缩对比的演示。.Matlab的工具箱提供了能实现图像压缩的多种变换技术,除了基于DCT变换的图像压缩技术的Matlab实现,还可以利用FFT变换和小波变换的图像压缩。

11、hicsImage使用内置的功能将一个矩阵转化成一个数组的灰色细胞。矩阵元素比例,这样的形象,涵盖全面的graylevels。一个可选的第二个参数指定了一系列的价值占据充分灰阶;价值之外范围是省略一部分的。功能ShowImage显示使用查看的Grahics对象。ltltGrahicsImagemShow[GrahicsArray[Ma[GrahicsImage[,{,}]am,Reverse[DCTTensor],{}]]];图在阵的基础图像的二维离散余弦变换每个基础矩阵的特点是横向和垂直的空间频率。此处矩阵显示的是从左至右、从顶部到底部排列,以便提高频率。为了说明二维变换,我们将它应用于一个图像的字母A:ShowImage[inut={{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,},{,,,,,,,}}]在一维情况下,有可能表示二维DCT作为一个数组的内积(张收缩):outut=Array[(Plus@@Flatten[DCT 。

12、CT[array_?MatrixQ]:=Transose[IDCT@Transose[IDCT@array]]举例来说,我们反置字母A的转换:ShowImage[Cho[IDCT[outut]]];如前所述,DCT输出的各组成部分的规模表明形象的组成部分在不同的二维空间频率。为了说明这一点,我们可以设置最后一排和列中的字母A的DCT变换等于零:outut[[]]=Table[,{}];Do[outut[[i,]]=,{i,}];现在看看逆变换:ShowImage[Cho[IDCT[outut]]];结果是一个模糊的字母A:最高的水平线和垂直的频率有是离开的。这很容易见到图像在减少,使个别像素并不明显。量子化基于DCT的图像压缩依赖于两个技术,以减少所需的数据的图像。首先是量化的图像的DCT系数;二是熵编码的量化系数。量化的过程中减少一些可能的值的数量,从而减少了所需的位数来代表它。熵编码是代表越紧越好的量化数据的一种技术。我们将不断开发功能,以量化的图像和计算水平提供不同的压缩程度的量化。我们将不会执行需要创建一个压缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值