`
suflow
  • 浏览: 168548 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

图片编码介绍

阅读更多

一.几个概念

1. 光栅图像

Raster Image。光栅图像指的是图像由点阵组成.就是最小单位由像素构成的图,只有点的信息.缩放时会失真,相对的是失量图像而言。也叫做位图、点阵图、像素图。

常见的光栅图像格式有:JPG、PNG、GIF、BMP、TIFF等


 

2. 矢量图

矢量图是根据几何特性来绘制图形, 位图与矢量图矢量图使用直线和曲线来描述图形,这些图形的元素是一些点、线、矩形、多边形、圆和弧线等等,它们都是通过数学公式计算获得的

它的特点是放大后图像不会失真,和分辨率无关,文件占用空间较小,如:CAD、Flash


 

3.256色、24位色、32位色

256色:可理解为256色调色板(总共可选的颜色是256种),每个像素点由8bit色彩组成(B(lue)2G(reen)3R(ed)3)

24位色:也叫真彩色(True color),R8G8B8,总共可选颜色有2^24

32位色:由24位真彩色加上8位的alpha(透明度)通道组成

 

 

4.透明度(alpha)

象素的透明色也就是所谓的Alpha值,可以理解当一个象素A盖在象素B上,如果象素A有透明色Alpha值,就可以利用Alpha对A象素和B象素的RGB色进行混合运算出一个新的RGB色,这个只是一个模拟表现过程

 

 

5.YUV( YCrCb )颜色模式

“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma)

YUV与RGB相互转换公式:

 

 

Y= 0.299*R + 0.587*G + 0.114*B
U= -0.147*R - 0.289*G + 0.436*B = 0.492*(B- Y)
V= 0.615*R - 0.515*G - 0.100*B = 0.877*(R- Y)
R = Y + 1.140*V
G = Y - 0.394*U - 0.581*V
B = Y + 2.032*U

 

6.索引图像

索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。

调色板通常与索引图像存储在一起,装载图像时,调色板将和图像一同自动装载。

索引的图像只支持一个图层,并且只有一个索引彩色通道。




7.无损图像压缩

信息不受损失,还能完全恢复到压缩前的原样。如:GIF、JPEG 2000、PNG、TIFF等

8.有损图像压缩

经过压缩,数据有所损失,不能完全恢复原有数据,如: JPEG 、JPEG 2000、WebP等

二. jpg图像

 

1.介绍

全名JPEG。JPEG 图片以 24 位颜色存储单个光栅图像

 

点优

摄影作品或写实作品支持高级压缩

利用可变的压缩比可以控制文件大小

支持交错(对于渐近式 JPEG 文件)

广泛支持 Internet 标准

 

缺点

有损耗压

缩会使原始图片数据质量下降

不适用于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片

 

 

2.压缩模式

顺序式编码(Sequential Encoding)——一次将图像由左到右、由上到下顺序处理。

递增式编码(Progressive Encoding)——当图像传输的时间较长时,可将图像分数次处理,以从模糊到清晰的方式来传送图像

无失真编码(Lossless Encoding)

阶梯式编码(Hierarchical Encoding)——图像以数种分辨率来压缩,其目的是为了让具有高分辨率的图像也可以在较低分辨率的设备上显示

 

 

3.编码步骤

1.颜色转换——图像由RGB(红绿蓝)转换为一种称为YUV的不同色彩空间。人类的眼睛对于亮度差异的敏感度高于色彩变化

2.缩减取样(Downsampling)——4:4:4(无缩减取样),4:2:2(在水平方向2的倍数中取一个),以及最普遍的4:2:0

3.离散余弦变换(DCT)——转换到频率空间

4.量化——把频率领域上每个成份,除以一个对于该成份的常数就可完成,且接着舍位取最接近的整数。这是整个过程中的主要有损运算

5.编码——将图像成份以Z字体(zigzag)排列+霍夫曼编码


 

4.文件格式( 0xFF*)

SOI(0xFFD8)——Start of Image,图像开始

APP0(0xFFE0)——Application,应用程序保留标记0

APPn(0xFFE1~0xFFF)——Application,应用程序保留标记n,其中n=1~15(任选)

DQT(0xFFDB)——Define Quantization Table,定义量化表

SOF0(0xFFC0)——Start of Frame,帧图像开始

DHT(0xFFC4)——Difine Huffman Table,定义哈夫曼表

DRI(0xFFDD)——Define Restart Interval,定义差分编码累计复位的间隔

SOS(0xFFDA)——Start of Scan,扫描开始 12字节

EOI(0xFFD9)——End of Image,图像结束 2字节

 

 

5.JPEG 2000

JPEG 2000文件的副档名通常为.jp2,MIME类型是image/jp2。

同时支持有损数据压缩和无损数据压缩

在有损压缩下,JPEG 2000一个比较明显的优点就是没有JPEG压缩中的马赛克失真效果

在高压缩比情况下,较JPEG优势明显

专利困局

 

三.gif图像

 

1.介绍

Graphics Interchange Format。以8位色(即256种颜色)重现真彩色的图像

 

优点

优秀的压缩算法使其在一定程度上保证图像质量的同时将体积变得很小。

可插入多帧,从而实现动画效果。

可设置透明色以产生对象浮现于背景之上的效果。

 

缺点

由于采用了8位压缩,最多只能处理256种颜色,故不宜应用于真彩色图片。

除了动态动态图像,其他方面基本已经被png替代。

 

 

2.LZW算法

算法的关键是,它会在将要压缩的文本中,自动地建立一个先前见过字串的字典

例如:

"I am dumb and because I am dumb, I can't even tell you that I am dumb.“

"$1 and because $1, I can't even tell you that $1. $1=[I am dumb]"

 

3.文件结构

1. GIF文件头(Header)

0x474946383761——GIF87a

0x474946383961——GIF89a

2. 逻辑屏幕描述块(Logical Screen Descriptor)

包含定义图像显示区域的参数,包括背景颜色信息

3. 全局彩色表(Global Color Table)

全局定义的一个默认调色板

4. 图像描述块(Image Descriptor)

5. 局部彩色表(Local Color Table)

6. 表基图像数据

7.图像控制扩充块(Graphic Control Extension)

包含处理图形描绘块时要使用的参数

8.无格式文本扩展块(Plain Text Extension)

9.注释扩展块(Comment Extension)

10.应用扩展块(Application Extension)

11.结束块(GIF Trailer)


四.png图像

1.介绍

便携式网络图形(Portable Network Graphics,PNG)是一种无损压缩的位图图形格式,支持索引、灰度、RGB[A]三种颜色方案以及Alpha通道等特性
采用LZ77派生出来的无损压缩算法。
特性:
支持256色调色板技术以产生小体积文件
最高支持48位真彩色图像以及16位灰度图像。
支持Alpha通道的透明/半透明特性。
支持图像亮度的Gamma校准信息。
支持存储附加文本信息,以保留图像名称、作者、版权、创作时间、注释等信息
使用无损压缩。
渐近显示和流式读写,适合在网络传输中快速显示预览效果后再展示全貌。

使用CRC防止文件出错。

 

 

2.文件结构

PNG图像格式文件由一个8字节的PNG文件标识(file signature)域和3个以上的后续数据块(chunk)组成。


PNG文件包括8字节文件署名(89 50 4E 47 0D 0A 1A 0A,十六进制),用来识别PNG格式。


3.数据块



 1. 关键块(critical chunk)

文件头数据块IHDR(header chunk):包含有图像基本信息,作为第一个数据块出现并只出现一次。

调色板数据块PLTE(palette chunk):必须放在图像数据块之前,与索引彩色图像((indexed-color image))相关。

图像数据块IDAT(image data chunk):存储实际图像数据。PNG数据允许包含多个连续的图像数据块。

图像结束数据IEND(image trailer chunk):放在文件尾部,表示PNG数据流结束。

2.另一种叫做辅助块(ancillary chunks),PNG允许软件忽略它不认识的附加块


4.IHDR数据块


 

 

参考:

http://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5

http://www.google.com

  • 大小: 246.5 KB
  • 大小: 115.5 KB
  • 大小: 70 KB
  • 大小: 40 KB
  • 大小: 1.4 KB
  • 大小: 16 KB
  • 大小: 13.8 KB
  • 大小: 32.3 KB
分享到:
评论

相关推荐

    Java基于Base64实现编码解码图片文件

    主要介绍了Java基于Base64实现编码解码图片文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    jpg图片编码算法代码示例(bmp转jpg)

    学习流媒体技术需要熟悉各种文件格式,了解一些编解码的算法,此程序演示了jpg图片的编码算法,算法流程相对简单,希望能对初学者一些启示和帮助。对各种图片和音视频文件格式感兴趣的朋友,请进群:417099529,一起...

    小波图像编码的精细介绍

    详细介绍了小波图像编码,对图像编码的初学者有很大帮助,希望大家广泛下载

    Python实现base64编码的图片保存到本地功能示例

    主要介绍了Python实现base64编码的图片保存到本地功能,涉及Python针对base64编码解码与图形文件输出保存相关操作技巧,需要的朋友可以参考下

    编码实现图片上传.rar

    课工厂新闻管理系统 素材 数据库脚本 笔记 合集 课程介绍 commons-fileupload组件 编码实现图片上传

    易语言新BASE64编码转换模块源码

    资源介绍:。易语言新BASE64编码转换模块源码例程程序使用字节集数据内部字节的左移位与,实现BASE64编码的快速转换。本易语言模块源码是易语言论坛用户近在眼前编写的。资源作者:。易语言学习网。资源下载:。

    传真机的编码技术(RH 压缩和RM 压缩)

    解压后的图片中有传真机编码技术的介绍,包括 RH 编码、RM 编码介绍

    gif图片文件编解码

    编码用gdi解析常用图片格式,然后组装成gif 解码吧gif的每一帧转换成dib gif文件格式网上有很多介绍 gif用的变长lzw压缩算法: 没弄懂原理,只知道过程。压缩取一个字符作为后缀,看看字符串是否存在。存在,用...

    计算机编码与Unicode(PPT课件)

    这个PPT课件介绍了Unicode和字符编码相关的知识。丰富生动的图片和讲解使您能快速地掌握Unicode编码相关的知识,是不可多得的Unicode相关的PPT教程。 内容提要: ----------------- 1. 计算机编码 2. 内码、字形...

    PHP实现将base64编码字符串转换成图片示例

    主要介绍了PHP实现将base64编码字符串转换成图片,涉及php编码转换、文件读写等简单处理技巧,需要的朋友可以参考下

    Java处理图片实现base64编码转换

    主要介绍了Java处理图片实现base64编码转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    点击图片播放win8视频介绍特效代码

    点击图片或文字,打开新图层播放win8视频介绍特效,播放完成显示原始界面,播放过程中有关灯效果。

    电磁式编码器的应用介绍

    本文介绍了电磁式编码器的应用的方法

    QT或VC程序中导出图片到EXCEL指定单元格过程说明

    作者项目开发的程序中要实现将程序中数据,包含图片要导出到EXCEL表格中,图片要根据不同数据对应到不同的单元格中,经过5天研究参看大量网络例子及思考,完成了导出图片到指定单元格编码实现。希望看官5分钟搞定...

    Java实现base64图片编码数据转换为本地图片的方法

    主要介绍了Java实现base64图片编码数据转换为本地图片的方法,涉及java编码转换及图片文件生成相关操作技巧,需要的朋友可以参考下

    8路HDMI高清编码器产品手册使用说明书.doc

    详细介绍8路HDMI高清编码器的技术特点,技术参数,规格,图片,使用设置说明,编码设置,系统设置,应用场景,问题处置

    Javascript 编码约定(编码规范)

    主要介绍了Javascript 编码约定(编码规范),需要的朋友可以参考下

    基于 MATLAB DCT 的图像编码器并进行调试分析【100010763】

    设计用户界面,实现基于 DCT 的图像编码器,将 DCT 编码器的原始输入图像和压缩结果图像在界面上并排进行显示,每幅压缩图片的 PSNR 也应当在界面上进行显示。 界面需要加入滑动条或者参数输入控制框,用来控制编码...

    一幅jpg图片是如何编码的.docx

    本资源以一幅实际的小图片为例子,介绍了JPEG中各种标注以及标志后面的数据分别代表什么,查看时需要打开显示批注功能。

    html5将图片转换成base64的实例代码

    但是也会有一个小缺点,就是图片编码化base64的时候大小会变大,但是通过gzip优化以后基本差不多。所以在应用的过程当中较小的图片可以直接编码成base64,较大的图片则不建议如此使用。 html5如何将图片转换成b

Global site tag (gtag.js) - Google Analytics