⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 专业tc--图形篇2.htm

📁 图形学的一些基础知识
💻 HTM
📖 第 1 页 / 共 2 页
字号:
Saturation:色彩的饱和度。0 %时为灰色,100 %时为纯色。<BR>&nbsp;&nbsp;&nbsp; * Brightness:亮度,0 
%为黑色,100 %时为白色。<BR>所谓的色相,指的是不同波长的光谱,例如红色和绿色便是属于不同的色相。<BR>&nbsp;&nbsp;&nbsp; 
色浓度则是指颜色的深浅,例如同样是红色,也会因为浓度的不同而分为深红或浅红。至于亮度则指的是颜色明暗的程度。<BR><BR>在灰度图象中,每一个<BR>象素都以8位元表示,因此<BR>可以表现出256种层次。如<BR>果将纯黑和纯白之间的层次<BR>等分成256个层次,就成了<BR>256灰度模式,可以用来模<BR>拟黑白照片的图像效果。<BR>所以每一个位元都是介<BR>于黑色与白色之间256种灰<BR>度的一种。灰度图象中只有灰度而没有彩色,所以除了与彩色有关的命令之外,几乎所有的功能都可以支持灰度图象。虽然黑白照片中的层次是连续的,同时层次远远超过了256个,但就一般应用美术的要求而言,256个层次已足以将黑白图像表现得相当完美了。<BR><BR>黑白图象是1位元的图象,也就是每个象素都由一个位元来表示,不是黑色就是白色。<BR>它所占用的内存最小,但所支持的功能也最受限制。例如黑白图象并不能够表现出渐变的色彩。当图象从灰度转换黑白时,用户可以在对话框中选择转换成为什么样子黑白图象。<BR>黑白模式无法表现层次复杂的图像,但可以制作黑白的线条图(Line 
Art),或是特殊的二层次高反差图像。<BR>注意,其他的彩色图象并不能直接转换成为黑白图象,必须先将它转换成为灰度图象,然后才能将其转换成为黑白图象。<BR><BR>在RGB或是CMYK等彩色图象中,每一个象素都可以表现出完整的颜色信息,不过所占用的内存也相当大。而经过统计,一张RGB图象当中所真正使用的色彩,往往多只有几百种甚至只有几十种。所以聪明的工程师就想到,如果以这些所使用到的颜色建立一张颜色表(Color 
Table),而每一个象素当中的数值则表示为这个颜色表中的某个位置,那么岂不就可以节约相当多的内存吗?举例来说,一个24位RGB的图象,转变成为256色(8位每象素)的索引图象之后,所占用的内存容量只有原来的三分之一,这就是所谓的索引色的由来。<BR>不过将图象转换成为索引色模式之后,所必须要注意的有两件事,第一是索引色图象所支持的功能比起RGB、CMYK图象来要少得多,因为索引色图象并不包含连续的色调变化所以许多的滤镜和渐变功能,多半不支持索引色图象。其次如果索引色所能表现的颜色数目,远少于原来图象中的颜色种类时,便会在原本平滑的图象表面,造成边缘效应,从以下的图象当中可以发现,随着位数的减少,边缘效应也愈加明显。所以除非特殊需要或是万不得已,否则我们还是用RGB、Lab或是CMYK模式来处理图象。<BR><BR>一般工业上的标准是以CMYK四种油墨来印刷彩色出版物。但我们身边的许多印刷物,例如名片,往往只需要用到两种油墨的颜色就可以表现出彩色效果。如果并不需要全彩色的印刷质量,这时我们便可以考虑利用双色印刷来节省成本。<BR>另一方面,虽然我们在图象当中每一种油墨都可以指定256种不同的灰度阶层,但是在实际的印刷机上,机器所能分辨的压力强弱却不超过50种。所以当我们要印出灰度要求较细密的图象时,也可以利用双色印刷,指定其中一种油墨为黑色,另一种则为较淡的灰色,以此印出灰度层次较密的出版物。<BR>除Duotone模式之外,用户也可以选择Monotone(单色)、Tritone(三色)以及Quadtone(四色)等不同的方式,以产生特殊的印刷设计效果。<BR><BR>在彩色显示设备所能显示的彩色数目有限的情况下,要显示由多种彩色的图像就需要使用其他技术,其中常用的一种就是彩色抖动。彩色抖动的工作原理与黑白抖动的工作原理相同。它们的基本思想是通过牺牲空间分辨率来换取灰度或彩色分辨率。假设用4个象素表示一个大象素,那么如果原来只有两种彩色,现在就有多种彩色。当然这里的多种彩色是一种“错觉”,因为其他彩色是两种原色的象素按一定规则排列而得到。<BR><BR>行程长度压缩<BR>原理是将一扫描行中的颜色值相同的相邻像素用一个计数值和那些像素的颜色值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。由RLE原理派生出许多具体行程压缩方法:<BR>1.PCX行程压缩方法:<BR>该算法实际上是位映射格式到压缩格式的转换算法,该算法对于连续出现1次的字节Ch,若Ch&gt;0xc0则压缩时在该字节前加上0xc1,否则直接输出Ch,对于连续出现N次的字节Ch,则压缩成0xc0+N,Ch这两个字节,因而N最大只能为ff-c0=3fh(十进制为63),当N大于63时,则需分多次压缩。<BR>2.BI_RLE8压缩方法:<BR>在WINDOWS 
3.0、3.1的位图文件中采用了这种压缩方法。该压缩方法编码也是以两个字节为基本单位。其中第一个字节规定了用第二个字节指定的颜色重复次数。如编码0504表示从当前位置开始连续显示5个颜色值为04的像素。当第二个字节为零时第二个字节有特殊含义:0表示行末;<BR>1表示图末;2转义后面2个字节,这两个字节分别表示一像素相对于当前位置的水平位移和垂直位移。这种压缩方法所能压缩的图像像素位数最大为8位(256色)图像。<BR>3.BI_RLE压缩方法:<BR>该方法也用于WINDOWS 
3.0/3.1位图文件中,它与BI_RLE8编码类似,唯一不同是:BI_RLE4的一个字节包含了两个像素的颜色,因此,它只能压缩的颜色数不超过16的图像。因而这种压缩应用范围有限。<BR>4.紧缩位压缩方法(Packbits):<BR>该方法是用于Apple公司的Macintosh机上的位图数据压缩方法,TIFF规范中使用了这种方法,这种压缩方法与BI_RLE8压缩方法相似,如1c1c1c1c2132325648压缩为:831c2181325648,显而易见,这种压缩方法最好情况是每连续128个字节相同,这128个字节可压缩为一个数值7f。这种方法还是非常有效的。<BR><BR>霍夫曼编码压缩也是一种常用的压缩方法。是1952年为文本文件建立的,其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。如:有一个原始数据序列, 
ABACCDAA则编码为A(0),B(10),C(110),D111),压缩后为010011011011100 。 
产生霍夫曼编码需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中的每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。<BR><BR>LZW压缩技术比其它大多数压缩技术都复杂,压缩效率也较高。其基本原理是把每一个第一次出现的字符串用一个数值来编码,在还原程序中再将这个数值还成原来的字符串,如用数值0x100代替字符串"abccddeee"这样每当出现该字符串时,都用0x100代替,起到了压缩的作用。至于0x100与字符串的对应关系则是在压缩过程中动态生成的,而且这种对应关系是隐含在压缩数据中,随着解压缩的进行这张编码表会从压缩数据中逐步得到恢复,后面的压缩数据再根据前面数据产生的对应关系产生更多的对应关系。直到压缩文件结束为止。LZW是可逆的,所有信息全部保留。<BR>算术压缩方法<BR>算术压缩与霍夫曼编码压缩方法类似,只不过它比霍夫曼编码更加有效。算术压缩适合于由相同的重复序列组成的文件,算术压缩接近压缩的理论极限。这种方法,是将不同的序列映像到0到1之间的区域内,该区域表示成可变精度(位数)的二进制小数,越不常见的数据要的精度越高(更多的位数),这种方法比较复杂,因而不太常用。<BR>JPEG(JointPhotographicExprertsGroup联合摄影专家组)JPEG标准与其它的标准不同,它定义了不兼容的编码方法,在它最常用的模式中,它是带失真的,一个从JPEG文件恢复出来的图像与原始图像总是不同的,但有损压缩重建后的图像常常比原始图像的效果更好。JPEG的另一个显著的特点是它的压缩比例相当高,原图像大小与压缩后的图像大小相比,比例可以从1 
%到80~90 %不等。这种方法效果也好,适合多媒体系统。<BR>这里我们来看一下这个压缩Gif文件的LZW算法:<BR>/* LZW.C<BR>void 
PackGif(FILE *fp,char far *ImageData,<BR>unsigned int width,unsigned int 
depth,int BitsPerPixel)<BR>{kk1}<BR>register int i,j;<BR>unsigned char 
ThisChar;<BR>int code;<BR>char far *bitmap = ImageData;<BR><BR>index = 
1;<BR>pixmask = 0xff;<BR>remcnt = 0;<BR>rem = 0;<BR>InitCnt = 0;<BR>First_Char = 
BitsPerPixel;<BR>CLEAR = 1 &lt;&lt; BitsPerPixel; . //256,16,or 4<BR>EOI = CLEAR 
+ 1;<BR>oldcode = -1;<BR>memset( CTfirst,0,4096 );<BR>memset( CTlink,0,8192 
);<BR>memset( CTnext,0,8192 );<BR><BR>PackInit( CLEAR );<BR>PutCode( fp,CLEAR 
);<BR><BR>for( i=0;i&lt;depth;i++ )<BR>{kk1}<BR>for( j=0;j&lt;width;j++ 
)<BR>{kk1}<BR>ThisChar = bitmap[j];<BR>code = LookupCT(oldcode,ThisChar);<BR>if( 
code != -1)<BR>oldcode = code;<BR>else{kk1}<BR>PutCode( fp,oldcode );<BR>oldcode 
= (int) ThisChar;<BR>}<BR>if (nextcode&gt;nextlim)<BR>{kk1} if 
(reqcnt==12)<BR>{kk1}<BR>PutCode( fp,oldcode );<BR>PutCode( fp,CLEAR ); /* 
Position */<BR>PackInit(CLEAR); }<BR>else {kk1} reqcnt ++;<BR>nextlim = nextlim 
&lt;&lt; 1;<BR>if (reqcnt==12) nextlim--;<BR>} } }<BR>bitmap = farptr( 
bitmap,(long)width ); }<BR>PutCode( fp,oldcode );<BR>PutCode( fp,EOI 
);<BR>Flush( fp );<BR>fputc( 0,fp );<BR>fputc( 0x3b,fp );<BR>return ;<BR>}<BR>
<P> 
<P align=center><FONT color=#00ff00><A 
href="http://tc2001.myrice.com/index.htm"><FONT 
size=5><B>回首页</B></FONT></A></FONT> <A 
href="http://tc2001.myrice.com/base3.htm#"><B><FONT color=#ff0000 
size=5>TOP</FONT></B></A> <A href="http://tc2001.myrice.com/base1.htm"><FONT 
size=5><B>上一页</B></FONT></A> <A href="http://tc2001.myrice.com/base3.htm"><FONT 
color=#00ff00 size=5><B>下一页</B></FONT></A> 
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</B></P></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -