grayscale image---->灰度图像的意思
了解了图像原理之后,我们就介绍分别有哪些图像的种类,而这些图像又以档案的形式储存在硬碟里面,或者传输於网路之上.
关於档案格式的最主要考量就是压缩的方法,我们介绍压缩的分类与应用上的考量.
数位图像的像素 (1/2)
这是一份所谓 320 x 200 的图,它的「宽度」(Width) 有 320 像素 (pixels),「高度」 (Height) 有 200 条线 (lines).
先解释像素 (pixel).一张像这个小丑图的数位图像,其实是由一堆小粒小粒的色彩排出来的.
每一小粒色彩代表一个单一的颜色,这些不同的颜色凑在一起,被我们看到,就在脑袋里产生了意义,因而认出来这是一个化了妆的小丑.
每一小粒色彩,用一个,两个,或三个数来纪录,称为一个「像素」.
数位图像的像素 (2/2)
所谓 320 x 200 的图,就是宽有 320 个像素,高有 200条线 的图,想像那些像素排成一个矩形,总共有 64,000 个像素.
230 x 200 的像素矩形太大了,所以我们故意把它缩小成一张 40 x 25 的图.
如果觉得它太小了看不见,可以放大八倍 (宽和高各放大 8 倍) 来看看.
256 色图
缩小的小丑图是一张『256 色』图,宽有 40 个像素,高有 25 个像素.每个像素用一个介於 1 和 256 之间的数表示.
256 色图
『256 色』图的像素代表的不是色彩,而是色彩的编号.以这张小丑图为例,它一共只用到 81 种不同的颜色.
灰阶图 (1/2)
现在展示一张灰阶的小丑图.它的宽度是 320,高度是 200,也就是仍然有 64,000 个像素,但是此时是个『灰阶』图,每个像素就直接纪录那个位置的灰色亮度.
我们可以观察,这张『灰阶』图的像素数值与『256 色』图的像素数值相同,电脑只是将像素的数值解释成『亮度』,就造成了这张图.
灰阶图 (2/2)
『灰阶』图不需要另外储存色盘,每个像素直接纪录那个位置的灰色亮度.因为电脑知道,譬如说 64 号亮度的 RGB 亮度就是 (64, 64, 64).为了能够列出像素的数值,我们还是只看那张缩小的黑白版小丑图 .
高彩图
所谓『高彩』图就是同一张图里面可以显示不超过 65,536 种不同的颜色.很显然地,像小丑图这种总共只有 64,000 个像素的图,不太可能用到这麼多不同的颜色.『高彩』图的每个像素要用两个数表示,每个数都介於 0 和 255 之间.
…..
全彩图
所谓的『全彩』图就是同一张图里面可以显示所有可能的色彩,也就是 255 x 255 x 255 共约一千六百万色.很显然地,像小丑图这种总共只有 64,000 个像素的图,根本不可能用到这麼多不同的颜色 (每个像素只代表一个颜色).
…
图像的『资料量』
所谓图像的『资料量』就是一张数位图像在记忆体内所占有的空间.
资料量越大的图像,通常在萤幕上看起来越大,色彩也越丰富,但是它占用的记忆体就越多.
视觉上我们认为数位图像有两个维度:宽 (Width) 和高 (Height).
现在要接受一个新的概念:数位图像其实有三个维度:除了宽度和高度之外,还有『深度』或者『厚度』.
而数位图像的资料量,就是这三个维度的乘积,也就是体积.
数位图像的深度
决定图像资料量的第三个维度就是选用的色彩丰富程度,术语称作深度 (Depth).
其实深度就是每个像素代表几个数的意思.色彩最单调的就是『灰阶』图,它的深度是 1.
比『灰阶』图多一点点色彩的是『256 色』图,它的深度理论上也是 1,因为每个像素只代表一个数:色盘上的编号.
但是因为含有色盘的关系,经验上我们就说其深度是 1.01.这是一个我不打算讲清楚细节的地方.
『高彩』图的深度是 2,『全彩』图的深度是 3.
图像的资料量
一张数位图像的资料量,就是上述宽,高,深所形成的立方体体积,而单位是 Byte (『字元』或『位元组』).电脑的术语中,称 1024 Byte 为一个『千』Byte,记做 KB (kilo-byte);又称 1024 个 KB,或者大约一百万个 Byte 为 MB (mega-byte).
以一张 320 x 200 的『灰阶』图为例,其资料量就是 320 * 200 * 1 = 64,000 byte 也就是 62.5KB.
以一张 320 x 200 的『全彩』图为例,其资料量就是 320 * 200 * 3 = 192000 byte 也就是 187.5KB.
档案与压缩
在这张图像,软体和档案之间的关系示意图上,我们看到电脑以『档案』的形式储存数位图像於磁碟机内,或者传输数位图像於网际网路上.
负责储存或传输的是作业系统 (OS),例如 MS-Windows 98, ME, XP 之类的.
但是负责展现图像的软体,例如 MS-IE,档案总管,ACDsee 或 PhotoImpact 之类的,却要负责把档案内容转换成像素的数值,若是遇到『256 色』图,还要处理色盘.
压缩比
档案通常不会一五一十地储存像素 (和色盘) 所对应的数值,而是储存经过压缩的像素数值.
压缩的过程其实是按照一种数学函数,把像素的数值按照函数规则映射到另一种数值.
我们使用电脑,应该已经知道每个档案的性质之中,有所谓的『档案大小』,也是用 Byte 作单位来计量.
压缩之后的数位图像通常会变得比较小,也就是说档案大小应该会小於图像的资料量.变小的比率就是『压缩比』.
无失真(Lossless)压缩与破坏性(Losssy)压缩 (1/2)
无失真压缩与破坏性压缩 (2/2)
图片格式的压缩法 (1/2)
图片格式的压缩法 (2/2)
图像的呈现
在这个可爱的动画里面,我们提示:是监视器『跑去拿』VRAM 里面的指示,而不是电脑将指示从 VRAM 『送给』监视器.监视器每隔一小段时间就去电脑里面拿 VRAM 里面的指示,然后按照只是在萤幕上扫射各种不同的颜色.因为它扫得很快,我们的眼睛因为视觉暂留的关系,就觉得那个画面是静止的.
像素和光点
像素和光点之间的对应,正常的时候是 1 对 1,也就是一个像素就对应一粒光点.让我们重温缩小版的小丑图,当像素与光点是正常地 1:1 的时候,实在是很小,看不见.如果有必要的话,软体可以让一个像素对应更多粒光点,例如 1:64.这就是『强迫放大』一张图像的效果.虽然图像的画面是放大了,不过一点也没有变得比较清楚.
所谓监视器的『解析度』就是每列有几个光点,一共有几列光点.例如 800 x 600 的解析度就是在监视器上,每列有 800 个光点,一共 600 列.
影像媒体
影像原理
影像格式
数位图像导论
图片JPEG影像类型讨论
图形压缩,解压缩探讨JPEG 原理
图片JPEG影像类型讨论 (1/3)
目前影像压缩的方法有很多种,基本上可以分为「无失真」及「有失真」两类.例如我们常见的PCX ,GIF ,TIFF ,及TGA 等格式就是属於无失真的影像压缩格式.
它们利用传统档案的压缩原理及技术来处理影像压缩,所以压缩前的原始影像与压缩后还原的结果丝毫不差.
至於我们所熟知的 JPEG (Joint Photographic Coding Expert Group) 则是属於有失真的影像压缩格式.
图片JPEG影像类型讨论 (2/3)
JPEG 由国际标准组织(International Organization for Standardization ,简称ISO) 和国际电话电报谘询委员会( International Telegraph and Telephone Consultative Committee ,简称CCITT) 所建立的一个数位影像压缩标准,主要是用於静态影像压缩方面.
JPEC 采用可失真(Lossy) 编码法的概念,利用数位余弦转换法(Discrete Cosine Transform,简称DCT) 将影像资料中较不重要的部份去除,仅保留重要的资讯,以达到高压缩率的目的.
虽然被JPEC 处理后的影像会有失真的现象,但由於JPEG 的失真比例可以利用参数来加以控制;一般而言,当压缩率( 即压缩过后的体积除以原有资料量的结果) 在5% ~15% 之间时,JPEC 依然能保证其适当的影像品质,这是一般无失真压缩法所作不到的.
图片JPEG影像类型讨论 (3/3)
我们将以下图的阳明山风景为例,利用不同的JPEC 压缩参数(PHOTOIMPACT 5.0 渐进式 1024 X 768)来压缩它,其压缩的结果如图二和图三.图二的影像品质与原图十分接近,而压缩率已达65% ;至於图三,其压缩率为25% ,压缩效果良好,但此时影像品质已经有明显的失真了.
JPEG100 原图100%_ 671K
JPEG65 压缩65%_ 341K
JPEG25 压缩25% 261K
JPEG原理 (1/3)
JPEG所根据的原理是:人的眼睛对影像中亮度的变化最为敏感,远远超过对颜色变化的感觉,所以,JPEG储存的,并不是一点一点的颜色,而是亮度及颜色的"变化率".藉著变化速率的曲线的还原,来重现大部分的影像,尤其是影像的"感觉".
对大部分JPEG型态的压缩来说,第一步要先将RGB转换成亮度与色度,最常见的是CCIR601格式,也就是所谓Y,Cb,,Cr格式,Y代表亮度,Cb代表蓝色色度,Cr代表红色色度( 也可用U代表Cb, V代表Cr,即所谓YUV格式),转换公式如下:
Y = 0.299R + 0.587G + 0.114B
Cb = 0.1687R – 0.3313G + 0.5B
Cr = 0.5R – 0.4187G – 0.0813B
这是一个不会失真的转换,Y,Cb,Cr还是可以完全转换回R,G,B的.
JPEG原理 (2/3)
由於人眼对亮度远比对色度敏感,所以在压缩和重建影像时,可以用份量较多的Y,而减少Cb 及Cr的份量.
转换后的数值,仍然是一个图点一个图点的格式.必须将相邻近的点合并,透过DCT(Discrete Cosine transform)转换,将点资料转换成"变化速率"的曲线资料,再将这曲线数位化(这就就是造成JPEG失真所在的地方) .
数位化时所用的系数,决定了资料流失量的多寡,及影像品质的好坏,这些被数位化后的资料,还可以再用Huffman或其他编码方式,予以压缩,存成JPEG档案.还原的步骤刚好逆其道而行.
首先,将JPEG资料解压缩,变成变化速率数位曲线,然后使用逆向的DCT转换,重建影像.原本一些低阶的位元,可能无法重现,都用0加以补足.
JPEG原理 (3/3)
由於Y,Cb,Cr的重要性不同,JPEG允许三者各自赋予不同的份量.例如:以一个2x2点矩阵(共4个图点)来说,Y值最好有4个(共有4个图点),但Cb,Cr各自只记录一个(平均值),这样一来,原本在RGB模式,需要4x3=12 bytes的资料,现在只需要4+1+1=6 bytes,无形中节省了50%的空间,但影响影像品质并没有太多.
致於DCT,其实是有点类似傅立叶转换,将原本属於振幅强度的资料阵列,转换成强度变化频率的资料阵列.
JPEG使用线性数位化,也就是每一个DCT转换值,都被一个不同的数位化系数去除,再四拾五入到一个整数,以储存起来.在这个过程中,变化率阵列的每一个元素,将会视其频率大小,除以一个不同的系数.
对人眼来说,比较缓慢的变化,会比快速变化更被注意.这个过程会把资料的长度大幅降低.所以变化率越大的元素,压缩比越大.这也就是JPEG对於不规则影像( 如电视画面,照片等)比较有利的地方.
影像媒体
影像原理
影像格式
数位图像导论
图片JPEG影像类型讨论
图形压缩,解压缩探讨JPEG 原理
图形压缩,解压缩探讨JPEG 原理
JPEG是一种对彩色或灰阶之类连续色调图形作压缩和解压缩的标准.
这个标准是由ISO/IEC JTC1/SC29 WG10所订定.JPEG可应用在许多如研讨画图片,彩色电传,影像资料库,桌上出版系统,多媒体及医疗等的静态影像的压缩之上.
JPEG最基本的概念就是将影像的一个区块从空间域转换为频率域.一般而言影像高频部份的量会比低频部份要小得多.
而由於人们的眼睛对空间高频的部份较不敏感,因此高频部份就可以用较大量化处理的方式来产生较为粗略的影像来表示,由於较粗略的影像需要较少的位元,於是可以大幅度地减少要储存或通讯的资讯量,而缩减后的资讯影像也的确可以为人们的视觉感官所接受.
影像压缩原理
资料的压缩方法可分为无损压缩 (lossless compression) 与略损压缩(lossy compression)两类.
对於资料本身在压缩后再还原必须保持原貌的需求上,必须使用无损压缩,无损压缩有不得失真的限制,因此压缩效果有限.对於文数字,程式等资料型态适用.
影像资料的一个特性是空间冗余(Spatial Redundancy).
一般来说,在同一张画面上必有一些共通特性(Correlation),也许是色彩上的,也许是几何上的,或是其它特徵值得到的.
所谓的空间冗余去除,就是要识别出画面中重要的元素,并移除重复且较无影响的元素的动作.
影像压缩方法概说 (1/2)
首先介绍一种基本的压缩方法: 称为变动长度编码法(Run Length Encoding,简称RLE).
其原理是把资料中重复多次的内容,记录其内容细节与出现约次数.例如: ABCDEABCDEABCDEABODE,我们可记录ABCDE出现4次,两项资讯,是不是比直接记录重复的ABCDE要精简呢
变动长度编码法的演算法相当简单,除了可以直接应用外也可以与其他压缩方法搭配.
但变动长度编码法不一定能达到压缩的效果,有时候遇到重复性很低的资料,压过的大小可能不减反增.
影像压缩方法概说 (2/2)
In order to understand the correlation between pixels in an image and hence decide which data to eliminate mathematical transforms are used.
目前使用在影像压缩的最普及数学转换为离散余弦转换 (DCT,Discrete Cosine Transform) .
DCT是用来分析影像资料中较不重要的部分,然后用量化(Quantization)方法将其去除,仅保留重要资讯,来达到高压缩的效果,
而其失真比例可以利用量化参数来加以控制.此方法用於JPEG格式之影像,当压缩比在5% ~ 15%间时,依然能保证其适当的影像品质.此一压缩方法的发展,让影像媒体的储存与应用更加地方便.
JPEG Compression with Different Quality
Original
QF=20
QF=50
QF=30
QF=80
QF=10
原图与压缩图比较
原图与压缩图比较 cont'd
原图与压缩图比较 cont'd
原图与压缩图比较 cont'd
原图与压缩图比较 cont'd
原图与压缩图比较 cont'd
Subjective View of Titanic
Baseline JPEG Encoding
Convert to
8x8 block
Subtract
128 in pixel
DCT
Transform
Quantize
Zigzag/
RLC
Entropy
Encode
DPCM
Encode
DC coefficient
AC Range: -1023 ~ 1023
DC Range: 0 ~ 2048
JPEG 编码及解码器
8X8
像素
区块
FDCT
编码资料流
JPEG
语法
产生器
无失真压缩
霍夫曼编码
失真压缩
量化处理
斜向
扫描
量化表
霍夫曼
编码表
FDCT:Forward Discrete Transform(正离散余弦转换)
8X8
像素
区块
IDCT
编码资料流
JPEG
语法
产生器
无失真压缩
霍夫曼编码
反量化
斜向
扫描
量化表
霍夫曼
编码表
IDCT:Inverse Discrete Transform(逆离散余弦转换)
JPEG编码方式
为了因应不同的通讯及储存状况下之应用,JPEG提供二四种不同的编码方式:
1,循序模式 (Sequential mode)
2,渐进模式(Progressive mode)
3,层模式(Hierarchical mode)
4,无失真模式(Losslessmode)
1,循序模式(Sequential mode)
循序模式编码的方式将影像以扫瞄方式由左至右由上而下作编码,这个循序模式的编码架构简单而有效率,对大部份的应用程式是相当合宜的,架构仅对资料作单一次处理的方式作影像编码的工作,也就是所谓的循序编码的模式了.这种方式对每个输入资料提供8位元的解析度.
Sequential Coding Example
Sequential Coding Example
2,渐进模式(Progressive mode)
影像的建立无论是采取从模糊的低频影像到清晰的高频影像 (即频谱选择 方式),或是自最大有效位元到最小有效位元的建立方式(即连续近似法), 渐进模式的编码都对影像作多重扫描来作处理.以频谱选择方式为例,影 像以DCT转换到频率域,而一些频宽可立即从DCT系数得到,由於只执行一次DCT,因此在这样的方式下只有一种的空间解析度.渐进模式对於在频宽受到限制的频道上作影像传输相当有用,使用者可以先看到粗略的影像,再决定是否需要最终的影像.
渐进模式解压缩后影像呈现的方式,先出现模糊的低频影像,而后再显现清晰的高频影像.这种的编码方式满足了许多应用程式渐进呈现显示,算术编码以及对解析度 (如12位元)的较高需求,算术编码法提供了比Huffman编码法有5-10%更好的压缩.
另外此模式也对循序编码和八位元的解析度提供了支援.
Progressive Coding Example
Progressive Coding Example
3,阶层模式(Hierarchical mode)
阶层模式的编码方式乃是将影像以低空间解析度的影像先作编码,再以此低解析度影像为基础对较高解析度影像与低解析度影像问的差异作编码以得到较高解析度的编码影像.
相同一个影像可以以阶层模式作好几种不同解析度的编码,阶层模式可以同时满足各种具有不同容量的设备上,使得即使低价的设备也可以将此一多解析度的影像作解码后得到其所能达到的最佳品质.
相较之下.渐进模式只能采用单一解析度作影像的重建与显现,阶层模式的确为各种不同的设备提供了更佳的强性与解析度.
Hierarchical Coding Example
4,无失真模式 (Lossless Mode)
所谓的无失真表示了此模式可以将影像原原本本地将影像还原重建回来.
为了重建时能得到和原来完全一样的影像,在无失真模式下并没有使用DCT,也因此无失真模式的压缩率比使用DCT作压缩处理的失真方式要低得多.
这种模式一般只用在一些如重要的医疗影像等对影像有无失真需求的场合之中,而各个像素的数值从二位元到十六位元都可以.
另外这种的处理模式对循序编码也提供支援,使用者可选择Huffman编码或算术编码的方式作处理.
Lossless Coding
Predictor
Entropy Encoder
Huffman
Table
Source Image
Compressed Data
Lossless encoder
亮度与色度 (1/2)
虽然JPEG并未对色彩空间作规划,但大部份的JPEG应用程式都不用RGB的表示方式.而以YCbCr来表示;另外,也由於人的视力系统对色度的敏锐度比较不高 .
因此以 YCbCr 色度的方式来表示可以再做一次作取样(Subsampling) 来减低资讯量,这也是普遍使用YCbCr.另一个重要的理由.如下图所示的.
4:4:4格式代表 YCbCr 原来完整的资讯.而色度表示法可以再次取样以4:2:2或4:2:0格式来表达;4:2:2格式将原本的资讯旦减少为三分之二.
而4:2:0格式则可以将资讯三减少为一半.虽然色度的资讯量减少了.但对人的视觉神经而言却仅仅感受到微小的差别而已.
亮度与色度 (2/2)
离散余弦转换
为了说明执行离散余弦转换 (DCT: Discrete Cosine Transform)的影响,我们将以自一张图取下的一个小区块 (8X8像素)的亮度资料,并将之转换成空间频率域,而后再自每个像素值中减去128以期每个像素都可以符合在DCT演算法中的8位元运算范围.经过转换后的二维 (2D)系数如下所示,这个2D频率域的横轴以fx表示而纵轴以fy来表示;左上角代表DC的系数值 -80,低频部份包含了区块的大部份能量.而对人眼较不敏感的高频部份,则通常含有较低的能量.
0
0
0
-2
-4
0
8
0
-2
-2
0
0
0
6
0
12
0
0
-2
0
-4
6
8
-2
0
-2
4
10
-6
-2
0
8
-2
4
4
-4
-12
0
-4
10
2
0
0
0
12
8
-8
24
0
-2
-2
2
6
-6
4
-80
量化 (1/2)
以下所列为 JPEG所建议的量化(Quantization)矩阵,以期能对每秒 30个 720X576像素画面的 CCIR-601 标准作影像的处理与显示.
这个矩阵的目的是在对亮度(Luminance)是作量化处理,至於色度(Chrominance)系数则还有另一个矩阵做处理.
99
103
100
112
98
95
92
72
101
120
121
103
87
78
64
49
92
113
104
81
64
55
35
24
77
103
109
68
56
37
22
18
62
80
87
51
29
22
17
14
56
69
57
40
24
16
13
14
55
60
58
26
19
14
12
12
61
51
40
24
16
10
11
16
量化 (2/2)
在亮度系数的量化方面,每个 2D DCT 系数除以相对的量化矩阵的值,在四舍五入后得到如下的量化后 DCT 系数:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
-1
0
0
1
0
0
0
0
1
1
-1
2
0
0
0
0
0
0
0
-5
举例来说,DC系数 -80除以其所相对应值16后得到量化值 -5.注意量化后区块高频部份出现许多零值,代表人类视觉系统对高频部份并不敏感.由於四舍五入的部份并不能在解码时重现,因此这个步骤将是个失真的过程.
斜向扫描 (Zigzag Scanning) (1/2)
区块在量化之后,只有低频的部份有非零值,为了能进一步地减少储存空间与通讯容量的大小.
尽可能地将零值放在一起,使得处理时能以几个零来表示而非个别的处理每个零.
因此运用如下图的方式做斜向扫描 (zigzag scan),这种斜向扫描的扫描线乃是沿著空间频率大小增加的方向作扫描的.
使得许多的零可以被串接在一起,达到原来的期望.
斜向扫描(2/2)
对量化后系数作斜向扫描的情形,斜向扫描仅针对AC系数部份作处理.
也就是跳过左上角DC系数的部份,至於DC系数的部分则另行以下图的方式与其所相邻的区块作扫描.
字流长度与霍夫曼编码法
扫描完成后,接下来的工作便运用字流长度 (Run length)与霍夫曼(Huffman)编码法混用的方式,以期使得位元的数量能够达到最佳化的目的.首先自斜向扫描处理取得序列的AC系数,如上例得到以下数列:0,2,1,-1,0,0,1,0,1,1,0,0,1,0,0,0,-1,0,0,-1,..,0,而后字流长度或称为变动长度(Variable length)编码对这个序列作编码以更进一步地降低所需的位元数,编码的数值所得到的是由零值的数目按著非零值的数所构成,而得到如下的编码序列格式:
(字流中零值的数目,下个非零值的数)
因此,如上面的例子就可以编码成:(1,2) ,(0,1) , (0,-1) , (2,1) , (1,1) , (0,1),(0,1),(2,1),(3,-1),End of Block (EOB) 来表示;而后再以霍夫曼编码减少为了要代表字流长度编码的位元数.
霍夫曼编码是依统计所推论出来让最常用的码以最少的位元数来表示,JPEG为亮度与色度的DC及AC的霍夫曼编码提供了一个表格以为处理之需;另外在作阶层模式或无失真模式编码时,也可藉以算术编码表的运用来取代霍夫曼编码表.
温馨提示:内容为网友见解,仅供参考