一 : 饥荒全boss属性打法及掉落详解
《饥荒》里面的BOSS是我们最终要面对的,今天就为大家带来了饥荒boss属性资料及打法掉落大全,算是百科向的boss相关,还不了解的玩家可以参考下,一起来看饥荒boss百科攻略吧。
蜘蛛女王
生物名称:蜘蛛女王
血量:1250
伤害:30
攻击间隔:3
攻击距离:5
步行速度:1.75
噩梦光环:-400/分
特殊能力:生成蜘蛛战士或小蜘蛛
掉落物品:400%400%100%100%
生成于:
生成代码:DeSpawn(“spiderqueen”)
生物简介
蜘蛛女王是生成在三级蜘蛛巢中的生物,如果玩家或其他生物在蜘蛛女王附近徘徊,会被蜘蛛女王锁定为目标并进行攻击。蜘蛛女王平均每20秒产下一只蜘蛛,如果玩家在蜘蛛女王附近,蜘蛛女王会有限攻击玩家,蜘蛛女王生产下的蜘蛛有三分之一都是蜘蛛战士,蜘蛛女王最多拥有16名蜘蛛追随者,这些蜘蛛和女王不对仇视韦伯且韦伯可以收复女王的追随者,如果玩家距离女王过远,女王会停止任何攻击性行为,并会睡着不再寻找开阔的场地来产卵。当女王出现时会寻找开阔地带产下蜘蛛巢,这个蜘蛛巢并会迅速成长为二级蜘蛛巢不久就会变成另外一只女王,这样会使蜘蛛的分布范围更广,此外当女王流浪1.5天时再发现开阔的场地,它自己会变成一级的蜘蛛巢。冰杖冰冻三次之后才会使蜘蛛女王冻结
击杀方法
放风筝
女王的行动非常缓慢,所以在它攻击之前玩家可以攻击女王多次,每当女王产下蜘蛛造成的间隔,玩家可以利用此机会多攻击女王1~2次,但是优先杀死女王产下的蜘蛛,否则蜘蛛会打断你的攻击。最好在击杀女王前准备充足的护甲,也可以设置陷阱捕捉蜘蛛,不过于女王最好是速战速决或保持一定距离,女王的噩梦光环会使玩家的脑残值见底
猪酱和大白兔
将女王引诱到猪村或兔村中,可以使其猪酱和大白兔攻击女王,减少玩家不必要的损失,还会减少脑残值的消耗
触手
将女王引至沼泽中,因为触手会主动攻击进入攻击范围的目标,因此用触手解决女王是个不错的选择,一般3~5只触手就可以解决女王
蜘蛛
如果玩家拥有女王帽可以号召蜘蛛大军来攻击蜘蛛女王,当然这种方法很有危险,脑残值下降快且帽子耐久损坏后会导致蜘蛛敌视玩家,而韦伯使用这种方法是再适合不过了,韦伯可以用怪物肉收买蜘蛛大军并其对女王进行攻击
蜜蜂
引诱女王到达杀人蜂巢穴或者防止蜜蜂地雷,多只蜜蜂配合攻击可以轻松击杀蜘蛛女王,在杀人蜂区域,蜘蛛女王只要对其杀人蜂攻击就会有更多的杀人蜂出现并攻击女王,所以用这个方法战斗的场面非常壮观,不过拾取战利品就有点费事了
海狸
当伍迪砍伐树木次数到达一定数量或满月,伍迪就会变身为海狸,当玩家为海狸状态时血量会被替换成木头值,这时去攻击女王非常简单,但是要控制好木头值的时间,海狸的攻击速度和攻击伤害都比较高,伤害相当于触手棒,所以只需花费一些时间和控制好木头值击杀女王不在话下
食人花
将蜘蛛女王引诱至食人花处,眼球草会攻击女王和蜘蛛,虽然眼球草的生命值低,但是食人花可以无限产出眼球草,只要食人花本体不在蜘蛛的攻击范围,整个过程只需要玩家全程观看即可,推荐食人花种植在人造地板上,这样可以使眼球草生成在地板外且可以保护食人花本体,不过缺陷就是眼球草会吞食战利品并被食人花收入囊中,这时就需要玩家费一点力击杀食人花本体
飞镖、吹箭
这是击杀蜘蛛女王最简单的方法,玩家只需造具充足一边退一边打,就可以击杀女王,不过这样容易被蜘蛛战士追赶上
火药
玩家使用冰杖冰冻三次后会使蜘蛛女王冻结,这时玩家需在蜘蛛女王周围放置5~6枚火药点燃并远离即可,这样蜘蛛女王会被火药炸掉大部分的生命值,但是蜘蛛女王直接被火药炸死时只会掉落熟怪物肉和灰烬,这需要把握好尺寸
下表是角色默认攻击力击杀生物次数:
趣闻
1.现实中蜘蛛拥有8条腿,而游戏中的蜘蛛女王有6条腿,且游戏中的蜘蛛不会因饥饿而死
2.在显示生活在蜘蛛是独居生物,群居生活的蜘蛛种类也不多,饥荒中蜘蛛女王类似现实中的蜂后、蚁后
3.蜘蛛女王的外貌和魔戒中的蜘蛛女王相同,在游戏中它对韦伯保持中立,只要韦伯不主动进攻它,且韦伯靠近蜘蛛女王不会掉落脑残值
4.追随女王的蜘蛛会显示出一种臣服畏惧的表情,同理追随韦伯的蜘蛛也会显示出这种表情,不过出现的几率比较小
漏洞
1.当于蜘蛛女王战斗时有几率会响起老版的战斗音乐,只要玩家不站在蜘蛛女王的攻击半径内蜘蛛女王就会无视玩家,追随女王的蜘蛛也同样如此
2.当蜘蛛女王被击杀时,它会变成蜘蛛巢且仍然会掉落战利品,还会做出尝试攻击玩家的动作
3.有时,在蜘蛛女王被击杀时触发蜘蛛女王产生蜘蛛的动画,又很小的几率这只蜘蛛会生成
4.当蜘蛛女王被火药击杀后,任何动画都不会触发
“哎呦,空姐和蜘蛛女王有得一拼!”
生物综合图
上一页12345678下一页阅读全文
二 : 图像解析度详解
图像解析度详解
分辨率(resolution,港台称之为解析度)就是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。
1、图象分辨率(PPI)
图像分辨率(ImageResolution):指图像中存储的信息量。这种分辨率有多种衡量方法,典型的是以每英寸的像素数(PPI,pixelperinch)来衡量;当然也有以每厘米的像素数(PPC,pixelpercentimeter)来衡量的。图像分辨率决定了图像输出的质量,而图像分辨率和图象尺寸(高宽)的值一起决定文件的大小,且该值越大图形文件所占用的磁盘空间也就越多。图像分辨率以比例关系影响着文件的大小,即文件大小与其图像分辨率的平方成正比。如果保持图像尺寸不变,将图像分辨率提高一倍,则其文件大小增大为原来的四倍。
2、扫描分辨率(SPI)
扫描分辨率:指在扫描一幅图像之前所设定的分辨率,它将影响所生成的图像文件的质量和使用性能,它决定图像将以何种方式显示或打印。如果扫描图像用于640×480像素的屏幕显示,则扫描分辨率不必大于一般显示器屏幕的设备分辨率,即一般不超过120DPI。 但大多数情况下,扫描图像是为了在高分辨率的设备中输出。如果图像扫描分辨率过低,会导致输出的效果非常粗糙。反之,如果扫描分辨率过高,则数字图像中会产生超过打印所需要的信息,不但减慢打印速度,而且在打印输出时会使图像色调的细微过渡丢失。一般情况下,图像分辨率应该是网屏分辨率的2倍,这是目前中国大多数输出中心和印刷厂都采用的标准。然而实际上,图像分辨率应该是网幕频率的1.5倍,关于这个问题,恐怕会有争议,而具体到不同的图像本身,情况也确实各不相同。要了解详细内容,请看《网屏角度及输出分辨率》。 可能有很多朋友没有明白这其中是如何计算的,下面笔者就简单的讲解一下PPI的计算方法。首先,我们先了解一下什么叫PPI,PPI是英文Pixelsperinch的缩写,意思就是每英寸所拥有的像素(Pixel)数目,搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后除以对角线(我们平常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的iPhone4的PPI为330,要比苹果官方公布的326要高一点点。
3、网屏分辨率(LPI)
网屏分辨率(ScreenResolution):又称网幕频率(是印刷术语),指的是印刷图像所用的网屏的每英寸的网线数(即挂网网线数),以(LPI)来表示。例如,150LPI是指每英寸加有150条网线。
4、设备分辨率
设备分辨率(DeviceResolution):又称输出分辨率,指的是各类输出设备每英寸上可产生的点数,如显示器、喷墨打印机、激光打印机、绘图仪的分辨率。这种分辨率通过DPI来衡量,目前,PC显示器的设备分辨率在60至120DPI之间。而打印设备的分辨率则在360至2400DPI之间。
5、图像的位分辨率
图像的位分辨率(BitResolution):又称位深,是用来衡量每个像素储存信息的位数。这种分辨率决定可以标记为多少种色彩等级的可能性。一般常见的有8位、16位、24位或32位色彩。有时我们也将位分辨率称为颜色深度。所谓“位”,实际上是指“2”的平方次数,8位即是2的八次方,也就是8个2相乘,等于256。所以,一幅8位色彩深度的图像,所能表现的色彩等级是256级。
6、打印机的分辨率
某台为360DPI,是指在用该打印机输出图像时,在每英寸打印纸上可以打印出360个表征图像输出效果的色点。表示打印机分辨率的这个数越大,表明图像输出的色点就越小,输出的图像效果就越精细。打印机色点的大小只同打印机的硬件工艺有关,而与要输出图像的分辨率无关。
7、扫描仪的分辨率
要从三个方面来确定:光学部分、硬件部分和软件部分。也就是说,扫描仪的分辨率等于其光学部件的分辨率加上其自身通过硬件及软件进行处理分析所得到的分辨率。光学分辨率是扫描仪的光学部件在每平方英寸面积内所能捕捉到的实际的光点数,是指扫描仪CCD的物理分辨率,也是扫描仪的真实分辨率,它的数值是由CCD的像素点除以扫描仪水平最大可扫尺寸得到的数值。分辨率为1200DPI的扫描仪,其光学部分的分辨率只占400~600DPI。扩充部分的分辨率,是通过计算机对图像进行分析,对空白部分进行科学填充所产生的(由硬件和软件所生成,这一过程也叫“插值”处理)。光学扫描与输出是一对一的,扫描到什么,输出的就是什么。经过计算机软硬件处理之后,输出的图像就会变得更逼真,分辨率会更高。目前市面上出售的扫描仪大都具有对分辨率的软、硬件扩充功能。有的扫描仪广告上写9600×9600DPI,这只是通过软件"插值"所得到的最大分辨率,并不是扫描仪真正光学分辨率。所以对扫描仪来讲,其分辨率有光学分辨率(或称光学解析度)和最大分辨率之说。我们说某台扫描仪的分辨率高达4800DPI(这个4800DPI是光学分辨率和软件差值处理的总和),是指用扫描仪输入图像时,在1平方英寸的扫描幅面上,可采集到4800×4800个像素点(Pixel)。1英寸见方的扫描区域,用4800DPI的分辨率扫描后生成的图像大小是4800Pixel×4800Pixel。在扫描图像时,扫描分辨率设得越高,生成的图像的效果就越精细,生成的图像文件也就越大,但插值成分也越多。关于扫描仪、打印机、显示器的分辨率对扫描仪、打印机及显示器等硬件设备来说,其分辨率用每英寸上可产生的点数即DPI(DotsPerInch)来度量。
8、显示器的分辨率
显示装置能有效辨别的最小的示值差。显示器的分辨率为80DPI,是指在显示器的有效显示范围内,显示器的显像设备可以在每英寸荧光屏上产生80个光点。举个例子来说,一台14英寸的显示器(荧光屏对角线长度为14英寸),其点距为0.28mm,那么:显示器分辨率=25.39956mm/inch÷0.28mm/Dot≈90DPI(1inch=2.539999918cm)。显示器出厂时一般并不标出表征显示器分辨率的DPI值,只给出点距,我们根据上述公式即可算出显示器的分辨率。根据我们算出的DPI值,我们进而可以推算出显示器可支持的最高显示模式。假设该14英寸显示器荧光屏有效显示范围的对角线长度为11.5英寸,因显示器的水平方向和垂直方向的显示比例为4:3,故可设有效显示范围水平宽度为4x英寸,垂直高度为3x英寸,根据数学上的勾股定理,可得x=11.5÷5=2.3英寸。所以有效显示范围宽度为2.3×4=9.2英寸,垂直高度为2.3×3=6.8英寸。最高显示模式约为:800(9.2×90)×600(6.8×90),这时是用一个点(Dot)表示一个像素(pixel)。 上面主要讲述了扫描仪、打印机和显示器的设备分辨率。 特别提醒:设备分辨率与用该设备处理的图像的分辨率是两个既有联系又有区别的概念。 测量仪器方面的分辨率。
9、数码相机的分辨率
数码相机分辨率的高低决定了所拍摄的影像最终能够打印出高质量画面的大小,或在计算机显示器上所能够显示画面的大小。数码相机分辨率的高低,取决于相机中CCD(ChargeCoupledDevice:电荷耦合器件)芯片上像素的多少,像素越多,分辨率越高。由此可见,数码相机的最大分辨率也是由其生产工艺决定的,但用户可以调整到更低分辨率以减少照片占用的空间。就同类数码相机而言,最大分辨率越高,相机档次越高。但高分辨率的相机生成的数据文件很大,对加工、处理的计算机的速度、内存和硬盘的容量以及相应软件都有较高的要求。 数码相机像素水平的高低与最终所能打印一定分辨率照片的尺寸,可用以下方法简单计算:假如彩色打印机的分辨率为NDPI,数码相机水平像素为M,最大可打印出的照片为M÷N英寸。比如,打印机的分辨率为300DPI,那么水平像素为3600的数码相机,其所摄的影像文件不作插值处理能够打印出的最大照片尺寸为12英寸(3600÷300)。很显然,要打印出尺寸越大的数码照片,就需要越高像素水平的数码相机。计算显示尺寸的方法与打印尺寸的方法相同。
10、投影机的分辨率
投影机的分辨率有两种常见的表示方式,一种是以电视线(TV线)的方式表示,另一种是以像素的方式表示。以电视线表示时,其分辨率的含义与电视相似,这种分辨率表示方式主要是为了匹配接入投影机的电视信号而提供的。以像素方式表示时通常表示为1024×768等形式,从某种意义上讲这种分辨率的限制是对输入投影机的VGA信号的行频及场频作一定要求。当VGA信号的行频或场频超过这个限制后,投影机就不能正常投显了。
11、商业印刷领域的分辨率
在商业印刷领域,分辨率以每英寸上等距离排列多少条网线即LPI(LinesPerInch)表示。在传统商业印刷制版过程中,制版时要在原始图像前加一个网屏,这一网屏由呈方格状的透明与不透明部分相等的网线构成。这些网线也就是光栅,其作用是切割光线解剖图像。由于光线具有衍射的物理特性,因此光线通过网线后,形成了反映原始图像影像变化的大小不同的点,这些点就是半色调点。一个半色调点最大不会超过一个网格的面积,网线越多,表现图像的层次越多,图像质量也就越好。因此商业印刷行业中采用了LPI表示分辨率。
12、电视的分辨率
在电视工业中,分辨率指的是在荧光屏等于像高的距离内人眼所能分辨的黑白条纹数,单位是电视线(TV线)。 我们国家采用的电视标准是PAL制式,它规定每秒25帧,每帧625扫描行。由于采用了隔行扫描方式,625行扫描线分为奇数行和偶数行,这分别构成了每一帧的奇、偶两场,由于在每一帧中电子束都要从上面开始扫描,因此存在着电子束从终点回到起点的扫描逆程期,在这期间被消隐的扫描行是不可能分解图像的。扫描逆程期约占整个扫描时间的8%,因此625行中用于扫描图像的有效行数只有576行,由此推导出图像在垂直方向上的分辨率为576点。按现行4∶3宽高比的电视标准,图像在水平方向上的分辨率应为576×4/3=768点,这就得到了768×576这一常见的图像大小。另外,在计算机视频捕捉时,我们还会遇到遵循CCIR601标准的PAL制式图像尺寸,其大小为720×576。对于我们还能接触到的NTSC制式来讲,它规定每秒30帧,每帧525行,同样采用了隔行扫描方式,每一帧由两场组成,其图像大小是720×486。 日本的D端子,采用了类似计算机的多针D型插接头,用来直接传输数字图像信号,根据传输数字信号的规格不同,D端子已经形成了一个系列的型号。目前有D1、D2、D3、D4、D5,系列序号越高,传输数据的规格越高。
D端子 | 格式 | 分辨率 | 行频 | 规格 |
D1 | 480i | 720×480 | 15.25kHz | 数字标清(SDTV) |
D2 | 480p | 720×480 | 31.5kHz | 数字标清(SDTV) |
D3 | 1080i | 1920×1080 | 33.75kHz | 数字高清(HDTV) |
D4 | 720p | 1280×720 | 45kHz | 数字高清(HDTV) |
D5 | 1080p | 1920×1080 | 67.5kHz | 全高清(FullHDTV) |
标准帧率均为60Hz,但现在大多数都达不到,通常采用24Hz,25Hz,30Hz。
13、鼠标的分辨率
鼠标的分辨率是指每移动一英寸能检测出的点数,分辨率越高,质量也就越高。以前鼠标的分辨率通常为100DPI,现在的鼠标分辨率从200DPI到1000DPI不等。高分辨率的鼠标通常用于制图和精确计算机绘图等。
14、触摸屏的分辨率
触摸屏的分辨率是指将屏幕分割成可识别的触点数目。通常用水平和垂直方向上的触点数目来表示,如32×32。有的人认为触摸屏的分辨率越高越好,其实并非如此,在选用触摸屏时应根据具体用途加以考虑。采用模拟量技术的触摸屏分辨率很高,可达到1024×1024,能胜任一些类似屏幕绘画和写字(手写识别)的工作。而在多数场合下,触摸技术的应用只是让人们用手触摸来选择软件设计的“按钮”,没有必要使用非常高的分辨率。例如在14英寸显示器上使用触摸屏时,显示区域的实际大小一般是25cm×18.5cm,一个分辨率为32×32的触摸屏就能把屏幕分割成1024个0.78cm×0.58cm(比一支香烟还细小)的触点。人的手指按压触摸屏的触点比香烟的直径大多了,所以这样一个触点就已经足够了。
15、望远镜分辨率
望远镜的分辨率,也可以说是光学透镜的分辨率。光具有波动性和粒子性,所以通过透镜汇聚的光线投射到感光元件上,如果两个像点距离很小,就会发生干涉,如右图。角度这个参数就是望远镜或者透镜的理论分辨率,一般用弧度表示。
这个数值越小,也就是可以分辨的物体越细小,那么透镜的分辨率越高,这个角度与透镜的口径和所使用波长有关,理论计算可得最小分辨角:r=1.22λ/D,其中λ为观测波长,D为望远镜的口径,二者取同一单位时r的单位为弧度。对于目视观测,通常取λ为肉眼最敏感的550nm。这个数值是一个理论结果,实际上地面观测,受到气流,污染物,杂光等的影响也就达不到这个最好的效果,也就是分辨率要下降。对于人眼来讲,平均瞳孔直径7mm,有60角秒的分辨率,而对于口径116mm口径的小型望远镜,具有1角秒的分辨率。
16、显微物镜的分辨率
显微物镜的分辨率即物面上能分开的最短距离,由以下公式计算 σ=0.61λ/NA 其中σ为显微物镜分辨率,λ为光源波长,NA为显微物镜的数值孔径。
17、显示器分辨率设置与疾病预防
有研究显示,在800×600分辨率环境下工作的人,更有机会患上一些疾病,这与用手机打一天电话的效果是一样的。 因此,有专家提示人们应将显示器分辨率设置为1024×768以上,这样可以挡住更多辐射。
常见显示分辨率:
标屏 | 分辨率 | 宽屏 | 分辨率 |
QVGA | 320×240 | WQVGA | 400×240 |
VGA | 640×480 | WVGA | 800×480 |
SVGA | 800×600 | WSVGA | 1024×600 |
XGA | 1024×768 | WXGA | 1280×720/1280×768/1280×800 |
XGA+ | 1152×864 | WXGA+ | 1366×768 |
SXGA | 1280×1024/1280×960 | WSXGA | 1440×900 |
SXGA+ | 1400×1050 | WSXGA+ | 1680×1050 |
UXGA | 1600×1200 | WUXGA | 1920×1200 |
QXGA | 2048×1536 | WQXGA | 2560×1536 |
常见照相机分辨率
百万像素 | 4:3分辨率 | 16:9分辨率 |
0.3M | 640×480 | 720×405 |
0.5M | 800×600 | 960×540 |
0.6M | 1024×576 | |
0.7M | 960×720 | |
0.8M | 1024×768 | |
0.9M | 1280×720 | |
1M | 1152×864 | 1366×768 |
1.2M | 1280×960 | |
1.5M | 1400×1050 | 1600×900 |
2M | 1600×1200 | 1920×1080 |
2.4M | 1792×1344 | 2048×1152 |
3.2M | 2048×1536 | |
4M | 2304×1728 | 2560×1440 |
5M | 2592×1944 | 3072×1728 |
6M | 2816×2112 | |
7M | 3072×2304 | |
7.5M | 3200×2400 | |
8M | 3264×2448 | 3840×2160 |
9M | 3456×2592 | |
9.5M | 3600×2700 | 4096×2304 |
10M | 3672×2754 | |
11M | 3840×2880 | |
12M | 4000×3000 | 4608×2592 |
12.5M | 4096×3072 | |
15M | 4800×3200 | 5120×2880 |
20M | 5120×3840 | |
30M | 6400×4800 |
显示模式代码对照表
序号 | 显示模式代码 | 水平象素×垂直象素 | 比例 |
1 | QQCIF | 88×72 | 11:9 |
2 | SUB-QCIF | 128×96 | 4:3 |
3 | QQVGA | 160×120 | 4:3 |
4 | QCIF | 176×144 | 11:9 |
5 | Sub-QVGA- | 208×176 | 13:11 |
6 | Sub-QVGA | 220×176 | 5:4 |
7 | Sub-QVGA+ | 240×176 | 15:11 |
8 | CGA | 320×200 | 16:10 |
9 | QVGA | 320×240 | 4:3 |
10 | CIF | 352×288 | 11:9 |
11 | nhd | 640×360 | 4:3 |
12 | WQVGA | 400×240 | 5:3 |
13 | WQVGA | 400×320 | 5:4 |
14 | WQVGA | 480×240 | 2:1 |
15 | WQVGA | 480×272 | 16:9 |
16 | HQVGA | 480×320 | 3:2 |
17 | VGA | 640×480 | 4:3 |
18 | EGA | 640×350 | 64:35 |
19 | VGA+ | 720×480 | 3:2 |
20 | PAL | 768×576 | 4:3 |
21 | WVGA | 800×480 | 5:3 |
22 | FWVGA | 854×480 |
|
23 | SVGA | 800×600 | 4:3 |
24 | DVGA | 960×640 | 3:2 |
25 | WSVGA | 1024×600 | 128:75 |
26 | XGA | 1024×768 | 4:3 |
27 | WXGA | 1280×768 | 15:9 |
28 |
| 1280×800 | 16:10 |
29 | UxGA/XVGA | 1280×960 | 4:3 |
30 | SXGA+ | 1280×1024 | 25:16 |
31 | SXGA+ | 1400×1050 | 4:3 |
32 | WXGA+ | 1440×900 | 16:10 |
33 | WSXGA | 1600×1024 | 25:16 |
34 |
| 1600×1050 | 32:21 |
35 | USVGA/UXGA/UGA | 1600×1200 | 4:3 |
36 | WSXGA+ | 1680×1050 | 16:10 |
37 | UXGA | 1900×1200 | 19:12 |
38 | WSUVGA+(WSUGA/HDTV) | 1920×1080 | 4:3 |
39 | WUXGA | 1920×1200 | 16:10 |
40 | SUVGA(QXGA) | 2048×1536 | 4:3 |
41 | UWXGA | 2560×1600 | 16:10 |
42 | USXGA | 2560×2048 | 5:4 |
43 | QUXGA | 3200×2400 | 4:3 |
44 | WQUXGA | 3840×2400 | 16:10 |
名词缩写解释
VGA:VideoGraphicsArray(视频图像分辨率);S:Super(超过),×:E×tended(扩展),U:Ultra(终极),第一个Q:Quarter(四分之一),最后一个Q:Quantum(量化) VGA:VideoGraphicsArray QVGA:QuarterVideoGraphicsArray QQVGA:QuarterQVGA Sub-QVGA:SubQuarterQVGA CIF:CommonIntermediateFormat QCIF:QuarterCommonIntermediateFormat QQCIF:QuarterQCIFSub-QCIF:SubQuarterQCIF 注: VGA:VideoGraphicsArray(视频图像分辨率);S:Super(超过),X:Extended(扩展),U:Ultra(终极),第一个Q:Quarter(四分之一),最后一个Q:Quantum(量化)
分辨率解析
分辨率是保证彩色显示器清晰度的重要前提。显示器的点距是高分辨率的基础之一,大屏幕彩色显示器的点距一般为0.28,0.26,0.25。高分辨率的另一方面是指显示器在水平和垂直显示方面能够达到的最大像素点,一般有320×240,640×480,1024×768,1280×1024等几种,好的大屏幕彩显通常能够达到1600×1280的分辨率。较高的分辨率不仅意味着较高的清晰度,也意味着在同样的显示区域内能够显示更多的内容。比如在640×480分辨率下只能显示一页的内容,在1600×1280分辨率下则能够同时显示两页。 分辨率是用于度量位图图像内数据量多少的一个参数。通常表示成每英寸像素(Pixelperinch,ppi)和每英寸点(Dotperinch,dpi)。包含的数据越多,图形文件的长度就越大,也能表现更丰富的细节。但更大的文件也需要耗用更多的计算机资源,更多的内存,更大的硬盘空间等等。在另一方面,假如图像包含的数据不够充分(图形分辨率较低),就会显得相当粗糙,特别是把图像放大为一个较大尺寸观看的时候。所以在图片创建期间,我们必须根据图像最终的用途决定正确的分辨率。这里的技巧是要首先保证图像包含足够多的数据,能满足最终输出的需要。同时也要适量,尽量少占用一些计算机的资源。 通常,“分辨率”被表示成每一个方向上的像素数量,比如640X480等。而在某些情况下,它也可以同时表示成“每英寸像素”(ppi)以及图形的长度和宽度。比如72ppi,和8X6英寸。
ppi和dpi经常都会出现混用现象。从技术角度说,“像素”(P)只存在于计算机显示领域,而“点”(d)只出现于打印或印刷领域。 分辨率和图像的像素有直接的关系,我们来算一算,一张分辨率为640x480的图片,那它的分辨率就达到了307,200像素,也就是我们常说的30万像素,而一张分辨率为1600x1200的图片,它的像素就是200万。这样,我们就知道,分辨率的两个数字表示的是图片在长和宽上占的点数的单位。一张数码图片的长宽比通常是4:3。LCD液晶显示器和传统的CRT显示器,分辨率都是重要的参数之一。传统CRT显示器所支持的分辨率较有弹性,而LCD的像素间距已经固定,所以支持的显示模式不像CRT那么多。LCD的最佳分辨率,也叫最大分辨率,在该分辨率下,液晶显示器才能显现最佳影像。
目前15英寸LCD的最佳分辨率为1024×768,17~19英寸的最佳分辨率通常为1280×1024,更大尺寸拥有更大的最佳分辨率。
LCD显示器呈现分辨率较低的显示模式时,有两种方式进行显示。第一种为居中显示:例如在XGA1024×768的屏幕上显示SVGA800×600的画面时,只有屏幕居中的800×600个像素被呈现出来,其它没有被呈现出来的像素则维持黑暗,目前该方法较少采用。另一种称为扩展显示:在显示低于最佳分辨率的画面时,各像素点通过差动算法扩充到相邻像素点显示,从而使整个画面被充满。这样也使画面失去原来的清晰度和真实的色彩。 由于现在相同尺寸的液晶显示器的最大分辨率通常是一致的,所以对于同尺寸的LCD的价格一般与分辨率基本没有关系。
WVGA:800*480 QVGA:320*240 VGA:640*480 HVGA:480*320 QVGA即"QuarterVGA"。顾名思义即VGA的四分之一尺寸,亦即在液晶屏幕(LCD)上输出的分辨率是240×320像素。QVGA支持屏幕旋转,可以开发出相应的程序,以显示旋转90°、180°、270°屏幕位置。由HandEra公司发布。多用于手持/移动设备。
需要说明的是有些媒体把QVGA屏幕当成与TFT和TFD等LCD材质相同的东西是错误的,QVGA屏幕的说法多见于日本的一些手机中,目前采用微软PocketPC操作系统的智能手机屏幕也大多是320×240像素的QVGA屏幕。
所谓QVGA液晶技术,就是在液晶屏幕上输出的分辨率是240×320的液晶输出方式。这个分辨率其实和屏幕本身的大小并没有关系。比如说,如果2.1英寸液晶显示屏幕可以显示240×320分辨率的图像,就叫做“QVGA2.1英寸液晶显示屏”;如果3.8英寸液晶显示屏幕可以显示240×320的图像,就叫做“QVGA3.8英寸液晶显示屏”,以上两种情况虽然具有相同的分辨率,但是由于尺寸的不同实际的视觉效果也不同,一般来说屏幕小的一个画面自然也会细腻一些。 HVGA即VGA(640*480)的一半,分辨率为(480*320),(3:2宽高比) 它是用于各种各样的PDA设备,首先是2002年的索尼CliePEG-NR70, WVGA数码产品屏幕材质的一种,VGA的另一种形式,比VGA分辨率高,别名:WideVGA,,其分辩率为800×480像素。是扩大了VGA(640×480)的分辨率。应用于PDA和手机等,因为很多网页的宽度都是800,所以WVGA的屏幕会更加适和于浏览网页,可以说是未来手持设备的分辨率的大趋势
VGA的英文全称是VideoGraphicArray,即显示绘图阵列。VGA支持在640X480的较高分辨率下同时显示16种色彩或256种灰度,同时在320X240分辨率下可以同时显示256种颜色。简单点说,VGA最大的特点就是支持640X480的分辨率,而一般的PPC只支持320X240的分辨率。这就意味着在同尺寸大小的液晶屏上,用户将会获得2倍于一般显示屏的精细度。其实用过PPC的人都会有这样的感觉,当你阅读一些文档的时候(尤其是看PowerPoint的时候),如果你想放大些看的时候字体就会很不清晰,但是这样的情况就不会发生在VGA显示屏上,看文本尚且如此,更何况其他对分辨率要求更高的视频程序呢?
VGA:全称是VideoGraphicsArray,相当于640×480像素;
SVGA:全称是SuperVideoGraphicsArray,相当于800×600像素;
XGA:全称是ExtendedGraphicsArray,相当于1024×768像素;
UVGA:全称是UltraVideoGraphicsArray,相当于1600×1200像素;
WXGA:全称是WideExtendedGraphicsArray,相当于1280×800(16:10)像素;其它以此类推。
QVGA可以解释成一种固定分辨率的英文缩写,QVGA即“QuarterVGA”顾名思义就是说VGA的4分之一尺寸,就是在液晶屏幕上输出的分辨率是240×320像素。
三 : JPEG图像格式详解
JPEG图像格式详解
JPEG 压缩简介
-------------
1. 色彩模型
JPEG 的图片使用的是 YCrCb 颜色模型, 而不是计算机上最常用的 RGB. 关于色 彩模型, 这里不多阐述. 只是说明, YCrCb 模型更适合图形压缩. 因为人眼对图片上 的亮度 Y 的变化远比色度 C 的变化敏感. 我们完全可以每个点保存一个 8bit 的亮 度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化. 所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节. 而现在仅需要 4+2=6 字节; 平 均每个点占 12bit. 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里 都是按 12bit 一个点来存放的, 我们简写为 YUV12.
[R G B] -> [Y Cb Cr] 转换
-------------------------
(R,G,B 都是 8bit unsigned)
| Y | | 0.299 0.587 0.114 | | R | | 0 | | Cb | = |- 0.1687 - 0.3313 0.5 | * | G | + |128| | Cr | | 0.5 - 0.4187 - 0.0813| | B | |128|
Y = 0.299*R + 0.587*G + 0.114*B (亮度)
Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128
Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128
[Y,Cb,Cr] -> [R,G,B] 转换
-------------------------
R = Y + 1.402 *(Cr-128)
G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128)
B = Y + 1.772 *(Cb-128)
一般, C 值 (包括 Cb Cr) 应该是一个有符号的数字, 但这里被处理过了, 方法 是加上了 128. JPEG 里的数据都是无符号 8bit 的.
2. DCT (离散余弦变换)
JPEG 里, 要对数据压缩, 先要做一次 DCT 变换. DCT 变换的原理, 涉及到数学 知识, 这里我们不必深究. 反正和傅立叶变换(学过高数的都知道) 是差不多了. 经过 这个变换, 就把图片里点和点间的规律呈现出来了, 更方便压缩.JPEG 里是对每 8x8
个点为一个单位处理的. 所以如果原始图片的长宽不是 8 的倍数, 都需要先补成 8 的倍数, 好一块块的处理. 另外, 记得刚才我说的 Cr Cb 都是 2x2 记录一次吗? 所 以大多数情况, 是要补成 16x16 的整数块.按从左到右, 从上到下的次序排列 (和我 们写字的次序一样). JPEG 里是对 Y Cr Cb 分别做 DCT 变换的. 这里进行 DCT 变换 的 Y, Cr, Cb 值的范围都是 -128~127. (Y 被减去 128)
JPEG 编码时使用的是 Forward DCT (FDCT) 解码时使用的 Inverse DCT (IDCT) 下面给出公式:
FDCT:
7 7 2*x+1 2*y+1
F(u,v) = alpha(u)*alpha(v)* sum sum f(x,y) * cos (------- *u*PI)* cos (------ *v*PI) x=0 y=0 16 16
u,v = 0,1,...,7
{ 1/sqrt(8) (u==0)
alpha(u) = {
{ 1/2 (u!=0)
IDCT:
7 7 2*x+1 2*y+1
f(x,y) = sum sum alpha(u)*alpha(v)*F(u,v)*cos (------- *u*PI)* cos (------ *v*PI) u=0 v=0 16 16
x,y=0,1...7
这个步骤很花时间, 另外有种 AA&N 优化算法, 大家可以去 inet 自己找一下. 在 Intel 主页上可以找到 AA&N IDCT 的 MMX 优化代码. ( Intel 主页上的代码,
输入数据为 12.4 的定点数, 输入矩阵需要转置 90 度)
3. 重排列 DCT 结果
DCT 将一个 8x8 的数组变换成另一个 8x8 的数组. 但是内存里所有数据都是线 形存放的, 如果我们一行行的存放这 64 个数字, 每行的结尾的点和下行开始的点就 没有什么关系, 所以 JPEG 规定按如下次序整理 64 个数字.
0, 1, 5, 6,14,15,27,28,
2, 4, 7,13,16,26,29,42,
3, 8,12,17,25,30,41,43,
9,11,18,24,31,40,44,53,
10,19,23,32,39,45,52,54,
20,22,33,38,46,51,55,60,
21,34,37,47,50,56,59,61,
35,36,48,49,57,58,62,63
这样数列里的相邻点在图片上也是相邻的了.
4. 量化
对于前面得到的 64 个空间频率振幅值, 我们将对它们作幅度分层量化操作.方 法就是分别除以量化表里对应值并四舍五入.
for (i = 0 ; i<=63; i++ )
vector[i] = (int) (vector[i] / quantization_table[i] + 0.5)
下面有张 JPEG 标准量化表. (按上面同样的弯曲次序排列)
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
这张表依据心理视觉阀制作, 对 8bit 的亮度和色度的图象的处理效果不错. 当然我们可以使用任意的量化表. 量化表是定义在 jpeg 的 DQT 标记后. 一般 为 Y 值定义一个, 为 C 值定义一个.
量化表是控制 JPEG 压缩比的关键. 这个步骤除掉了一些高频量, 损失了很高 细节. 但事实上人眼对高空间频率远没有低频敏感.所以处理后的视觉损失很小. 另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程. 大量的图象 信息被包含在低空间频率中. 经过量化处理后, 在高空间频率段, 将出现大量连续 的零.
注意, 量化后的数据有可能超过 2 byte 有符号整数的处理范围.
5. 0 RLE 编码
现在我们矢量中有许多连续的 0. 我们可以使用 RLE 来压缩掉这些 0. 这里我们 将跳过第一个矢量 (后面将解释为什么) 因为它的编码比较特别. 假设有一组矢量 (64 个的后 63 个) 是
57,45,0,0,0,0,23,0,-30,-16,0,0,1,0,0,0, 0 , 0 ,0 , 0,..,0
经过 RLE 压缩后就是
(0,57) ; (0,45) ; (4,23) ; (1,-30) ; (0,-16) ; (2,1) ; EOB
EOB 是一个结束标记, 表示后面都是 0 了. 实际上, 我们用 (0,0) 表示 EOB 但是, 如果这组数字不以 0 结束, 那么就不需要 EOB.
另外需要注意的是, 由于后面 huffman 编码的要求, 每组数字前一个表示 0 的 数量的必须是 4 bit, 就是说, 只能是 0~15, 所以, 如果有这么一组数字: 57, 十八个0, 3, 0, 0, 0, 0, 2, 三十三个0, 895, EOB
我们实际这样编码:
(0,57) ; (15,0) (2,3) ; (4,2) ; (15,0) (15,0) (1,895) , (0,0)
注意 (15,0) 表示了 16 个连续的 0.
6. huffman 编码
为了提高储存效率, JPEG 里并不直接保存数值, 而是将数值按位数分成 16 组:
数值 组 实际保存值
0 0 -
-1,1 1 0,1
-3,-2,2,3 2 00,01,10,11
-7,-6,-5,-4,4,5,6,7 3 000,001,010,011,100,101,110,111 -15,..,-8,8,..,15 4 0000,..,0111,1000,..,1111
-31,..,-16,16,..,31 5 00000,..,01111,10000,..,11111 -63,..,-32,32,..,63 6 .
-127,..,-64,64,..,127 7 .
-255,..,-128,128,..,255 8 .
-511,..,-256,256,..,511 9 .
-1023,..,-512,512,..,1023 10 .
-2047,..,-1024,1024,..,2047 11 .
-4095,..,-2048,2048,..,4095 12 .
-8191,..,-4096,4096,..,8191 13 .
-16383,..,-8192,8192,..,16383 14 .
-32767,..,-16384,16384,..,32767 15 .
还是来看前面的例子:
(0,57) ; (0,45) ; (4,23) ; (1,-30) ; (0,-8) ; (2,1) ; (0,0)
只处理每对数右边的那个:
57 是第 6 组的, 实际保存值为 111001 , 所以被编码为 (6,111001)
45 , 同样的操作, 编码为 (6,101101)
23 -> (5,10111)
-30 -> (5,00001)
-8 -> (4,0111)
1 -> (1,1)
前面的那串数字就变成了:
(0,6), 111001 ; (0,6), 101101 ; (4,5), 10111; (1,5), 00001; (0,4) , 0111 ; (2,1), 1 ; (0,0)
括号里的数值正好合成一个字节. 后面被编码的数字表示范围是 -32767..32767. 合成的字节里, 高 4 位是前续 0 的个数, 低 4 位描述了后面数字的位数.
继续刚才的例子, 如果 06 的 huffman 编码为 111000 ( 06 对应 111000 为查表所得. jpeg 文件里保存了压缩时所产生的 huffman 表, 将 0~255 这 256 个 8 bits 定长数字, 对应成 1~16 bits 的不定长数值. 出现频率高的数字小于 8bits, 频率低的大于8bits,
从而使整个的数据长度降低, 关于 huffman 压缩算法, 请查阅相关资料 )
69 = (4,5) --- 1111111110011001 ( 注: 69=4*16+5=0x45 ) 21 = (1,5) --- 11111110110
4 = (0,4) --- 1011
33 = (2,1) --- 11011
0 = EOB = (0,0) --- 1010
那么最后对于前面的例子表示的 63 个系数 (记得我们将第一个跳过了吗?) 按位流 写入 JPG 文件中就是这样的:
111000 111001 111000 101101 1111111110011001 10111 11111110110 00001 1011 0111 11011 1 1010
7. DC 的编码
-----------
记得刚才我们跳过了每组 64 个数据的第一个吧, DC 就是指的这个数字 (后面 63 个简称 AC) 代入前面的 FDCT 公式可以得到
c(0,0) 7 7
DC = F(0,0) = --------- * sum sum f(x,y) * cos 0 * cos 0 其中 c(0,0) = 1/2 4 x=0 y=0
1 7 7
= --- * sum sum f(x,y)
8 x=0 y=0
即一块图象样本的平均值. 就是说, 它包含了原始 8x8 图象块里的很多能量. (通常 会得到一个很大的数值)
JPEG 的作者指出连续块的 DC 率之间有很紧密的联系, 因此他们决定对 8x8 块的 DC 值的差别进行编码. (Y, Cb, Cr 分别有自己的 DC)
Diff = DC(i) - DC(i-1)
所以这一块的 DC(i) 就是: DC(i) = DC(i-1) + Diff
JPG 从 0 开始对 DC 编码, 所以 DC(0)=0. 然后再将当前 Diff 值加在上一个值上得 到当前值.
下面再来看看上面那个例子: (记住我们保存的 DC 是和上一块 DC 的差值 Diff)
例如上面例子中, Diff 是 -511, 就编码成
(9, 000000000)
如果 9 的 Huffman 编码是 1111110 (在 JPG 文件中, 一般有两个 Huffman 表, 一 个是 DC 用, 一个是 AC 用) 那么在 JPG 文件中, DC 的 2 进制表示为
1111110 000000000
它将放在 63 个 AC 的前面, 上面上个例子的最终 BIT 流如下:
1111110 000000000 111000 111001 111000 101101 1111111110011001 10111 11111110110 00001 1011 0111 11011 1 1010
解码过程简述
-------------
8. 一个数据单元 Y 的解码 (其余类同)
--------------------------------
在整个图片解码的开始, 你需要先初始化 DC 值为 0.
1) 先解码 DC:
a) 取得一个 Huffman 码 (使用 Huffman DC 表)
b) Huffman解码, 看看后面的数据位数 N
c) 取得 N 位, 计算 Diff 值
d) DC + = Diff
e) 写入 DC 值: " vector[0]=DC "
2) 解码 63 个 AC:
------- 循环处理每个 AC 直到 EOB 或者处理到 64 个 AC
a) 取得一个 Huffman 码 (使用 Huffman AC 表)
b) Huffman 解码, 得到 (前面 0 数量, 组号)
[记住: 如果是(0,0) 就是 EOB 了]
c) 取得 N 位(组号) 计算 AC
d) 写入相应数量的 0
e) 接下来写入 AC
-----------------
下一步的解码
------------
上一步我们得到了 64 个矢量. 下面我们还需要做一些解码工作:
1) 反量化 64 个矢量 : "for (i=0;i<=63;i++) vector[i]*=quant[i]" (注意防止溢出)
2) 重排列 64 个矢量到 8x8 的块中
3) 对 8x8 的块作 IDCT
对 8x8 块的 (Y,Cb,Cr) 重复上面的操作 [Huffman 解码, 步骤 1), 2), 3)]
4) 将所有的 8bit 数加上 128
5) 转换 YCbCr 到 RGB
9. JPG 文件(Byte 级)里怎样组织图片信息
-----------------------------------
注意 JPEG/JFIF 文件格式使用 Motorola 格式, 而不是 Intel 格式, 就是说, 如果 是一个字的话, 高字节在前, 低字节在后.
JPG 文件是由一个个段 (segments) 构成的. 每个段长度 <=65535. 每个段从一个标 记字开始. 标记字都是 0xff 打头的, 以非 0 字节和 0xFF 结束. 例如 'FFDA' , 'FFC4', 'FFC0'. 每个标记有它特定意义, 这是由第2字节指明的. 例如, SOS (Start Of Scan = 'FFDA') 指明了你应该开始解码. 另一个标记 DQT (Define Quantization Table = 0xFFDB) 就是说它后面有 64 字节的 quantization 表
在处理 JPG 文件时, 如果你碰到一个 0xFF, 而它后面的字节不是 0, 并且这个字节 没有意义. 那么你遇到的 0xFF 字节必须被忽略. (一些 JPG 里, 常用用 0xFF 做某 些填充用途) 如果你在做 huffman 编码时碰巧产生了一个 0xFF, 那么就用 0xFF 0x00 代替. 就是说在 jpeg 图形解码时碰到 FF00 就把它当作 FF 处理.
另外在 huffman 编码区域结束时, 碰到几个 bit 没有用的时候, 应该用 1 去填充. 然后后面跟 FF.
下面是几个重要的标记
--------------------
SOI = Start Of Image = 'FFD8'
这个标记只在文件开始出现一次
EOI = End Of Image = 'FFD9'
JPG 文件都以 FFD9 结束
RSTi = FFDi ( i = 0..7) [ RST0 = FFD0, RST7=FFD7]
= 复位标记
通常穿插在数据流里, 我想是担心 JPG 解码出问题吧(应该配合 DRI 使用). RST 将 Huffman 的解码数据流复位. DC 也重新从 0 开始计
(SOS --- RST0 --- RST1 -- RST2 --...
...-- RST6 --- RST7 -- RST0 --...)
-------
10. 标记
-------
下面是必须处理的标记
SOF0 = Start Of Frame 0 = FFC0
SOS = Start Of Scan = FFDA
APP0 = it's the marker used to identify a JPG file which uses the JFIF specification = FFE0
COM = Comment = FFFE
DNL = Define Number of Lines = FFDC
DRI = Define Restart Interval = FFDD
DQT = Define Quantization Table = FFDB
DHT = Define Huffman Table = FFC4
11. JPG 文件中 Haffman 表的储存
-----------------------------
JPEG 里定义了一张表来描述 Haffman 树. 定义在 DHT 标记后面. 注意: Haffman 代码的长度限制在 16bit 内.
一般一个 JPG 文件里会有 2 类 Haffman 表: 一个用于 DC 一个用于 AC (实际有 4 个表, 亮度的 DC,AC 两个, 色度的 DC,AC 两个)
这张表是这样保存的:
1) 16 字节:
第 i 字节表示了 i 位长的 Huffman 代码的个数 (i= 1 到 16)
2) 这表的长度 (字节数) = 这 16 个数字之和
现在你可以想象这张表怎么存放的吧? 对应字节就是对应 Haffman 代码等价数字. 我 不多解释, 这需要你先了解 Haffman 算法. 这里只举一个例子:
Haffman 表的表头是 0,2,3,1,1,1,0,1,0,0,0,0,0,0,0,0
就是说长度为 1 的代码没有
长度为 2 的代码为 00
01
长度为 3 的代码是 100
101
110
长度为 4 的代码是 1110
长度为 5 的代码是 11110
长度为 6 的代码是 111110
长度为 7 的代码没有 (如果有一个的话应该是 1111110)
长度为 8 的代码是 11111100
.....
后面都没有了.
如果表下面的数据是
45 57 29 17 23 25 34 28
就是说
45 = 00
57 = 01
29 = 100
17 = 101
23 = 110
等等...
如果你懂 Haffman 编码, 这些不难理解
12. 采样系数
-----------
下面讲解的都是真彩 JPG 的解码, 灰度 JPG 的解码很简单, 因为图形中只有亮度信 息. 而彩色图形由 (Y, Cr, Cb) 构成, 前面提到过, Y 通常是每点采样一次, 而 Cr, Cb 一般是 2x2 点采样一次, 当然也有的 JPG 是逐点采样, 或者每两点采样 (横向 两点, 纵向一点) 采样系数均被定义成对比最高采样系数的相对值.
一般情况 (即: Y 逐点采样, Cr Cb 每 2x2 点一次) 下: Y 有最高的采样率, 横向采 样系数HY=2 纵向采样系数 VY=2; Cb 的横向采样系数 HCb=1, 纵向采样系数 VCb=1; 同样 HCr=1, VCr=1
在 Jpeg 里, 8x8 个原始数据, 经过 RLE, Huffman 编码后的一串数据流称为一个 Data Unit (DU) JPG 里按 DU 为单位的编码次序如下:
1) for (counter_y=1;counter_y<=VY;counter_y++)
for (counter_x=1;counter_x<=HY;counter_x++)
{ 对 Y 的 Data Unit 编码 }
2) for (counter_y=1;counter_y<=VCb ;counter_y++)
for (counter_x=1;counter_x<=HCb;counter_x++)
{ 对 Cb 的 Data Unit 编码 }
3) for (counter_y=1;counter_y<=VCr;counter_y++)
for (counter_x=1;counter_x<=HCr;counter_x++)
{ 对 Cr 的 Data Unit 编码 }
按我上面的例子: (HY=2, VY=2 ; HCb=VCb =1, HCr,VCr=1) 就是这样一个次序 YDU,YDU,YDU,YDU,CbDU,CrDU
这些就描述了一块 16x16 的图形. 16x16 = (Hmax*8 x Vmax*8) 这里 Hmax=HY=2 Vmax=VY=2
一个 (Hmax*8,Vmax*8) 的块被称作 MCU (Minimun Coded Unix) 前面例子中一个 MCU = YDU,YDU,YDU,YDU,CbDU,CrDU
如果 HY =1, VY=1
HCb=1, VCb=1
HCr=1, VCr=1
这样 (Hmax=1,Vmax=1), MCU 只有 8x8 大, MCU = YDU,CbDU,CrDU
对于灰度 JPG, MCU 只有一个 DU (MCU = YDU)
JPG 文件里, 图象的每个组成部分的采样系数定义在 SOF0 (FFC0) 标记后
13. 简单说一下 JPG 文件的解码
-------------------------
解码程序先从 JPG 文件中读出采样系数, 这样就知道了 MCU 的大小, 算出整个图象 有几个 MCU. 解码程序再循环逐个对 MCU 解码, 一直到检查到 EOI 标记. 对于每个 MCU, 按正规的次序解出每个 DU, 然后组合, 转换成 (R,G,B) 就 OK 了
附:JPEG 文件格式
~~~~~~~~~~~~~~~~
- 文件头 (2 bytes): $ff, $d8 (SOI) (JPEG 文件标识)
- 任意数量的段 , 见后面
- 文件结束 (2 bytes): $ff, $d9 (EOI)
段的格式:
~~~~~~~~~
- header (4 bytes):
$ff 段标识
n 段的类型 (1 byte)
sh, sl 该段长度, 包括这两个字节, 但是不包括前面的 $ff 和 n.
注意: 长度不是 intel 次序, 而是 Motorola 的, 高字节在前, 低字节在后!
- 该段的内容, 最多 65533 字节
注意:
- 有一些无参数的段 (下面那些前面注明星号的)
这些段没有长度描述 (而且没有内容), 只有 $ff 和类型字节.
- 段之间无论有多少 $ff 都是合法的, 必须被忽略掉.
段的类型:
~~~~~~~~~
*TEM = $01 可以忽略掉
SOF0 = $c0 帧开始 (baseline JPEG), 细节附后 SOF1 = $c1 dito
SOF2 = $c2 通常不支持
SOF3 = $c3 通常不支持
SOF5 = $c5 通常不支持
SOF6 = $c6 通常不支持
SOF7 = $c7
SOF9 = $c9 arithmetic
SOF10 = $ca
SOF11 = $cb
SOF13 = $cd
SOF14 = $ce
SOF14 = $ce
SOF15 = $cf
DHT = $c4
JPG = $c8
DAC = $cc
*RST0 = $d0 RSTn
*RST1 = $d1
*RST2 = $d2
*RST3 = $d3
*RST4 = $d4
*RST5 = $d5
*RST6 = $d6
*RST7 = $d7
SOI = $d8
EOI = $d9
SOS = $da
DQT = $db
DNL = $dc
DRI = $dd
DHP = $de
EXP = $df
APP0 = $e0 JFIF APP0 segment marker ( APP15 = $ef 通常不支持 编码(Huffman 的一种扩展算法), 通常不支持通常不支持 通常不支持 通常不支持 通常不支持 通常不支持 通常不支持 定义 Huffman Table, 细节附后 未定义/保留 (引起解码错误) 定义 Arithmetic Table, 通常不支持 用于 resync, 通常被忽略 图片开始 图片结束 扫描行开始, 细节附后 定义 Quantization Table, 细节附后 通常不支持, 忽略 定义重新开始间隔, 细节附后 忽略 (跳过) 忽略 (跳过) 细节略) 忽略
JPG0 = $f0 忽略 (跳过)
JPG13 = $fd 忽略 (跳过)
COM = $fe 注释, 细节附后
其它的段类型都保留必须跳过
SOF0: Start Of Frame 0:
~~~~~~~~~~~~~~~~~~~~~~~
- $ff, $c0 (SOF0)
- 长度 (高字节, 低字节), 8+components*3
- 数据精度 (1 byte) 每个样本位数, 通常是 8 (大多数软件不支持 12 和 16) - 图片高度 (高字节, 低字节), 如果不支持 DNL 就必须 >0
- 图片宽度 (高字节, 低字节), 如果不支持 DNL 就必须 >0
- components 数量(1 byte), 灰度图是 1, YCbCr/YIQ 彩色图是 3, CMYK 彩色图 是 4
- 每个 component: 3 bytes
- component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q)
- 采样系数 (bit 0-3 vert., 4-7 hor.)
- quantization table 号
DRI: Define Restart Interval:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- $ff, $dd (DRI)
- 长度 (高字节, 低字节), 必须是 4
- MCU 块的单元中的重新开始间隔 (高字节, 低字节),
意思是说, 每 n 个 MCU 块就有一个 RSTn 标记.
第一个标记是 RST0, 然后是 RST1 等, RST7 后再从 RST0 重复
DQT: Define Quantization Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- $ff, $db (DQT)
- 长度 (高字节, 低字节)
- QT 信息 (1 byte):
bit 0..3: QT 号(0..3, 否则错误)
bit 4..7: QT 精度, 0 = 8 bit, 否则 16 bit
- n 字节的 QT, n = 64*(精度+1)
备注:
- 一个单独的 DQT 段可以包含多个 QT, 每个都有自己的信息字节
- 当精度=1 (16 bit), 每个字都是高位在前低位在后
DAC: Define Arithmetic Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
法律原因, 现在的软件不支持 arithmetic 编码.
不能生产使用 arithmetic 编码的 JPEG 文件
DHT: Define Huffman Table:
~~~~~~~~~~~~~~~~~~~~~~~~~~
- $ff, $c4 (DHT)
- 长度 (高字节, 低字节)
- HT 信息 (1 byte):
bit 0..3: HT 号 (0..3, 否则错误)
bit 4 : HT 类型, 0 = DC table, 1 = AC table
bit 5..7: 必须是 0
- 16 bytes: 长度是 1..16 代码的符号数. 这 16 个数的和应该 <=256 - n bytes: 一个包含了按递增次序代码长度排列的符号表
(n = 代码总数)
备注:
- 一个单独的 DHT 段可以包含多个 HT, 每个都有自己的信息字节
COM: 注释:
~~~~~~~~~~
- $ff, $fe (COM)
- 注释长度 (高字节, 低字节) = L+2
- 注释为长度为 L 的字符流
SOS: Start Of Scan:
~~~~~~~~~~~~~~~~~~~
- $ff, $da (SOS)
- 长度 (高字节, 低字节), 必须是 6+2*(扫描行内组件的数量)
- 扫描行内组件的数量 (1 byte), 必须 >= 1 , <=4 (否则是错的) 通常是 3 - 每个组件: 2 bytes
- component id (1 = Y, 2 = Cb, 3 = Cr, 4 = I, 5 = Q), 见 SOF0 - 使用的 Huffman 表:
- bit 0..3: AC table (0..3)
- bit 4..7: DC table (0..3)
- 忽略 3 bytes (???)
备注:
- 图片数据 (一个个扫描行) 紧接着 SOS 段.
本文标题:《饥荒》格罗姆雕像开全图方法详解饥荒格罗姆雕像怎么用-饥荒全boss属性打法及掉落详解61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1