博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
压缩概念及常见图片格式
阅读量:5773 次
发布时间:2019-06-18

本文共 2689 字,大约阅读时间需要 8 分钟。

    
    
压缩从大的角度上讲分有损压缩和无损压缩。
有损压缩:会丢失一部分数据,如尽量选择丢失一些人眼看不到的颜色或听不到的声音等数据,主要是一些量化算法,比如a率,u率,lloyds最优量化。
无损压缩:对内容中一些高频常出现的字符进行低字节编码,可还原,主要是一些编码算法,比如子带编码,差分编码,哈夫曼编码等。
根据香农的信息理论,任何一个文件被无损压缩后的结果不可能小于其 熵 (信息论) 。
换句话说,如果一个文件有20多个G的大小,但是其信息熵只有20多M,则实现一个1000倍的压缩是完全可能的(比如楼主放出的几小时全黑视频);反过来看,一个文件如果虽然只有100M,但是其信息熵却高达90M,则这样的文件是无论如何也不可能被无损压缩至20M大小的。
一个文件的信息熵有多少,靠一个公式是完全可以算出来的。所以只要提供任何一个文件,我们都能知道它最小可以被无损压缩的极限。
链接:
图片压缩能力比较:
JPEG<JPEG200<AVC Intra-Frame<HEVC Intra-Frame(BPG)
压缩能力提升的主要原因:
1. JPEG->JPEG2000
多尺度分析降低块效应
小波系数更稀疏
2. JPEG2000->AVC
Intra-Frame
降低空间结构冗余
3.
AVC
Intra-Frame->BPG
进一步降低空间结构冗余
1. BPG会是终极的图像压缩方法吗?
毋庸置疑,BPG是先进的图像压缩协议。
但是BPG使用的DCT作为线性变换本身相对多尺度的线性变换在压缩能力上存在先天弱势。之所以BPG和HEVC仍旧使用DCT来做线性变换的原因是因为一般的多尺度变换做不到在像素空间的block化,从而实现不了高效的block by block的预测。如果想在系数空间内block化,小波系数本身不具有shift-invariant的特性。换言之,像素空间整体移动后,小波系数的形状存在差异,根本不可预测。除非我们实现了shift-invariant且能critically sampled的变换,要不然我们就很难做到block化,就得接着用DCT来做。
另外对于的mode的预测,BPG的在180度空间内平均分成30多个等分一个一个试的方法多少让人觉得这种方法是盲人摸象,相对于前人H.264的编码过程,没有根本上得改进。自然图像,诸如边缘的变化角度明显是连续变化的,如果能实现具有边缘角度预测能力的线性变换的话,那么对于周边block的预测就会更加准确,会节省更多的bits。
2. BPG会像JPEG一样被广泛使用吗?
未必。
不是牛逼的压缩协议就能被大量采用的,JPEG2000就是明显的例子,大家目前日常能看到JPEG2000的地方估计只有Photoshop的保存按钮,选择.jpeg2000。(其他可能用到JPEG2000的场合:军用雷达发回的图像,因为军用设备对带宽极其敏感,把带宽提高一个数量级,价格不知道翻了多少倍)。
JPEG2000没有被广泛用的原因是,JPEG2000没有比JPEG好太多(15%)且涉及到专利。
说到专利,这里说一个业界的常识
,即便是某一个压缩协议源代码公布了,实际上不同公司的具体算法(尤其是硬件层面的算法)会不同,并且只会比公布的源代码效果更好。这里的原因是,标准委员会的里面的人很多都在例如微软,Google这样的大公司的有职务,他们有不愿告诉别人的更好的压缩想法,打算闷声发大财,但是标准又要公布,所以他们只会在标准里面写表现一般的细节(比如算法较慢,容错率一般)。这样的结果是,各大公司做的算法有好有差,算法差的公司很有可能拿好的公司的算法用,然后做产品卖,然后被发现,打官司要求禁用该算法在该公司产品的使用。连JPEG这么老的协议都有很多公司在为自己拥有这个专利而争执不休,BPG要打破大公司之间的壁垒,而被广泛使用,其实还存在诸多变数。
链接:
常见的图片格式
 Jpg格式 
这种格式是最常见的,也是用的最多的图片格式,很受大众的喜爱;
Jpg图片其实一生成出来就已经是有损的了,他是把一些不打算存储的数据抹擦掉,
可支持有陨压缩
不支持透明
不支持动画
非矢量
色彩还原度比较好,可以支持适当压缩后保持比较好的色彩度
如果你图片颜色很多的,建议使用这个图片格式,可以使生成的图片大小比较小而不会使图片看起来很模糊(失真)
 
 Jpeg格式 
与jpg格式相似,经常在拷相片的时候看到得,但我们制作图片的时候一般是保存jpg,该种图片格式是文件相对jpg大,因为里面存储了很多相机里的拍摄参数,像色相、饱和度、对比度等
可支持有陨压缩
不支持透明
不支持动画
非矢量
可用于直接打印和印刷(相对于jpg要好)
 
   Png格式 
  该格式是在网页中用的较多的一种格式,因为他支持特明
不支持压缩
支持透明、半透明、不透明
不支持动画
非矢量
网页设计中为了使图片下面的背景颜色显示出来,我们经常会使用png24透明的图片,
Png8是类似gif的透明度,有带半透明(alpha为50%)的地方的时候以不透明处理。
Png图片如果色彩较多或复杂,则图片生成后的格式是很大的,相比较jpg的放有5~6倍之多,所以没特别要求不能以png替代jpg的使用
Png图片多用于网页中的图标设计
IE6不支持png透明特性,有png的地方会以灰色底显示,相当难看,不过ie6已经慢慢淡出了我们的视线,相信png的应用会得到更广泛。
 
   Gif格式 
  用于介于屏幕媒介的可视物体,如网页,使用比较多。
用的最多的就是特点就是图片很小(一般几kb)、动画
该格式的图片位深相对较底,只支持web色颜色种类有限,无法过渡平滑。
可支持有陨压缩
不支持全透明
支持半透明
支持动画
非矢量
使用该格式的场景:网页背景、小图标、色彩度低的小切片、动画图片;
 
   Bmp格式 
  Windows格式,windows操作系统特有的图片,该图片保存了大量的图片数据,所以图片相对是比较大的,色彩度很真实,windows的桌面就是bmp格式的,通过设了桌面背景后,会在系统生成张bmp的图片用于保存该桌面壁纸,缺点:图片格式较大
可支持有陨压缩
不支持透明
不支持动画
非矢量
 
  Tiff格式 
  印刷格式,色彩真实,支持保存图层(像psd,但像路径、蒙版等不可保存),通常发给印刷公司的图片就是用这种格式的
不支持压缩
不支持透明
不支持动画
非矢量
 
   ai、cdr、eps格式 
  这三种格式都是矢量格式
对于矢量格式的图形会因为软件的版本差异而打开后有所不同。

转载地址:http://uuaux.baihongyu.com/

你可能感兴趣的文章
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>
ChPlayer播放器的使用
查看>>
js 经过修改改良的全浏览器支持的软键盘,随机排列
查看>>
Mysql读写分离
查看>>
Oracle 备份与恢复学习笔记(5_1)
查看>>
Oracle 备份与恢复学习笔记(14)
查看>>
分布式配置中心disconf第一部(基本介绍)
查看>>
Scenario 9-Shared Uplink Set with Active/Active uplink,802.3ad(LACP)-Flex-10
查看>>
UML类图中的六种关系
查看>>
探寻Interpolator源码,自定义插值器
查看>>
一致性哈希
查看>>
mysql(待整理)
查看>>
使用PullToRefresh实现下拉刷新和上拉加载
查看>>
mysql
查看>>
2012年电信业八大发展趋势
查看>>
Web日志安全分析工具 v2.0发布
查看>>
JS重载
查看>>