`

谈论 图形图象--色调,饱和度,亮度

 
阅读更多

谈论 图形图象--色调,饱和度,亮度

5/18/2009 11:56:46 PM

http://blog.sina.com.cn/s/blog_49fb2fea010007qr.html

引用

图形图象--色调,饱和度,亮度

图形图像
一.光和颜色
世界是五彩缤纷的,红橙黄绿青蓝紫,各种各样的颜色印入我们眼帘。每个物体都有每个物体的色彩,要想将一幅图像转换成计算机的二进制码,我们首先要对光和颜色加以了解。
1.光的本质
学完高中物理的人知道,光的本质是电磁波。通常意义的光是指可见光,它的电磁波频率在3.84*10^14-7.89*10^14Hz之间,相应的在真空中的波长为780-380nm之间。而由高中物理还知,光具有超出人们经验想像的波粒二相性,光既是一种连续的波,又是一种间断的粒子,这确实大大超出了人们的想像。你不可不惊奇于科学家们的能力和勇气,他们的研究内容往往是与惯常的常识相违背,让初见到他成果的人,无论如何也不相信他在说真话。但终究真理不是假的,慢慢地人们认识到了它的正确性,但由此一些科学家生前没被认可,活在抑郁当中,而等到他们死后却大受追捧。
话说回来光的认识过程绝对不是一个简单的过程,从牛顿到爱因斯坦,其间多少大科学家为之皱眉头。好像我偏离了主题,是的,我要讲的是多媒体技术中的图形图像部分,不应该去讲物理史。好了光的本质就是这样。
2.颜色
这很奇怪,光既然是电磁波,和收音机的广播,本质上没有区别,而我们却看到了不同颜色的光。这涉及了一个问题,颜色是怎么回事。
生理学研究表明,人的视网膜上有两类视觉细胞:一类是对微弱光敏感的杆状体细胞,另一类是对红色、绿色和蓝色敏感的三种锥体细胞。从这个意义上来说,颜色只存在于人的眼睛和大脑里,对于客观的光来说,它是没有颜色的,它只是不同波长的电磁波。人能看到五彩缤纷的色彩,看来那是人的天赋。光的波长与对应的人视觉的色彩列举如下
红色-700nm 橙色-620nm 黄色-580nm 绿色-546nm 青色-480nm 蓝色-436nm 紫色-380nm
当然人们看到的自然界的光,大多不是单一波长的光,而是由不同波长的光混合而成。通常人们对颜色的感知用色调、饱合度和亮度来度量。
(1)色调
色调表示光的颜色,它取决于光的波长。物体发射或反射光,光波进到人们的眼睛里,由视觉系统综合得到颜色,不同的波长对应不同的颜色,而这就是色调。
(2)饱合度
饱合度也称纯度或彩度,它是指彩色的深浅或鲜艳程度,通常指彩色中白光含量的多少。对于同一色调的彩色光,饱合度越深,颜色越纯。比如当红色加进白光后,由于红色被冲淡成粉红色。饱合度的增减还会影响到颜色的亮度,由于在红色中加入了白光,所以颜色更亮了。
所以,在某色调的彩色光中掺入别的彩色光,会引起色调的变化,掺入白光引起饱合度的变化。色调与饱合度合起来统称色度,它表示颜色的类别与深浅程度。
(3)亮度
假设把一个彩色体放在室外,你在晴朗碧日里看和在暗晦阴天里看会有两个感觉,这两个感觉的差别就是亮度的差别。亮度就是表示某种颜色在人视觉上引起的明暗程度它直接与光的强度有关。

在这一部分里还有一个重要的概念,它不属于光和颜色范畴,但它与图像在显示器上显怎样示出来的有很大关系,属于图形图像基础范畴,因此就把它放在这一部分里。
色彩模式
我们是怎样让彩色图像在显示器或电视机上显示的呢?我想,说实话,这个问题应该在我们每个人小时候都问过,这确实是一个诱人并有难度的问题。当然在这里我也不可能解决,那是一个涉及电子学、物理学的问题。我在这里讲的是这个问题的一个层面,那就是色彩模式。
色彩模式是指在计算机上显示或打印图像时表示颜色的数字方法。计算机显示器采用RGB模式,彩色电视系统采用YUV/YIQ模式,另外还有其它一些色彩模式的表示方法。
(1)RGB模式
计算机显示器使用的是阴极射线管(Cathode Ray Tube,CRT)。CRT使用3个电子枪分别产生红色(Red)、绿色(Green)、蓝色(Blue)3种波长的光,并以各种不同的相对强度综合起来产生颜色。从理论上讲,任何一种颜色都可以由红绿蓝三色按一定比例混合而成。当这三种基本颜色以等量相加时,如果这三种颜色的光强都很大,那么混合而成的就是白色,如果光强比较小,那么混合出来的就是灰色,显然没有一种光发出,就是黑色。
现在使用的彩色电视机和计算机显示器都是用这三种基本颜色混合来产生各种颜色的。我们可以推想扫描仪将彩色图像输入到计算机就是颜色显示的一个逆过程,将每一点的颜色分解成红绿蓝三种基本颜色,每一种颜色数据代表它的强度,当这三种基本颜色的数据在计算机上又重新混合时,就显示出了原来的颜色。
(2)CMYK模式
CMY模式使用的是青色(Cyan)、品红(Magent)、黄色(Yellow)这三种基本颜混合来产生彩色。它与红绿蓝不同的是,这三种等量混合时产生的是黑色,也就是正好与红绿蓝三基色相反。这种模式是在打印时用的,考虑到颜料的反光显色与显示器的发光显色截然不同,因此在打印时CMY色彩模式更方便。由于在实际上同量的CMY混合并不能产生完备的黑色或灰色,因此在印刷时常加一种真正的黑(Black),这样CMY模式又称为CMYK模式。
(3)YUV/YIQ模式
彩色电视机接收的是模拟信号,它使用的是YUV模式或YIQ模式来表示色彩图像。在PAL制式中使用YUV模式,其中Y表示亮度,U、V表示色度即构成色彩的两个分量。在NTSC制式中使用YIQ模式,其中Y表示亮度,I、Q是色度。
YUV模式的优点是亮度信号和色度信号是相互独立的,可以对亮度与色度分别进行编码。如果只用亮度信号来表示图像,那么图像就是没有色彩的灰阶图像,因此用黑白电视机完全可以接收彩色信号。YIQ模式与YUV模式原理相同,只是在表示彩色的方法上有区别。另外中国使用PAL制式,美国使用NTSC制式。
那么YUV中的色度信号U和V是怎么来的和怎么表示色度的呢?这不是一个浅显的问题,这又涉及到了彩色电视信号调制方法问题,一时不能说的明白。由于现在所有的显示器都采用RGB值来驱动,所以不管是用YUV模式还是用YIQ模式来表示彩色图像,都要求在显示每个像素之前,把彩色分量转化成RGB值。我们不管Y、U、V得出来的过程是怎样的,我把结果写出来,让大家稍微有些眉目。现在是我们已经知道了RGB的值,我们要做的是从中得出YUV或YIQ的值。
RGB和YUV的对应关系可用下面方程表示:
Y=0.299R+0.587G+0.114B
U=0.147R-0.289G+0.436B
V=0.615R-0.515G-0.100B
RGB和YIQ的对应关系如下:
Y=0.299R+0.587G+0.114B
I=0.596R-0.275G-0.321B
Q=0.212R-0.523G+0.311B
下面说一下图形与图像的区别。我们知道计算机绘制的图片有两种形式,即图形和图像,它们是构成动画或视频的基础。
1.图形
图形又称矢量图形、几何图形,它是用一组计算机指令来描述的,这些指令给出构成该画面的所有直线、曲线、矩形、椭圆等的形状、位置、颜色等各种属性和参数。这种方法实际上是用数学方法来表示图形,然后变成许许多多的表达式,再编制程序,用计算机语言来表达。在我们看起来简单的图形里面蕴含着数学与编程学。
2.图像
图像又称点阵图像,计算机记录图像的方式与图形截然不同,它是将图像离散成一个个的点,然后记录下每个点的信息,所以图像是一个个的像素组成的。至于具体的计算机表示图像的过程在下面的'图像的数字化'里面讲。

二.图像的数字化
和上篇声音的数字化类似,图像的数字化也经采样、量化、编码三步。
采样就是把一幅图像分成m*n个点。这相当于用一张有m*n个格子的网把一幅平面图像盖起来,把这张图像分成了m*n个点。这m和n值的大小就是图像分辨率。
经过采样计算机记录下了一个个点的位置,下面是量化,来记录每个点的颜色。怎样记录颜色呢?我们把连续变化的颜色分成一定的份数,例如65536份,每份代表一种颜色,这样我们就将颜色作以量化,能记录65536种颜色。
到这里我们可以看出,决定数字化后图像质量的两个主要参数是分辨率和颜色深度。一张固定大小的图像,分辨率越高、颜色深度越大,数字化后的图像越自然越接进真实的图像,当然这样也带来了数据量的激增。例如一张640*4、0的真彩色(24位,16777216色)图像,他未经压缩的原始数据量为:640*480*二4/8B=900KB。
当然这些原始数据是需要经压缩编码后,才保存在计算机里的,这就需图像数字化的第三部分--压缩编码。还是和上篇文章声音一样,由于压缩编码是高等信息学知识,比较难,所以单独放在一部分里。

三.图像的压缩编码
1.图像压缩编码方法概述
图像压缩编码的发展
为了让读者清晰的了解科学的发展概况,我专门写了这部分的压缩编码间要发展史。
第一代图像编码技术是Shannon于1948年在他的信息学经典论文"通信的数学原理"中首次提出的,与此同时提出的还有信息率失真函数概念。1959年他又进一步确立了码率失真理论,从而奠定了信息编码的理论基础。此后,图像压缩编码理论和方法都有很大发展,主要的编码方法有预测编码、变换编码和统计编码,也称为三大经典编码方法。
第二代图像编码技术是昆特等人于1985年提出的,他们认为图像编码不局限于信息论的框架,要充分利用人的视觉、生理、心理和图像信源的各种特征,才能获得较高的压缩比。这类编码技术的代表性方法有子带图像编码。
第三代图像编码技术是指标准化的压缩编码技术。图像编码的研究内容是图像数据压缩,其主要应用领域是图像通信和图像信存储。当需要对所传输或存储的图像信息进行高比特率压缩时,必需采取复杂的图像编码技术。但是如果没有一个共同的标准,不同系统之间不能兼容,各系统之间的联系将十分困难。因此近年来国际标准化组织(ISO)、国际电工委员会(IEC)以及国际电信联盟电信标准部(ITU-T)已经制定了一系列静止图像和运动图像编码的国际标准,如JPEG标准、MPEGH标准和H.261标准。由于这些国际标准的出现,图像编码尤其是视频图像压缩技术得到了飞速发展。

图像编码技术总的来说就是利用图像数据固有的冗余性和相干性,将一个大的图像数据转换程较小的同性质的文件。两个文件的大小之比(压缩比)确定了压缩的程度。以压缩后的文件能是否准确恢复原文件为界,将图像压缩编码技术分为无失真编码技术和有失真编码技术。

此系列文章的初衷是让没有接受过多媒体相关教育的广大读者,了解关于多媒体的一些内部知识。因此我尽量把能容易理解的让大家理解,而实在牵涉到高等知识的,我只能以宏观描述或写个引子来让大家对这些高等的知识有个了解和印像。而下面这一小块的压缩编码内容就是这样,涉及高等和专业,不能一下子讲的明白,于是我就用标题的形式将内容勾画出来,大家有个认知就可。
2.编码方法
(一)无失真编码方法
(1)霍夫曼编码
(2)行程编码
(3)算术编码
(二)有失真编码方法
(1)预测编码
(2)变换编码
(3)矢量量化编码
(4)子带图像编码
(5)小波变换编码
(6)分形图像编码
看我写这些标题简单,然它们每个都是相当复杂和高等的知识,是几代科学家的成果。如果你想献身科学事业,那么现在就做准备,尝试一下每天都埋头在技术科学文章中,或许你真是一位科学的料。
3.压缩标准和图像格式
前文已经提到过,为了能让不同的系统之间兼容,需要统一的标准。国际上的组织成立了联合图像专家组(Joint Photographic Experts Group,JPEG),该小组从探讨图像压缩的工业标准和学术意义两个方面入手,着重研究静止图像的压缩技术。该小组于1991年提出草案,并经国际组织批准,就是JPEG高质量静止图像压缩编码标准,简称JPEG标准。
图像格式
(1)JPEG格式
即那个专家组的标准。该格式的特点是,质量高,体积小,略失真。
(2)BMP格式
BMP(Bitmap)是Microsoft公司为其Windows操作系统设置的标准图像文件格式。一句话概括特点是,鲜艳、细腻,但尺寸大。
3.GIF格式
GIF(Graphics Interchange Format,图像互变格式)是由CompuServe公司开发的图像文件格式,它主要是用来交换图片的,为网络传输和BBS用户使用图像文件提供方便。目前大多数图像软件都支持GIF格式,它特别适合于动画制作、网页制作以及演示文稿等领域。GIF有两个版本,GIF89a(一个文件存储多个图像)和GIF97a(一个文件存储一个图像)。一句话概括,体积小,有小动画效果。
4.TIFF格式
TIFF(Tag Image File Format)是一种通用的位映射图像文件格式。一句话说明,用于扫描仪、OCR系统。

图形图像部分到此结束,欢迎大家继续阅读系列的其他文章,让你获得知识是我最大的初衷。

谢谢你的阅读!

色调,饱和度,亮度 转为 RGB

2009-05-12 14:35

// Converts HSV to RGB
//-------------------------------------------------------------------------------

H: Hue - 色调(如红,蓝,黄,绿...)
S: Saturation - 饱和度
V: Value - 亮度


void hsv_to_rgb (unsigned char h, unsigned char s, unsigned char v, RGB * out)
{
unsigned char r=0,g=0,b=0, i, f;
unsigned int p, q, t;

if( s == 0 ) {
r = g = b = v;
}
else
{ i=h/43;
f=h%43;
p = (v * (255 - s))/256;
q = (v * ((10710 - (s * f))/42))/256;
t = (v * ((10710 - (s * (42 - f)))/42))/256;

switch( i )
{ case 0:
r = v; g = t; b = p; break;
case 1:
r = q; g = v; b = p; break;
case 2:
r = p; g = v; b = t; break;
case 3:
r = p; g = q; b = v; break;
case 4:
r = t; g = p; b = v; break;
case 5:
r = v; g = p; b = q; break;
}
}
out->r=r; out->g=g; out->b=b;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics