论数码成像的色彩平衡
19256 321
[83 楼] johnyj [资深泡菜]
10-10-8 08:44
前面说了那么多,无非是从理论上证明,一旦白平衡数据错误,颜色的重现一定会发生偏差。这个理论,无论对X3芯片,还是对MSK芯片都是适用的。

不过,在实际成像中,MSK芯片即使因白平衡不准而发生偏色,也因为各通道互相之间分离度较高,导致图中的偏色是全局一致的,也就是所有颜色同时发生偏差,这就很容易在事后解RAW的时候用色盘或吸管一次性纠正。

而X3芯片则不同,因为各通道之间互相叠加的部分很多,如果白平衡数据不准,发生的偏色是复杂的不一致的,这就导致在解RAW的时候一旦选了错误的白平衡,用色盘或吸管都无法纠正偏色。(主要是目前SPP中不提供精调白平衡这个功能,否则我觉得还是很容易纠正偏色的)

MSK偏色和X3偏色不同,这种区别我已经能很好地理解,但需要另外找个图才能让看帖的人搞清楚,目前还没来得及画。

大量拍摄色版的实验证明,如果X3拍摄时的自定义白平衡是较好的,那事后同样可以依靠色盘或吸管一次性纠正偏色,精度可以达到非常高。
[82 楼] johnyj [资深泡菜]
10-9-27 19:48
多谢各位支持,继续!

上次提到,当红光入射导致芯片三通道输出为25,10,4毫伏时,经过正确的白平衡数据转换后,三通道输出变为31.25,10,4.44毫伏,然后这个值经过3X3矩阵转换后,对应为XYZ的0.7,0.3,0,从而正确地再现红色。

先仔细看一下之前用的白平衡数据:10/8,1,10/9,也就是1.25,1,1.11。这三个值的意思是,红色通道比绿色通道增强1.25倍,蓝色通道比绿色通道增强1.11倍。也就是说,白平衡数据的本质,是调整三个通道之间的比例关系。至于各个通道具体数值如何,总是可以通过对所有通道的信号同时放大或缩小来达到。

那么,如果白平衡数据有误,对整个成像过程会产生什么结果?

首先要明确一点,白平衡不影响芯片的三通道输出,630纳米红光依然使三通道产生25,10,4毫伏的输出。

值得注意的是,这三个值的大小并不重要,但这三个值的比例关系2.5:1:0.4却很重要,它决定了光谱感应曲线上唯一确定的位置。

而610纳米处的橙色光,三通道输出是33,17,7,三通道之比是1.94:1:0.41。经默认白平衡(1.25,1,1.11)转换之后,三通道之比就是2.425:1:0.46,经过3X3矩阵转换后,最终表现在XYZ三色曲线上就是1,0.5,0。

现在仍然是630纳米处的纯红色光在芯片成像,三通道输出之比是2.5:1:0.4,但此时使用的白平衡稍有偏差,不是1.25,1,1.11而是0.97,1,1.15。这样一来,三通道输出之比经白平衡调整后就成了2.425:1:0.46。这个值经过3X3矩阵转换以后,最终表现在XYZ三色曲线上就是1,0.5,0,也就是橙色。

于是,本来红色的光,用了错误的白平衡,显示出来就成了橙色。

[johnyj 编辑于 2010-09-27 19:51]
[81 楼] gg889r [资深泡菜]
10-9-27 08:33
http://egami.blog.so-net.ne.jp/2009-11-30

跟Sigma Foveon 好像有关
日文看不太懂……

http://egami.blog.so-net.ne.jp/2010-05-31

日本NHK的
3300万画素の3板式
这个东东应该也是天价
X3后1亿像素
[80 楼] gg889r [资深泡菜]
10-9-27 08:16
原文由 5265 在2010-09-27 00:26发表
3CCD比X3好是肯定的...當然 如果光谱感应不好也白搭..含有插值也白搭
3CCD三塊CCD裝配精度極高,特別是高像素....好像是納米等級...所以很麻煩的


是的 这种东西 听起来就非常的贵
高像素3CCD平民化 可能要慢慢等了 呵呵
[79 楼] 5265 [泡菜]
10-9-27 00:26
3CCD比X3好是肯定的...當然 如果光谱感应不好也白搭..含有插值也白搭
3CCD三塊CCD裝配精度極高,特別是高像素....好像是納米等級...所以很麻煩的
[78 楼] gg889r [资深泡菜]
10-9-27 00:16
http://www.keyence.com.tw/products/microscope/microscope/vhx6002/vhx6002.php

看到个神奇的东西
1800万像素3CCD 不是用在一般相机上面的
不知道是否 用3CCD偏色问题 是否可以更完美的解决

[gg889r 编辑于 2010-09-27 00:20]
[77 楼] laurel_lei [老坛泡菜]
10-9-26 23:35
很久没那么仔细的看帖子了,非常好的技术贴,期待楼主进一步更新!
[76 楼] luning [老坛泡菜]
10-9-26 11:17
原文由 johnyj 在2010-09-24 17:36发表

多谢支持,这玩意过于复杂,SPP的解图又包含了大量的处理过程,连我自己都不是100%的确认,但这个原理肯定是正确的。

目前讨论的都是背景知识,对用户来说,最关键的是如何通过自定义白平衡来获得精确的色彩,这个要继续分析。。。


自定义白平衡试用过希必爱的那个盘子,发现实际出图偏红,但从DP1S的液晶屏上看,可以说现场完全一样了
[75 楼] luning [老坛泡菜]
10-9-26 11:04
好贴!非常有技术,对于X3的爱用者从理论上理解很有帮助,多谢楼主
[74 楼] 5265 [泡菜]
10-9-26 01:22
原文由 johnyj 在2010-09-24 20:46发表
还是从最简单的例子看:某固定波长630纳米的红色激光照射在X3上的成像最终在显示器上被表达为出来。

但就是这么个看似简单的事情,也涉及到很复杂的过程!

首先,这时有个值得思考的问题:此时用什么白平衡?

因为红光不是反射光,而是直接在芯片上成像,所以必然和白平衡无关,芯片各通道的增益之比(也就是白平衡 ......


沒錯..
所以為什麽選擇不同的白平衡對X3偏色的修正有不同的效果.

不過,我認為要考慮一個光強與非線性問題.當然,我看不懂矩陣...明天試驗試試.

[5265 编辑于 2010-09-26 01:27]
[73 楼] johnyj [资深泡菜]
10-9-24 20:46
还是从最简单的例子看:某固定波长630纳米的红色激光照射在X3上的成像最终在显示器上被表达为出来。

但就是这么个看似简单的事情,也涉及到很复杂的过程!

首先,这时有个值得思考的问题:此时用什么白平衡?

因为红光不是反射光,而是直接在芯片上成像,所以必然和白平衡无关,芯片各通道的增益之比(也就是白平衡)只需要采用纯白光入射时(或者说实验室里默认)的白平衡即可。

那么,纯白光入射时的白平衡是多少?又是怎么得出的?

先考虑实验室条件下,假设三个通道在强度相同的40束不同波长的光叠加(也就是纯白光)照射下,各通道的输出分别是8,10,9。

从微积分的角度看,需要将这40束光各自产生的X3红绿蓝三通道输出分别通过3X3的矩阵转换为各自的XYZ值,然后再把这些XYZ值都加在一起。因为3X3矩阵变换是线性的,所以也可以先做加法再做转换,结果是一样的。

因此这三个输出8,10,9经过3X3的相机到XYZ色彩空间的转换后变成XYZ三刺激色值,因为是白光,此时三刺激色值的XYZ就应该是完全相同的。

但实际上,X3在白光下的三通道输出8,10,9,如果直接进行3X3矩阵转换,很可能得到的XYZ值仍然是不等的,比如说是80,100,90。也就是偏绿蓝的成像。

为纠正以上这种情况,以保证最终成像为白色,就需要进行白平衡,对三个通道的输出进行调整,使其相等。这个调整,可以对最终输出XYZ做,也可以在一开始对X3的红绿蓝通道信号做,实际上在SPP中这两个调整都有。对XYZ做,就类似于SPP中的色盘调整,而对X3的原始信号做,就相当于SPP中白平衡设置的选择。

显然最关键的白平衡是对X3原始信号的,一旦原始信号的白平衡错误,经过X3的那个大幅度变化的矩阵转换以后,微小的颜色偏差可以被放大到非常大,以至于在XYZ空间都无法再后期纠正了。

于是假设原始信号的增益也即白平衡设置变为10/8,1,10/9,三个原始信号经白平衡调整后就变为10,10,10。经过3X3矩阵转换后成为XYZ色彩空间的100,100,100;显示在屏幕上就是纯白色。

因此在这个例子中,10/8,1,10/9就是X3芯片的默认白平衡。

现在再回头看这幅光谱感应曲线和630纳米激光的成像:
此时红绿蓝三通道各自的输出为0.025,0.01,0.004,假设分别为25,10,4毫伏。那么经过默认白平衡调整后,就是31.25,10,4.44毫伏,然后这三个值经过3X3矩阵转换后,将对应着XYZ的630纳米处值:0.7,0.3,0。
[72 楼] johnyj [资深泡菜]
10-9-24 18:51
原文由 5265 在2010-09-24 18:07发表
正在想這些問題...
不過我認為X3的偏色沒那么嚴重...
至少白平衡有微小误差,秖要不是敏感顏色其實和MSK似乎差不多....


哈,我前面分析了那么多,就是为了从理论上证明X3那份技术文件里声明的:白平衡数据对X3来说至关重要。

这需要一个具体的例子来分析才行。
[71 楼] 5265 [泡菜]
10-9-24 18:07
正在想這些問題...
不過我認為X3的偏色沒那么嚴重...
至少白平衡有微小误差,秖要不是敏感顏色其實和MSK似乎差不多....
[70 楼] johnyj [资深泡菜]
10-9-24 17:36
原文由 laughskyshao 在2010-09-24 15:14发表
顶一下!就算SD1/Sd2/SD3了,真理永远是真理!


多谢支持,这玩意过于复杂,SPP的解图又包含了大量的处理过程,连我自己都不是100%的确认,但这个原理肯定是正确的。

目前讨论的都是背景知识,对用户来说,最关键的是如何通过自定义白平衡来获得精确的色彩,这个要继续分析。。。
[69 楼] laughskyshao [泡菜]
10-9-24 15:14
顶一下!就算SD1/Sd2/SD3了,真理永远是真理!
[68 楼] johnyj [资深泡菜]
10-9-23 20:38
忘了图
[67 楼] johnyj [资深泡菜]
10-9-23 20:35
继续有关白平衡!

日常生活中的数码成像,和实验室中有很大的不同。实验室里测试芯片的光谱感应曲线,是用的精确控制波长的单色光,而真实世界里物体的成像,通常都是反射光。

一般来说,红色物体反射的是光谱中红色波长的部分,蓝色物体反射的是光谱中蓝色波长的部分。但实际上,真实世界中物体的颜色,象单色光那样纯的颜色是很少的,99%以上的物体,都是同时反射光谱中数种不同波长的光。几种不同波长的反射光同时被人眼接收,最后的结果是叠加在一起的。对感光器材来说也是如此,红绿蓝三通道各自的光谱感应曲线的数个位置都会产生信号,这些信号最终要叠加在一起。

拿常见的紫色来说,日常生活中所见的紫色物体,几乎全都是靠同时反射红色和蓝色两种光而给人以紫色这个概念的。真正在光谱上紫色的部分,比如说紫外灯的紫色,是人眼很少有机会见到的。

这里就提到一个有趣的现象,仅靠一种感光细胞是无法分辨波长的,因为感光细胞产生的某一个强度的信号,可以是由数束波长相近的光所产生的较小刺激叠加在一起产生,也可以由一束光所产生的较大刺激单独产生。唯有三种感光细胞才能唯一确定任何一种光谱上的颜色。

[johnyj 编辑于 2010-09-23 20:42]
[66 楼] johnyj [资深泡菜]
10-9-22 21:58
再来一段X3技术文件的摘录

4.2.4 Color space conversion
The actual color space to be used will be determined by the application. If the image is to be directly displayed then a single sensor to sRGB space with gamma correction might be sufficient. If the image is to be used in a color management system, then sensor to XYZ conversion might be appropriate. Understanding the nature of various color spaces and the effect of white point selection is very important to producing images with the desired color fidelity. In many industrial and scientific applications, no consideration is given to color space issues because the narrow filters and the narrow display primaries restrict the range of accurate color representation sufficiently that simple white balance of the output signal is sufficient to realize the full potential of these systems.

4.2.4 色彩空间转换
在实用中,可以按实际需要选择不同的色彩空间。如果图像需要直接显示出来,那么一次从芯片向SRGB的带有GAMMA校正的色彩空间转换恐怕就够了。但如果图像要使用在某种色彩管理系统中,就需要从芯片向XYZ色彩空间转换。要想产生颜色准确的图片,需要对各种色彩空间的特点以及白平衡点选择的重要性有深刻的认识。在很多工业和科学应用中,色彩空间的问题都不受重视,因为波谱范围相对狭窄的滤色镜和单色光源已很大地限制了偏色的可能性,即使在后期对输出信号做简单的白平衡都足以实现准确的色彩重现。
-------------------------------------------

最后一句里所谓的输出信号,就是最终成像为JPG的SRGB红绿蓝值。对MSK芯片来说,即使对于JPG文件校色,大多数情况下也都能校正偏色,而对X3来说,校色是在RAW信号处理的最早期进行的,二者有很大不同。
[65 楼] 良晨玫景 [资深泡菜]
10-9-22 21:13
先收藏一下再拜读
[64 楼] johnyj [资深泡菜]
10-9-22 20:59
由此可以推测,如果以实验室中那种各种成分的光强完全一样的纯白光来自定义白平衡,在这个白平衡设置下拍摄的X3图片,白平衡将极为接近1:1:1,图片也将具有最精确的颜色再现能力。

但因为实际上自定义白平衡几乎不可能找到这样的纯白光,而是大多用自然光,而自然光就算是D55,各波段的光强也有微小差别。

这种微小差别,就将会对白平衡参数有影响,比如说5500K光下,白平衡就成了1.02:1:1.02。

对MSK芯片来说,因为转换矩阵所用的乘数因子都较小,即使白平衡有这种微小偏差,最终转换为XYZ时的误差也不会太大;但对X3来说,因为转换矩阵用的乘数因子非常大,所以一旦白平衡有微小误差,这个误差将会被极大的放大,导致最终图像的明显偏色。

这就是X3图像偏色的最主要原因。
[63 楼] johnyj [资深泡菜]
10-9-22 20:20
有个令人费解的地方:本来X3的光谱感应曲线经过3X3矩阵转化为XYZ三刺激色的输出。这是个一一对应的过程,根本不涉及白平衡。引入白平衡之后,修改了各通道的增益,肯定会导致各通道颜色重现的不准确。

我因此估计这个假想例是错误的,如果是在纯白光谱照明下,也就是实验室条件,应该X3的各通道都是不需要额外增益的。也就是说红绿蓝三通道更可能就是0.088、0.159和2.782。这样一来红绿蓝三通道的增益比就是1:1:1
[62 楼] johnyj [资深泡菜]
10-9-22 18:59
之前已谈到,人眼的红绿蓝三色细胞因分布密度不同,实际上在白光照明下三个通道的输出是有极大不同的,但人眼最终会认为是白色,因为大脑在处理这三通道信号的时候,分别给予不同的权重,使得最终红绿蓝三个通道的输出相同。

涉及到相机的成像过程,就要倒过来考虑:白色如果需要在显示器的红绿蓝三通道里重现,三通道的输出必须相同。利用反矩阵变换回去,当xyz三刺激色的值相同的时候,对应的X3红绿蓝三通道就需要有三个不同的增益,或者说比例。

以一个简单的假想例来看:

当拍摄白板时,最终显示出来也应该是白板,三刺激色xyz该相同,假设都是1。用这个矩阵可以反算出,对应的R是0.088,G是0.159,B是2.782

假设此时X3芯片的输出R是0.18,G是0.159,B是1.39,那么三个通道的白平衡增益就分别是0.5,1,2。当乘上白平衡增益以后,X3的芯片的最终RGB值就可以转换为xyz三刺激色的1,1,1输出,从而最终显示出白色。
[61 楼] johnyj [资深泡菜]
10-9-22 17:22
至此,还是没有涉及白平衡,但其他环节都是唯一确定的。

可以总结一下:

芯片的红绿蓝三通道输出通过一个3X3矩阵转换为最终显示器红绿蓝三色光源的输出,这个转换过程是唯一确定的。因为芯片的光谱感应特性不变,最终显示器的红绿蓝三色光源性能不变,转换矩阵也是不变的,所以光谱上任一位置的颜色,经成像后都能在显示器上重现与该颜色完全相同的颜色。
[60 楼] johnyj [资深泡菜]
10-9-22 16:47
很久以前就看到X3的这张流程处理图,因为不了解很多细节,所以看了也看不懂,现在经过前一周一步步的思考后,现在很多概念都清楚了,就能看懂这幅流程图了。

这张流程图是描述的机内处理X3的成像并显示在显示器上的全过程。

相机的红绿蓝三通道数据第一步是输入处理(这一步包含关键的白平衡处理),第二步是削减噪音,第三步是通过3X3矩阵转换到线性SRGB空间,第四步是调整GAMMA和默认的曲线,得到SRGB红绿蓝三通道值,第五步是再通过一个矩阵转换到YCbCr的明度和色度表示方式,因为该表示方式是视频界的标准,可以直接被显示设备接受。
[59 楼] johnyj [资深泡菜]
10-9-22 07:02
原文由 5265 在2010-09-22 01:25发表

是的...要用哪種RGB呢...肯定做了很多試驗...
然後同色異譜....


没错,在SPP中可以选择向ARGB还是SRGB空间转换,一般假设默认是向计算机行业默认的SRGB色彩空间转换。先贴下这张处理流程图,回头再分开来解释。
[58 楼] 5265 [泡菜]
10-9-22 01:25
原文由 johnyj 在2010-09-22 00:44发表
为进一步直观地理解xyz三刺激色曲线是如何测量出来的,可以看这个图:

图中标准观察者在右,同时观看中间分隔开的上下两块不同光源照射的白板。上侧的白板,用红绿蓝三色灯叠加照明,可分别调整每个灯的光强大小;下侧的白板,用波长可精确控制的单色光照明。当观察者认为上下的颜色完全一样时,就记录下与下面的波长相对 ......


是的...要用哪種RGB呢...肯定做了很多試驗...
然後同色異譜....
[57 楼] johnyj [资深泡菜]
10-9-22 01:18
现在再回到那个3X3的矩阵。3X3的矩阵转换,目的就是将芯片测量时红绿蓝三个通道各自的输出值,转化为最终显示时红绿蓝三通道各自的值。

举例来说,500纳米波长的蓝绿色光打到白板上,然后被反射到X3芯片上,那么该芯片所有的像素都会依据其光谱感应曲线产生对应的红绿蓝三通道值,而这三通道值记录到RAW文件里。假设红通道是0.16,绿通道是0.64,蓝通道是0.66。这三个通道的输出经过3X3矩阵转换后,就成为最终成像时所需要混合的红绿蓝三色比例,根据xyz三刺激色曲线查知,红通道此时应该为0,而绿通道和蓝通道相同,都是0.3。

当然,xyz色彩空间是描述人眼可见的全部色域,但实际应用中计算机上用的最多的是SRGB色域,所以又需要另一个3X3的矩阵来将xyz三色值转换为SRGB的红绿蓝三色值,但这个步骤对偏色影响很小,最多导致一些色彩丢失,不需要在这里讨论。
[56 楼] 5265 [泡菜]
10-9-22 01:12
原文由 johnyj 在2010-09-22 00:30发表
在进一步讨论之前,还有很多别的准备工作要做。。。

成像的过程包括采集信息和回放信息两步,到目前为止,分析的都是与采集信息相关的步骤,假设芯片已做到很完美,可凭借三个通道的输出准确判断是何种波长的光,那么该如何把这个颜色准确地重现给人眼观看?

这就回到之前的CIE的xyz三刺激色曲线,这是1931年制订的国 ......


唔....我就想找這圖....Thanks~~
[55 楼] johnyj [资深泡菜]
10-9-22 00:44
为进一步直观地理解xyz三刺激色曲线是如何测量出来的,可以看这个图:

图中标准观察者在右,同时观看中间分隔开的上下两块不同光源照射的白板。上侧的白板,用红绿蓝三色灯叠加照明,可分别调整每个灯的光强大小;下侧的白板,用波长可精确控制的单色光照明。当观察者认为上下的颜色完全一样时,就记录下与下面的波长相对应的上面的红绿蓝三通道各自的增益,对可见光范围内所有波长的光分别进行测试,最终就得到xyz三刺激色曲线,对曲线横轴上任何一个波长值,都可以唯一确定红绿蓝三个值。

具体深究起来有很多细节问题,比如说红绿※※的波长到底是哪种红绿蓝,需要精确到什么程度,等等,但即使有一定误差范围,也不会影响到这种色彩重现的原理。
[54 楼] johnyj [资深泡菜]
10-9-22 00:30
在进一步讨论之前,还有很多别的准备工作要做。。。

成像的过程包括采集信息和回放信息两步,到目前为止,分析的都是与采集信息相关的步骤,假设芯片已做到很完美,可凭借三个通道的输出准确判断是何种波长的光,那么该如何把这个颜色准确地重现给人眼观看?

这就回到之前的CIE的xyz三刺激色曲线,这是1931年制订的国际标准,如图。有人发现没,这个曲线和人眼的光谱感应曲线有很大不同,比如说X刺激色曲线在蓝色的区域有个突起,这是为什么???

其实,xyz三刺激色曲线和光谱感应曲线毫无任何关系,其作用是描述用红绿蓝三原色叠加在一起以重现光谱上某种颜色的红绿蓝三原色各成分之比。也就是说,光谱感应曲线是描述颜色采集,而xyz三刺激色曲线是描述颜色的再现。