词条 | CCD成像原理 |
释义 | 大家知道,世界万千的色彩,可以用三种来最终表述。 红色绿色和蓝色,这里我们一般用英文的首字母来表示 分别为R.G.B,计算机世界里其中一种颜色的表示方式也是这种 用一个8Bit的数据来表示其中一种颜色的灰度值 (十六进制的0xff等于十进制的255) 所以计算机里用0xff0000来表示一个单纯的红色 如果不是纯红色,那就是f2,34,f1三个眼色的灰度值来表示任何一种颜色 这种颜色表示法,可以算出来它可以表示2的24(8bit*3位来表示颜色)次方种颜色 这就是计算机的RGB颜色表示法。。。 回头看一下我们的相机,我们的相机CCD或者COMS也是用的这个原理来产生色彩。。 通过上面的原理,我们可以产出,相机是个色盲,他不会辨认颜色,只会辨认灰度。 一种颜色的灰度。。所以我们CCD或者CMOS上存在着很多感应颜色灰度值的点,也就是我们平时所说的CCD上的一个像素。。为了显示彩色图像。一个像素就不可能感知所有色彩的灰度,他只能感知RGB当中的一种。 人们就想出一个办法。那就是让一种像素点专门感知红色灰度,一种专门感知绿色,一种专门感知蓝色 这样,单个颜色的采样色阶就出来了。一个像素可以理解为一个采样精度为255阶的AD口,负责采样红色灰度值的得到当前光线中红色部分的灰度信息,其他颜色的同样 既然CCD上存在这三种采样不同颜色灰度的像素点。。那么就存在着他们在CCD上如何排布的问题。实际上他们是交叉排布的如下图 上图可以看到,红色和蓝色点是一个隔一个。而绿色点则占了一整行~也就是说RGB三种颜色的点数量比是1:2:1为何呢,为何感应绿色的点特别多呢? 这是因为人对绿色信息特别敏感,所以刻意加多了绿色灰度数据的收集,这样做的目的是更好的为以后差值放大做准备 CCD如何得到这些颜色的灰度信息讲完了,我们回到图像上来,当你拍摄图像完毕后,得到的就是这些小型AD采样灰度值,也就是我们所说的相机原始图像信息,可以说是数码相机的底片。。在专业机器上,我们把这种数据输出的文件叫做RAW格式文件~~他存的就是这些颜色的灰度信息,当然RAW文件是将数据压缩过的。比理论文件大小要小一些 下面实际计算一下。。假设我们买了一台1200W像素的相机 也就是说,你的CCD上有1200W个感光点。。他们R,G,B感光点比值是1:2:1 也就是说这个最终生成的RAW文件包含300W个R(红色信息)灰度值,600W个G,300W个B (原文有误,林峰注~) 他的文件大小(不压缩)应该是8bit*1200W=96000000bit=96000000/8/1024/1024约等于11.444Mbytes(一个灰度值用一个8bit的数来表示所以要*8) 就是这个1200W像素相机最后生成一个未压缩的RAW格式文件应该是11M左右。。 然后,我们将这个RAW文件转换成普通格式文件(TIFF),有条件的朋友可以自己试验一下,看看它有多大 我们这里计算一下。。1200W像素的TIFF文件应该是多大。。 一个颜色计算机用一个24位的数来表示,这个我前面讲解过 那么他的文件大小应该是12,000,000*8bit*3=34.3323Mbtyes 也就是说一个只有11M的相机产生的图像文件最后转换以后变成了一个34M的图像文件。。中间没有任何压缩操作。。 那么他多出来的那将2倍的数据是哪里来的? 其实答案很简单,多出来的那么多信息由相机里的或者电脑上的CPU算出来的,这里就涉及到一个插值算法的问题 你想想,相机上的1个像素只是一个8位的数来表示,而你最终看到的图像一个像素是一个24位的数来表示的 CPU就负责插值算出这不足的16bit位。他怎么算的呢~当然这种算法是各个厂商高度保密的因为这将最终影响到输出jpg文件的图像质量 但大致上是通过这个像素周边的颜色灰度值来计算出这个点的RGB值,比如你这个点记录的是R的灰度,那么插值的时候程序就会去找这个像素点周边G和B点的值,这样可以为他补足他的24位做贡献 这样也从根本上解释了为何数码相机会有紫边?就是因为有这样一个插值算法存在,你才会在数码相机上看到紫边,所以紫边是镜头这个导因和插值算法最终导致了紫边的出现,所以紫边的罪魁祸首是插值算法 所以紫边产生的原因可以总结为三点相机镜头的色差、CCD成像的局限性、照片放大倍数 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。