-
视频压缩编码和音频压缩编码的基本原理
2014-06-03 00:01:20本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。本文介绍一下视频压缩编码和音频压缩编码的基本原理。其实有关视频和音频编码的原理的资料非常的多,但是自己一直也没有去归纳和总结一下,在这里简单总结一下,以作备忘。
1.视频编码基本原理
(1) 视频信号的冗余信息
以记录数字视频的YUV分量格式为例,YUV分别代表亮度与两个色差信号。例如对于现有的PAL制电视系统,其亮度信号采样频率为13.5MHz;色度信号的频带通常为亮度信号的一半或更少,为6.75MHz或3.375MHz。以4:2:2的采样频率为例,Y信号采用13.5MHz,色度信号U和V采用6.75MHz采样,采样信号以8bit量化,则可以计算出数字视频的码率为:
13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s
如此大的数据量如果直接进行存储或传输将会遇到很大困难,因此必须采用压缩技术以减少码率。数字化后的视频信号能进行压缩主要依据两个基本条件:
l 数据冗余。例如如空间冗余、时间冗余、结构冗余、信息熵冗余等,即图像的各像素之间存在着很强的相关性。消除这些冗余并不会导致信息损失,属于无损压缩。
l 视觉冗余。人眼的一些特性比如亮度辨别阈值,视觉阈值,对亮度和色度的敏感度不同,使得在编码的时候引入适量的误差,也不会被察觉出来。可以利用人眼的视觉特性,以一定的客观失真换取数据压缩。这种压缩属于有损压缩。
数字视频信号的压缩正是基于上述两种条件,使得视频数据量得以极大的压缩,有利于传输和存储。一般的数字视频压缩编码方法都是混合编码,即将变换编码,运动估计和运动补偿,以及熵编码三种方式相结合来进行压缩编码。通常使用变换编码来消去除图像的帧内冗余,用运动估计和运动补偿来去除图像的帧间冗余,用熵编码来进一步提高压缩的效率。下文简单介绍这三种压缩编码方法。
(2) 压缩编码的方法
(a) 变换编码
变换编码的作用是将空间域描述的图像信号变换到频率域,然后对变换后的系数进行编码处理。一般来说,图像在空间上具有较强的相关性,变换到频率域可以实现去相关和能量集中。常用的正交变换有离散傅里叶变换,离散余弦变换等等。数字视频压缩过程中应用广泛的是离散余弦变换。
离散余弦变换简称为DCT变换。它可以将L*L的图像块从空间域变换为频率域。所以,在基于DCT的图像压缩编码过程中,首先需要将图像分成互不重叠的图像块。假设一帧图像的大小为1280*720,首先将其以网格状的形式分成160*90个尺寸为8*8的彼此没有重叠的图像块,接下来才能对每个图像块进行DCT变换。
经过分块以后,每个8*8点的图像块被送入DCT编码器,将8*8的图像块从空间域变换为频率域。下图给出一个实际8*8的图像块例子,图中的数字代表了每个像素的亮度值。从图上可以看出,在这个图像块中各个像素亮度值比较均匀,特别是相邻像素亮度值变化不是很大,说明图像信号具有很强的相关性。
一个实际8*8图像块
下图是上图中图像块经过DCT变换后的结果。从图中可以看出经过DCT变换后,左上角的低频系数集中了大量能量,而右下角的高频系数上的能量很小。
图像块经过DCT变换后的系数
信号经过DCT变换后需要进行量化。由于人的眼睛对图像的低频特性比如物体的总体亮度之类的信息很敏感,而对图像中的高频细节信息不敏感,因此在传送过程中可以少传或不传送高频信息,只传送低频部分。量化过程通过对低频区的系数进行细量化,高频区的系数进行粗量化,去除了人眼不敏感的高频信息,从而降低信息传送量。因此,量化是一个有损压缩的过程,而且是视频压缩编码中质量损伤的主要原因。
量化的过程可以用下面的公式表示:
其中FQ(u,v)表示经过量化后的DCT系数;F(u,v)表示量化前的DCT系数;Q(u,v)表示量化加权矩阵;q表示量化步长;round表示归整,即将输出的值取为与之最接近的整数值。
合理选择量化系数,对变换后的图像块进行量化后的结果如图所示。
量化后的DCT系数
DCT系数经过量化之后大部分经变为0,而只有很少一部分系数为非零值,此时只需将这些非0值进行压缩编码即可。
(b) 熵编码
熵编码是因编码后的平均码长接近信源熵值而得名。熵编码多用可变字长编码(VLC,Variable Length Coding)实现。其基本原理是对信源中出现概率大的符号赋予短码,对于出现概率小的符号赋予长码,从而在统计上获得较短的平均码长。可变字长编码通常有霍夫曼编码、算术编码、游程编码等。其中游程编码是一种十分简单的压缩方法,它的压缩效率不高,但编码、解码速度快,仍被得到广泛的应用,特别在变换编码之后使用游程编码,有很好的效果。
首先要在量化器输出直流系数后对紧跟其后的交流系数进行Z型扫描(如图箭头线所示)。Z型扫描将二维的量化系数转换为一维的序列,并在此基础上进行游程编码。最后再对游程编码后的数据进行另一种变长编码,例如霍夫曼编码。通过这种变长编码,进一步提高编码的效率。
(c) 运动估计和运动补偿
运动估计(Motion Estimation)和运动补偿(Motion Compensation)是消除图像序列时间方向相关性的有效手段。上文介绍的DCT变换、量化、熵编码的方法是在一帧图像的基础上进行,通过这些方法可以消除图像内部各像素间在空间上的相关性。实际上图像信号除了空间上的相关性之外,还有时间上的相关性。例如对于像新闻联播这种背景静止,画面主体运动较小的数字视频,每一幅画面之间的区别很小,画面之间的相关性很大。对于这种情况我们没有必要对每一帧图像单独进行编码,而是可以只对相邻视频帧中变化的部分进行编码,从而进一步减小数据量,这方面的工作是由运动估计和运动补偿来实现的。
运动估计技术一般将当前的输入图像分割成若干彼此不相重叠的小图像子块,例如一帧图像的大小为1280*720,首先将其以网格状的形式分成40*45个尺寸为16*16的彼此没有重叠的图像块,然后在前一图像或者后一个图像某个搜索窗口的范围内为每一个图像块寻找一个与之最为相似的图像块。这个搜寻的过程叫做运动估计。通过计算最相似的图像块与该图像块之间的位置信息,可以得到一个运动矢量。这样在编码过程中就可以将当前图像中的块与参考图像运动矢量所指向的最相似的图像块相减,得到一个残差图像块,由于残差图像块中的每个像素值很小,所以在压缩编码中可以获得更高的压缩比。这个相减过程叫运动补偿。
由于编码过程中需要使用参考图像来进行运动估计和运动补偿,因此参考图像的选择显得很重要。一般情况下编码器的将输入的每一帧图像根据其参考图像的不同分成3种不同的类型:I(Intra)帧、B(Bidirection prediction)帧、P(Prediction)帧。如图所示。
典型的I,B,P帧结构顺序
如图所示,I帧只使用本帧内的数据进行编码,在编码过程中它不需要进行运动估计和运动补偿。显然,由于I帧没有消除时间方向的相关性,所以压缩比相对不高。P帧在编码过程中使用一个前面的I帧或P帧作为参考图像进行运动补偿,实际上是对当前图像与参考图像的差值进行编码。B帧的编码方式与P帧相似,惟一不同的地方是在编码过程中它要使用一个前面的I帧或P帧和一个后面的I帧或P帧进行预测。由此可见,每一个P帧的编码需要利用一帧图像作为参考图像,而B帧则需要两帧图像作为参考。相比之下,B帧比P帧拥有更高的压缩比。
(d) 混合编码
上面介绍了视频压缩编码过程中的几个重要的方法。在实际应用中这几个方法不是分离的,通常将它们结合起来使用以达到最好的压缩效果。下图给出了混合编码(即变换编码+ 运动估计和运动补偿+ 熵编码)的模型。该模型普遍应用于MPEG1,MPEG2,H.264等标准中。
混合编码模型
从图中我们可以看到,当前输入的图像首先要经过分块,分块得到的图像块要与经过运动补偿的预测图像相减得到差值图像X,然后对该差值图像块进行DCT变换和量化,量化输出的数据有两个不同的去处:一个是送给熵编码器进行编码,编码后的码流输出到一个缓存器中保存,等待传送出去。另一个应用是进行反量化和反变化后的到信号X’,该信号将与运动补偿输出的图像块相加得到新的预测图像信号,并将新的预测图像块送至帧存储器。
2.音频编码基本原理
(1) 音频信号的冗余信息
数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。例如,一套双声道数字音频若取样频率为44.1KHz,每样值按16bit量化,则其码率为:
2*44.1kHz*16bit=1.411Mbit/s
如此大的带宽将给信号的传输和处理都带来许多困难,因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。
数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。
冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20KHz,除此之外的其它频率人耳无法察觉,都可视为冗余信号。此外,根据人耳听觉的生理和心理声学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号将被强音信号所掩蔽而听不见,这样弱音信号就可以视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应和时域掩蔽效应,现分别介绍如下:
(a) 频谱掩蔽效应
一个频率的声音能量小于某个阈值之后,人耳就会听不到,这个阈值称为最小可闻阈。当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应。如图所示:
频率掩蔽效应
由图中我们可以看出人耳对2KHz~5KHz的声音最敏感,而对频率太低或太高的声音信号都很迟钝,当有一个频率为0.2KHz、强度为60dB的声音出现时,其附近的阈值提高了很多。由图中我们可以看出在0.1KHz以下、1KHz以上的部分,由于离0.2KHz强信号较远,不受0.2KHz强信号影响,阈值不受影响;而在0.1KHz~1KHz范围,由于0.2KHz强音的出现,阈值有较大的提升,人耳在此范围所能感觉到的最小声音强度大幅提升。如果0.1KHz~1KHz范围内的声音信号的强度在被提升的阈值曲线之下,由于它被0.2KHz强音信号所掩蔽,那么此时我们人耳只能听到0.2KHz的强音信号而根本听不见其它弱信号,这些与0.2KHz强音信号同时存在的弱音信号就可视为冗余信号而不必传送。
(b) 时域掩蔽效应
当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应。时域掩蔽过程曲线如图所示,分为前掩蔽、同时掩蔽和后掩蔽三部分。
时域掩蔽效应
由图我们可以看出,时域掩蔽效应可以分成三种:前掩蔽,同时掩蔽,后掩蔽。前掩蔽是指人耳在听到强信号之前的短暂时间内,已经存在的弱信号会被掩蔽而听不到。同时掩蔽是指当强信号与弱信号同时存在时,弱信号会被强信号所掩蔽而听不到。后掩蔽是指当强信号消失后,需经过较长的一段时间才能重新听见弱信号,称为后掩蔽。这些被掩蔽的弱信号即可视为冗余信号。
(2) 压缩编码方法
当前数字音频编码领域存在着不同的编码方案和实现方式, 但基本的编码思路大同小异, 如图所示。
数字音频编码系统模型
对每一个音频声道中的音频采样信号,首先都要将它们映射到频域中,这种时域到频域的映射可通过子带滤波器实现。每个声道中的音频采样块首先要根据心理声学模型来计算掩蔽门限值, 然后由计算出的掩蔽门限值决定从公共比特池中分配给该声道的不同频率域中多少比特数,接着进行量化以及编码工作,最后将控制参数及辅助数据加入数据之中,产生编码后的数据流。
-
hive 压缩编码
2018-10-19 10:25:04hadoop 压缩编码1.1 MR支持的压缩编码2、编码/解码器3、压缩性能的比较4、压缩配置参数 1. hadoop 压缩编码 1.1 MR支持的压缩编码 压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate ...文章目录
1. hadoop 压缩编码
1.1 MR支持的压缩编码
压缩格式 工具 算法 文件扩展名 是否可切分 DEFAULT 无 DEFAULT .deflate 否 Gzip gzip DEFAULT .gz 否 bzip2 bzip2 bzip2 .bz2 是 LZO lzop LZO .lzo 否 LZ4 无 LZ4 .lz4 否 Snappy 无 Snappy .snappy 否 2、编码/解码器
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示
压缩格式 对应的编码/解码器 DEFLATE org.apache.hadoop.io.compress.DefaultCodec gzip org.apache.hadoop.io.compress.GzipCodec bzip2 org.apache.hadoop.io.compress.BZip2Codec LZO com.hadoop.compression.lzo.LzopCodec LZ4 org.apache.hadoop.io.compress.Lz4Codec Snappy org.apache.hadoop.io.compress.SnappyCodec 3、压缩性能的比较
压缩算法 原始文件大小 压缩文件大小 压缩速度 解压速度 gzip 8.3GB 1.8GB 17.5MB/s 58MB/s bzip2 8.3GB 1.1GB 2.4MB/s 9.5MB/s LZO 8.3GB 2.9GB 49.3MB/s 74.6MB/s http://google.github.io/snappy/
在64位模式的Core i7处理器的单核上,Snappy压缩大约250 MB /秒或更高,并以大约500 MB /秒或更高的速度进行解压缩。4、压缩配置参数
要在Hadoop中启用压缩,可以配置如下参数(mapred-site.xml文件中)
参数 默认值 阶段 建议 io.compression.codecs(在core-site.xml中配置) org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.Lz4Codec 输入压缩 Hadoop使用文件扩展名判断是否支持某种编解码器 mapreduce.map.output.compress false mapper输出 这个参数设为true启用压缩 mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.DefaultCodec mapper输出 使用LZO、LZ4或snappy编解码器在此阶段压缩数据 mapreduce.output.fileoutputformat.compress false reducer输出 这个参数设为true启用压缩 mapreduce.output.fileoutputformat.compress.codec org.apache.hadoop.io.compress. DefaultCodec reducer输出 使用标准工具或者编解码器,如gzip和bzip2 mapreduce.output.fileoutputformat.compress.type RECORD reducer输出 SequenceFile输出使用的压缩类型:NONE和BLOCK 2. hive压缩编码
2.1 如何查看hive支持的压缩
查看集群的支持的压缩算法.
lcc@lcc ~$ hive -e "set io.compression.codecs"
返回支持的压缩算法
io.compression.codecs=org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.DeflateCodec, org.apache.hadoop.io.compress.SnappyCodec, org.apache.hadoop.io.compress.Lz4Codec
我的返回这个,应该返回空
序号 压缩格式 算法 多文件 可分割性 工具 工具压缩后扩展名 1 DEFLATE DEFLATE 不 不 无 .deflate 2 Gzip DEFLATE 不 不 gzip .gz 3 bzip2 bzip2 不 是 bzip2 .bz2 4 LZO LZO 不 不 lzop .lzo 5 LZ4 ??? ?? ?? ??? ??? 6 Snappy ??? ?? ?? ??? ??? 7 ZLIB ??? ?? ?? ??? ??? 8 ZIP DEFLATE 是 是,在文件范围内 zip .zip 2.1 hive编码的选择
选择合适的编解码器
对数据做压缩,可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,但对数据做压缩和解压缩总会增加CPU的开销,故最好对那些I/O密集型的作业使用数据压缩——这样的作业会有富余的CPU资源,或者对那些磁盘空间不富裕的系统。2.2 配置
打开Hive(即由
mappe
产生的)中间数据
文件的压缩功能
HiveQL语句最终会被编译成Hadoop的Mapreduce job,开启Hive的中间数据压缩功能,就是在MapReduce的shuffle阶段对mapper产生的中间结果数据压缩。在这个阶段,优先选择一个低CPU开销的算法。
可以通过参数hive.exec.compress.intermediate
来开启和禁用该功能,默认情况下该值值为false,将之设置为true为激活中间数据压缩功能:<property> <name>hive.exec.compress.intermediate</name> <value>true</value> <description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description> </property>
具体的压缩算法参数配置,这是一个hadoop的配置参数,可以在Hadoop的
$HADOOP_HOME/conf/marred-site.xml
或$HADOOP_HOME/conf/hive-site.xml
配置文件中。SnappyCodec比较适合在这种场景中编解码器,该算法会带来很好的压缩性能和较低的CPU开销:<property> <name>mapred.map.output.compression.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> <description>This controls whether intermediate files produced by Hive between mutiple map-redece job are compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description> </property>
最Hive的数据文件压缩
用户可以对最终生成的Hive表的数据通常也需要压缩。参数hive.exec.compress.output控制这一功能的激活与禁用。用户可以通过节本来打开这个功能,同样也可以在XML配置文件中将该功能配置成全局变量:<property> <name>hive.exec.compress.output</name> <value>true</value> <description>This controls whether the final outpus of a query( to a local/hdfs file or a Hive table) is compressed.The compression codec and other options are determined from hadoop config variables mared.output.compress*</description> </property>
将hive.exec.compress.output参数设置成true后,然后选择一个合适的编解码器,如选择SnappyCodec:
<property> <name>mapred.output.compression.codec</name> <value>org.apache.hadoop.io.compress.SnappyCodec</value> </property>
好文章:
https://blog.csdn.net/Wflowerd/article/details/80376036
-
图像压缩编码
2017-04-10 13:59:52一、图像压缩编码的必要性 图像的数据量非常大,为了有效地传输和储存图像,有必要压缩图像的数据量,而且随着现代通讯技术的发展,要求传输的图像信息的种类和数据量愈来愈大,若不进行数据压缩,难以推广应用。...一、图像压缩编码的必要性
图像的数据量非常大,为了有效地传输和储存图像,有必要压缩图像的数据量,而且随着现代通讯技术的发展,要求传输的图像信息的种类和数据量愈来愈大,若不进行数据压缩,难以推广应用。二 、图像压缩编码的可行性
从压缩的客体—“数字图像”来看,原始图像数据是高度相关的,存在很大的冗余。数据冗余造成比特数浪费,消除这些冗余可以节约码字,也就是到了数据压缩的目的。图像越有规则,其自相关系数越大,图像的空间冗余就越大。
从人体的视觉系统和大脑来看,有些图像信息相对来说不那么重要,除去这些信息并不会明显降低人言所感受的图像质量。三、图像压缩编码的分类
根据压缩过程有无信息损失:
有损编码、无损编码四、图像压缩的评价指标
压缩比和失真性是衡量图像压缩的重要指标。
压缩比:图像压缩前后的信息量之比。
失真性:该性能指标主要是针对有损编码而言的,是指图像经有损压缩,然后将其解码后的图像与原图像之间的误差。有损压缩会使原始图像数据不能完全恢复,信息受到一定的损失,但压缩比较高,复原后的图像存在一定的失真。%读入图像并进行灰度转换
I=imread(‘pears.png’);
imshow(I)
IGRAY=rgb2gray(I);
[m n]=size(IGRAY);
%建立数组RLEcode,其中元素排列形式为[行程起始行坐标、行程列坐标、灰度值]
c=I(1,1);RLEcode(1,1:3)=[1 1 c];
t=2;
% 进行行程编码
for k=1: m
for j=1: n
if(not(and(k==1,j==1)))
if(not(I(k,j)==c))
RLEcode(t,1:3)=[k j I(k,j)];
c=I(k,j);
t=t+1;
end
end
end
end
%读入图像并进行灰度转换
I=imread(‘pears.png’);
imshow(I)
IBM=im2bw(I);
[m n]=size(IBM);
%建立数组RLEcode,其中元素排列形式为[行程起始行坐标、行程列坐标、灰度值]
c=I(1,1);RLEcode(1,1:3)=[1 1 c];
t=2;
% 进行行程编码
for k=1: m
for j=1: n
if(not(and(k==1,j==1)))
if(not(IBM(k,j)==c))
RLEcode(t,1:3)=[k j IBM(k,j)];
c=IBM(k,j);
t=t+1;
end
end
end
end -
图像压缩编码概述
2017-04-10 14:25:171.图像压缩编码的必要性 现在是信息爆炸时代,图像数据量特别大,故此在传输或者存储时都需要对数据进行有效的压缩。图像压缩就是对图像数据按照一定的规则进行变换和组合,用少的数据量表示影像。 2.图像压缩编码...1.图像压缩编码的必要性
现在是信息爆炸时代,图像数据量特别大,故此在传输或者存储时都需要对数据进行有效的压缩。图像压缩就是对图像数据按照一定的规则进行变换和组合,用少的数据量表示影像。
2.图像压缩编码的可行性
大多数图像内相邻像素之间有较大的相关性,这称为空间冗余。序列图像前后帧内相邻之间有较大的相关性,这称为时间冗余。而压缩就是为了消除这些冗余。
图像的规则性可以用图像的自相关系数来衡量,图像越规则,自相关系数越大,图像的空间冗余就越大。
而在压缩过程中可以除去这些人眼不敏感的信息,从而实现数据压缩。
3.图像压缩编码的分类
图像压缩编码技术从不同的角度出发,有不同的分类方法。根据压缩过程有无信息损失,可分为有损编码和无损编码。根据压缩原理进行划分,可以分为预测编码、变换编码、统计编码等。
a.有损编码
有损编码又称为不可逆编码,是指对图像进行有损压缩,致使解码重新构造的图像与原始图像存在一定的失真,即丢失了了部分信息。由于允许一定的失真,这类方法能够达到较高的压缩比。有损压缩多用于数字电视、静止图像通信等领域
b.无损编码
无损压缩又称可逆编码,是指解压后的还原图像与原始图像完全相同,没有任何信息的损失。这类方法能够获得较高的图像质量,但所能达到的压缩比不高,常用于工业检测、医学图像、存档图像等领域的图像压缩中
c.预测编码
预测编码是利用图像信号在局部空间和时间范围内的高度相关性,以已经传出的近邻像素值作为参考,预测当前像素值,然后量化、编码预测误差。预测编码广泛应用于运动图像、视频编码如数字电视、视频电话中。
d.变换编码
变换编码是将空域中描述的图像数据经过某种正交变换(如离散傅里叶变换DFT、离散余弦变换DCT、离散小波变换DWT等)转换到另一个变换域(频率域)中进行描述,变换后的结果是一批变换系数,然后对这些变换系数进行编码处理,从而达到压缩图像数据的目的。
e.统计编码
统计编码也称为熵编码,它是一类根据信息熵原理进行的信息保持型变字长编码。编码时对出现概率高的事件(被编码的符号)用短码表示,对出现概率低的事件用长码表示。在目前图像编码国际标准中,常见的熵编码方法有哈夫曼(Huffman)编码和算术编码。
4.图像压缩的评价指标
压缩比和失真性是衡量图像压缩的重要指标
压缩比:图像压缩前后的信息量之比
失真性:主要针对有损编码而言,是指图像经有损压缩,然后将其解码后的图像与原图像之间的误差。有损压缩会使原始图像数据不能完全恢复,信息受到一定的损失,但压缩比较高,复原后的图像存在一定的失真。
5.对如下图像进行编码
原始图像
压缩编码1
clear
I=imread('pears.png');
imshow(I)
IGRAY=rgb2gray(I);
[m n]=size(IGRAY);
c=I(1,1);RLEcode(1,1:3)=[1 1 c];
t=2;
for k=1:m
for j=1:n
if(not(and(k==1,j==1)))
if(not(I(k,j)==c))
RLEcode(t,1:3)=[k j I(k,j)];
c=I(k,j);
t=t+1;
end
end
end
end效果图片
压缩编码2
clear
I=imread('pears.png');
imshow(I)
IBM=im2bw(I);
[m n]=size(IBM);
c=I(1,1);RLEcode(1,1:3)=[1 1 c];
t=2;
for k=1:m
for j=1:n
if(not(and(k==1,j==1)))
if(not(IBM(k,j)==c))
RLEcode(t,1:3)=[k j IBM(k,j)];
c=IBM(k,j);
t=t+1;
end
end
end
end效果图片
从对比可见,压缩编码2效果更好,更可以达到压缩效果。
-
图像压缩编码原理
2018-01-10 17:23:12为什么要进行图像压缩编码? 1) 在数字分量编码中,按照4:2:2格式对电视信号进行取样、量化、编码后,数据率达27MW/S。 2) 在数字高清晰度电视格式中,取样、量化、编码后的数据率会更大。 3) 电视信号... -
CCF CSP 压缩编码
2017-02-21 21:40:04试题名称: 压缩编码 时间限制: 3.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一段文字,已知单词a1, a2, …, an出现的频率分别t1, t2, …, tn。可以用01串给这些单词编码,即将每个单词与一个01串对应,... -
基于MATLAB的图像压缩程序(包含各种压缩编码与解码方法)
2014-05-18 14:42:21基于MATLAB的图像压缩程序(包含各种压缩编码与解码方法),算法包含详细代码,是图像编码技术的总结 -
LZMA解压缩编码算法的使用
2020-06-01 13:04:56博主在项目中遇到了帧数据流解压缩编码的功能需求,在这里对所采用的解压缩编码算法LZMA的背景、性能和使用介绍作一下简介,主要的目的是积累经验,其次是帮助其他有同样需求的同学少走弯路,分享心得。 lzma算法是... -
图象的压缩编码,JPEG压缩编码标准-续
2009-08-25 22:50:00图象的压缩编码,JPEG压缩编码标准-续 飞云 发表于 2006-4-7 10:06:24 8×8的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频... -
数字图像处理 实验七:JPEG压缩编码
2020-03-28 11:58:00基于Matlab的JPEG压缩编码DIP实验7:JPEG压缩编码实验目的实验原理实验内容参考代码实验结果 DIP实验7:JPEG压缩编码 实验目的 1)掌握n×n块的DCT图像变换及频谱特点。 2)熟悉JPEG基本系统的图像编解码方法。 实验... -
PCM音频采样数据编码为AAC的压缩编码数据
2016-10-09 17:43:12该编码器实现了PCM音频采样数据编码为AAC的压缩编码数据。编码器代码十分简单,但是每一行代码都很重要。通过看本编码器的源代码,可以了解FFMPEG音频编码的流程。 下面附一张使用FFmpeg编码音频的流程图。使用... -
图像压缩编码相关内容
2017-04-10 13:39:141.图像压缩编码的必要性: 信息时代带来了“信息爆炸”,使数据量大增,因此无论传输或存储都需要对数据进行有效的压缩。众所周知的,图像的数据量非常大,为了有效地传输和存储图像,有必要压缩图像的数据量,... -
图像压缩编码(哈夫曼树)
2019-01-16 12:13:281.首先图片压缩编码对不同文件的压缩效率是不一样的 这也是我在最后发现自己的压缩比率超高(类似于未压缩)发现的。多次确认算法无误后终于在以为大佬的博客中找到了答案。此处感谢下面这位大佬的博客。 ... -
大数据与算法系列之字符压缩编码
2018-06-04 10:53:57字符压缩编码是常常用到的编码技术,压缩的目的在于将出现频率较高的字符用短编码表示,而对于很少出现的字符用较长编码表示,从而提升字符在某些领域中的负荷,如网络传输过程中减少流量开销,常用的字符串压缩编码...