目录1、Sensor2、算法的输入2.1 RAW2.2 YUV3、BLC4、AWB4.1 灰度世界法4.2 完全反射法白块法4.3 白点-色温标定法5、去噪5.1 泊松噪声5.1.1 光子噪声5.1.2 热噪声5.2 高斯噪声5.2.1 读出噪声5.2.2 ADC噪声5.3 噪声模型5.3.1 信号相关的噪声5.3.2 信号无关的噪声5.4 噪声标定6、超分7、demosaic7.1 最近邻插值7.2 ‌双线性插值8、HDR8.1 光圈8.2 快门8.3 ISO8.4 EV8.5 多帧HDR8.6 单帧HDR8.6.1 BME-HDRBinning Multiplexed Exposure8.6.2 SME-HDRSpatially Multiplexed Exposure8.6.3 QBC-HDRQuad Bayer Coding HDR8.6.4 双增益输出Dual Gain OutputDGO9、配准算法9.1 全局配准9.1.1 关键点检测9.1.2 特征匹配9.1.3 H矩阵求解9.2 局部配准10、ToneMapping10.1 GTM10.2 LTM11、LSC11.1 Vignetting11.2 Chroma shading12、CCM1、Sensor摄像头用来成像的感光元件叫做Image Sensor目前广泛使用的两种分别是CCD和CMOS。单反使用全局快门 (global shutter)的CCD器件手机常用的是卷帘曝光rolling shutter的CMOS器件。如上图所示全局快门的特点是sensor 上所有像素是在同一瞬间全部开始曝光的因此sensor 采集的是物体在同一时间点的画面。卷帘曝光的最显著特点是每一行像素开始曝光的时间点是不同的是与像素位置有关的的函数。当画面中存在运动的物体时物体在曝光过程中空间位置在不断变化画面就发生变形物体速度越快变形就越严重。Sensor成像的过程如下图所示 首先外界光照射像素阵列发生光电效应在像素单元内产生相应的电荷。行选择逻辑单元根据需要选通相应的行像素单元。行像素单元内的图像信号通过各自所在列的信号总线传输到对应的模拟信号处理单元以及A/D转换器转换成数字图像信号输出。其中的行选择逻辑单元可以对像素阵列逐行扫描也可隔行扫描。行选择逻辑单元与列选择逻辑单元配合使用可以实现图像的窗口提取功能。模拟信号处理单元的主要功能是对信号进行放大处理并且提高信噪比。A/D转换器是把模拟信号转换为数字信号。总结来讲就是光照射像素阵列发生光电效应感光器件产生相应的电荷然后按照行进行曝光输出对应行的信号接着模拟信号处理单元对信号进行放大最后模数转换将模拟信号转换为数字信号。2、算法的输入Sensor数字信号的常见输出形式有Raw和YUV等。RAW和YUV是两种常见的图像数据输出格式主要区别在于数据处理阶段和应用场景。2.1 RAWRAW是传感器直接输出的原始数据每个像素仅记录单通道R/G/B亮度需通过Bayer插值还原为RGB图像保留了更多的细节。优点是保留了完整信息后期空间大可以保留很多的暗部和亮度细节适合后期处理如调整白平衡、曝光等缺点通常为12位或14位数据所需的存储空间大而且需软件处理才能显示2.2 YUVYUV由亮度Y和色度U/V组成是一种处理后的中间格式有轻微的压缩但是可以直接显示。3、BLC黑电平Black LevelBL也常被称为Optical Black或OB是图像传感器在无光照条件下产生的暗电流值用于校正图像暗部细节。这个电平定义了图像数据为0时的信号状态类似于我们在称量物品前进行的归零处理Sensor在无外部光线照射时由于自身暗电流的存在会有一定的输出电压。暗电流跟曝光时间和gain都有关系不同的位置也是不一样的。因此在gain增大电路的增益增大暗电流也会增强因此很多ISP会选择在不同gain下减去不同的BL的值。Sensor的信号输出时有一个AD转换的过程但是实际AD芯片模数转换芯片的精度可能无法将电压值很小的一部分转换出来因此sensor厂家一般会在AD的输入之前加上一个固定的偏移量以8bit数据为例使输出的pixel value在5非固定~255之间目的是为了让暗部的细节完全保留当然同时也会损失一些亮部细节由于对于图像来说我们的关注度更倾向于暗部区域ISP后面会有很多增益模块LSC、AWB、Gamma等因此亮区的一点点损失是可以接受的。‌ ISP图像信号处理器中的BLC黑电平校正通过减去OB值和基底Pedestal优化图像质量‌。RAW sensor input - OB pedestal基底Sensor的感光区域可以分为有效像素区和有效OB区。这两个部分最大的区别在于有效像素区是可以正常曝光的而OB区在工艺上让它不能接受光子最简单的想法就是在感光表明涂一层黑色的不感光物质这样就能通过OB区无光照是的值来校正有效像素去的值。最简单的操作就是对OB去的像素值去平均然后每个像素值减去这个值完成校正。现在的主流cmos sensor都是自己把black level已经处理完了。在isp部分减掉的其实不是black level而是sensor统一做出来的pedestal。sensor端不会将bl减完因为sensor输出不能为负数若将bl减完就等于小于0的部分直接就丢掉了这样做会改变noise的分布。4、AWB人眼具有颜色恒常性可以避免光源变化带来的颜色变化但是图像传感器不具备这种特性从而造成色偏白平衡Auto White Balance AWB就是校正这个颜色的偏差。AWB就是通过某种算法将不同色温的环境光下成像后的白色还原成真实的白色通常为自然日光环境光下的人观察到的白色。4.1 灰度世界法灰度世界算法基于一个假说任一幅图像,当它有足够的色彩变化,则它的RGB分量的均值会趋于相等即灰色算法步骤计算各个颜色通道的平均值寻找一个参考值K一般情况选取Gmean;计算Rgain Gmean/Rmean, Bgain Gmean/Bmean;对图像中的每个像素都乘以对应的gain值进行校正缺点对于纯色场景由于其颜色不够充足灰度世界法就不适用了。4.2 完全反射法白块法完全反射也是基于一个假说一幅图像中某个像素点最亮代表它对各个波段的光线都近乎完全反射那么它的真实颜色应该是白色的即RGB且RGB的值最大。搜索图像中的最亮且RGB的值最大的点。计算Rgain G/RBgain G/B将计算出来的Rgain和Bgain作用到每一个像素点缺点依赖于场景中有高光白块如果没有白块的场景就不适用了。4.3 白点-色温标定法该算法假设正常的画面中总会存在一些白色灰色区域这些区域在不同光照条件下会表现出不同的(R/G,B/G)比值在实验室环境下测得不同色温光源下sensor对白色成像的R/G,B/G值真实环境下获取到整幅图像的R/G,B/G值判断出当前处于什么色温根据色温给出对应的Rgain和Bgain缺点在实际应用中白点-色温标定法偶尔也会遇到基本假设不成立的情况主要存在于画面亮度很低或者一些比较特殊的场景。5、去噪Camera的噪声模型主要描述了图像采集过程中噪声的来源及其数学特性包括泊松噪声光子噪声和暗电流噪声以及高斯噪声读出噪声和ADC噪声。由2.1可知获取raw图的过程包括以下三个部分光照转换成电信号经过模拟放大AD 转换。在这个过程中会有三个地方产生噪声photon noise and dark noise由于光激发电子的随机性会产生 photon noise而 sensor 本身由于发热激发的暗电流也会产生噪声这种噪声称为 dark noise 或者热噪声read noise模拟放大器在放大信号的时候会产生噪声这种噪声称为 read noiseADC noise模数转换器在进行模数转换的时候会产生噪声这种噪声称为 ADC noise5.1 泊松噪声泊松分布式一种离散分布均值和方差都是 λ 。可加性两个独立且服从泊松分布的随机变量其和仍然服从泊松分布。则。乘以常数若随机变量 X∼Poisson(λ)则 YcXc 为常数的期望和方差为期望E(Y)cλ方差Var(Y)λ5.1.1 光子噪声photon noise 是和环境照度相关的一种噪声假设环境照度为 Φ 光电转换效率为 α 曝光时间为 t则 photon noise 满足如下分布n_photon∼P(Φ,α,t)P(Φ×α×t)5.1.2 热噪声dark noise 则和暗电流有关和环境照度无关曝光时间越长电流导致 sensor 发热越大产生的噪声也越多假设暗电流强度为 D曝光时间为 t, 则 dark noise 满足如下分布n_dark∼P(D×t)5.2 高斯噪声高斯噪声服从高斯分布即正态分布Normal distribution通常记作X~Nμ ,。其中 μ是正态分布的数学期望均值是正态分布的方差。如果且X和Y是统计独立的正态随机变量那么它们的和为5.2.1 读出噪声拟放大器在放大信号的时候会产生read noise 读出噪声是满足均值为 0 的高斯分布。n_read​∼N(0,​)5.2.2 ADC噪声ADC噪声是模数转换器在进行模数转换的时候产生的也是满足均值为 0 的高斯分布。n_ADC​∼N(0,​)5.3 噪声模型信号放大前的信号记为LL n_photon n_darkL~P(Φ×α×tD×t)。信号放大过程就是把前面光电转换的电信号进行放大放大系数是由电路系统本身决定的也就是我们通常所说的 gain 值这个值和 ISO 有关。gk×ISO经过放大后的信号为G(Ln_read)×gL×gn_read​×g再经过后面的 ADC 转换之后的数字信号记为II Gn_ADC L×gn_read​×gn_ADCI ~ P(Φ×α×tD×t)×g N(0,​)×g N(0,​) P(Φ×αD)×t×g N(0,×g​) ​从上面可知 噪声模型是一个泊松高斯的联合噪声高斯项是一个加性噪声。I的均值和方差分别为E(I) (Φ×αD)×t×gD(I) (Φ×αD)×t×× (Φ×αD)×t×(×)如果我们把相机镜头遮挡住并在这个状态下拍摄大量的图像再对这些图像取均值相当于在令环境照度为 Φ 0于是这个均值图像相当于不必求出暗电流D的具体值只需要在同等曝光时间和ISO设定的图像中减去这个暗帧就可以消除图像中的暗噪声。消除掉暗噪声后相机的噪声模型就变成了下图所示此时噪声有两项一项是与信号相关的泊松噪声另一项是与信号无关的高斯噪声。数字信号I的分布如下I ~ P(Φ×α×t)×g N(0,×g​) ​I的均值和方差变为E(I) Φ×α×t×gD(I) Φ×α×t×× Φ×α×t×(×) E(I)×g(×)5.3.1 信号相关的噪声使用线性拟合的方式进行信号相关的泊松项噪声的标定。D(I) E(I)×g(×)可以看到方差D(I)和图像亮度E(I)和增益g都成线性关系。在同一个曝光组合下拍摄不同灰度色卡计数不同灰度下的方差使用Stats.linregress( )对色卡均值和方差做线性回归横坐标为灰度纵坐标为方差可以得到斜率和截距。斜率是增益g截距是高斯加性噪声。斜率因为泊松噪声的特殊性经过增益后方差被放大倍均值被放大倍所以可以直接得到方差为E(I)×g。可以得到不同ISO下的斜率很明显增益g和ISOISO指的是a gain×d gain成正相关可以考虑使用直线拟合斜率和ISO的关系。截距注意这里的截距指高斯加性噪声包含了读出噪声和ADC噪声5.3.2 信号无关的噪声与信号无关的噪声是高斯噪声有两部分组成且是加性噪声。读出噪声与增益有关ADC噪声与增益无关。最后的读出噪声是原始读出噪声乘以增益对应方差变为原始读出噪声的方差乘以增益的二次方而增益系数又与ISO是线性关系所以读出噪声的方差和ISO的关系可以使用二次函数表示。使用np.polyfit最小二乘法进行多项式拟合会标定得到三个数分别是二次项系数一次项系数常数项。通常使用黑帧的方法也可以得到加性噪声使得信号为0得到的数据自然就是信号无关的噪声。5.4 噪声标定噪声标定的流程首先相同的环境和参数下采集多张图片对采集的每张图像减去当前的暗帧然后求取每个像素的均值和方差。通过采样大量不同均值的像素点的信息可以很容易的拟合出一条直线斜率是增益截距是加性噪声高斯噪声的方差。泊松项的方差与增益是一次项的关系高斯噪声的方差与增益是二次项的关系分别拟合出其参数。6、超分超级分辨率Super-ResolutionSR是通过软件算法对现有图像进行放大并提升清晰度的一种技术适用于低像素原始文件。通过深度学习技术扩大图像像素抑制画质下降适用于特写、远景等需要细节放大的场景。 超分是一个ill-poseed问题没有稳定解和唯一解 。实现方式有传统的插值算法和AI模型。传统的插值方法有最近邻插值双线性插值双平方插值双立方插值以及其他高阶方法。最近邻插值和双线性插值算法很容易出现锯齿生成的图片质量不好。因此一般只在对图像质量要求不高的场合下采用。双平方插值和双立方插值实质上是”低通滤波器”在增强图像平滑效果的同时丢失了许多高频信息。而在很多应用场合细节信息恰恰非常重要要考虑如何在保证平滑效果的同时尽可能地保留细节信息。7、demosaic对RAW数据进行插值的过程叫做Bayer demosaicking其原理如下图所示Demosaic 的难点在于RAW域的任何一个像点photosite只包含一个真实的采样值而构成像素R,G,B的其它两个值需要从周围像点中预测得到。既然是预测就一定会发生预测不准的情况这是不可避免的而预测不准会带来多种负面影响包括拉链效应zipper artifacts边缘模糊颜色误差等。Demosaic有两种方式一种是传统的插值算法另一种是AI模型。7.1 最近邻插值最近邻插值算法是将目标图像中的点对应到原图像中后找到最相邻的整数坐标点的像素值作为该点的像素值输出。图像会出现明显的块状效应会在一定程度上损失空间对称性Alignment。最近邻法速度最快没有考虑像素之间的空间关系、色彩关系效果不佳。7.2 ‌双线性插值sensor输出一幅Bayer时每个像素只有R,G,B三个通道中的一个通道的像素通过插值算法把缺失的像素估计出来m×n的二维数组插值为m×n×3的3个二维数组。举例说明一下双线性插值以下图的GRBG bayer矩阵为例以G3,3 这个点为例我们需要求出G3,3点处的R 和B像素数值R3,3(R3,2R3,4)/2B3,3(B2,3B4,3)/2以R3,4 这个点为例我们需要求出R3,4点处的G和B像素数值G3,4(G2,4R3,3G3,5G4,4)/4B3,4(B2,3B2,5B4,3B4,5)/4以B2,5 这个点为例我们需要求出B2,5点处的G和B像素数值G2,5(G1,5R2,4G2,6G3,5)/4R2,5(B1,4B1,6B3,4B3,6)/4根据同样的原理我们可以对Bayer图像中的每一个点都进行插值得到插值结果。双线性插值是基于相邻像素的线性加权平均计算简单但易产生伪彩色如栅栏区域的“拉链效应”。而且忽视了各通道间的相关性插值结果往往带有比较严重的伪彩色。8、HDR高动态范围成像High Dynamic Range Imaging简称HDRI或HDR在计算机图形学与电影摄影术中是用来实现比普通数位图像技术更大曝光动态范围即更大的明暗差别的一组技术。普通相机甚至是手机相机在同一张照片中很难同时精确地展现出极亮和极暗的细节。换句话说当我们拍摄一张照片时常常会发现照片的某些部分过曝例如天空过亮细节丢失而另一些部分又可能是欠曝的例如阴影部分的细节无法清晰呈现。HDR 模式的出现正是为了解决这个问题。它通过将不同曝光度的多张照片合成在一起保留更多亮部和暗部的细节从而实现更加丰富和真实的图像效果。HDR 模式能够将图像的亮度范围扩展从而模拟出更接近人眼感知的视觉效果。曝光三要素光圈、快门、ISO。8.1 光圈光圈主要负责控制进入相机的光线量。光圈越大单位时间内进入的光线就越多照片的亮度也就越高。反之光圈越小进入的光线量就越少照片的亮度则相应降低。8.2 快门快门负责控制曝光时间。快门速度越快曝光时间就越短进入相机的光线量也就越少。相反快门速度越慢曝光时间就越长进入的光线量则越多。8.3 ISOISO也是影响曝光效果的重要因素。ISO越高相机对光线的敏感度就越高即使在光线较暗的环境下也能拍摄出明亮的照片。然而过高的ISO也可能导致照片出现噪点影响画质。8.4 EV快门速度、光圈F值和ISO共同决定曝光量。曝光量 T时间× F²光圈平方× ISO。当快门速度、光圈的平方、ISO三者乘积相同时画面的亮度相同这一规律被称为‌等值曝光原理‌其核心在于三者组合形成的曝光量恒定。对于同一环境当快门速度、光圈的平方、ISO三者乘积相同时画面的亮度相同且这三者乘积翻倍时称为“增加一档曝光”即1EV。例如同一环境中乘积为4相对乘积等于1为2EV。摄环境的时候如果照片过暗要增加EV值如果照片过亮要减小EV值。相对于所谓”正确曝光“的照片曝光补偿若为正值则过曝若为负值则欠曝并以EV值为单位计算。EV值Exposure Value是描述绝对照度的摄影用单位与照度Lux是一一对应的有以下关系EV log₂(F²/T)-log₂(ISO/100)。对于所谓”正常曝光“的照片在iso为100时EVlog₂(F²/T)。8.5 多帧HDR多帧HDR是最普通的实现HDR的方法。优点是对CIS要求不高所有CIS都可以实现时域HDR缺点是若被摄物体移动较大则会产生叠影。当遇到明暗差距很大的场景时手机的CIS面积小仅依靠普通的单次曝光无法提供足够的动态范围即要么高光过曝要么暗部难以看清。因此拍摄多张照片一部分提高曝光使照片的暗部可以看清另一部分压低曝光使照片亮部可以看清该过程称为包围曝光。将这样的照片叠加即可得到暗部亮部均清晰的照片从而变相提高动态范围。手机的夜景模式就是一种较为暴力的HDR合成。分别保留亮部、部分亮部暗部、暗部细节8.6 单帧HDR8.6.1 BME-HDRBinning Multiplexed Exposure这种HDR方式将CIS上每两行为一组因为Bayer排列的RGGB需要占用两行分别进行长、短曝光。长曝光获得暗部细节短曝光获得亮部细节将相邻两组的图像合并即可获得更高的动态范围。缺点很显著就是其分辨率会减半。8.6.2 SME-HDRSpatially Multiplexed Exposure这种方式在4x4的Bayer阵列中对不同的像素采用不同的曝光最终合成HDR图像。大约损失20%的图像质量。总体上还挺复杂的。颜色深浅表示曝光时间长短8.6.3 QBC-HDRQuad Bayer Coding HDR这种方式与上一种类似但结合了Quad Bayer排列使用在4个同颜色滤光片下两对角线的像素分别采用长短曝光从而合成HDR图像。8.6.4 双增益输出Dual Gain OutputDGO这种方式需要结合双电路增益双原生ISO技术两路不同原生ISO的图像同时输出并融合从而提升图像的信噪比。这种方式主要应用于摄像机上例如ARRI和Canon的部分摄像机等等。DGO对于动态范围提升的幅度虽然不如前几种大但仍然非常显著并且对画质不会有什么负面的影响除了功耗和成本略高一些就没什么缺点了。双原生ISO技术Dual Gain Amplifier双原生ISO技术是指电路中有两条电路连接增益大小不同的PGA。事实上更准确地讲该技术应称为双电路增益。9、配准算法相机领域中的配准为图像融合算法多帧降噪MFNR、多帧HDR、多帧大小FOV融合提供辅助帧往参考帧上对齐的功能使融合算法能更多利用参考帧图像内容实现全局/局部清晰度、对比度效果提升。防抖功能中为了视频效果减少拍摄设备带来的抖动感将当前帧的图像内容对齐到运动轨迹平滑后的当前帧位置。相机拍照时为解决sensor行曝光和rolling shutter带来的图像形变对当前图像做图像校正的功能。基于RGB相机的3D建模、SLAM中tracking模块。9.1 全局配准待配准帧和参考帧分别对raw图抽取2个G通道取均值-下采样到1/4尺寸1/2w*1/2h-待配准帧做亮度对齐根据metadata中的iso expoT算出gain乘到全图上保证变曝光帧与N帧亮度一致-gamma变换将图像拉亮(因为RAW图本身很暗)-做5*5的高斯滤波做中等平滑去噪-参考帧与待配准帧做完预处理后再分别进行特征提取。全局配准算法主要通过计算单应性矩阵H矩阵实现图像对齐其核心步骤包括关键点检测、特征匹配和H矩阵求解。9.1.1 关键点检测常用算法SIFT、ORB、AKAZE等用于检测图像中的关键点如角点、边缘。考虑采用Shi-Tomasi 角点检测算法它是一种改进的角点检测算法在Harris 角点检测算法的基础上进行了优化改进了角点响应函数以最小特征值作为响应函数实现了更鲁棒、参数更直观的角点检测。从配置中读配准阈值参数不同iso下配准结果是否有效的校验阈值是不一样的iso低画面亮对配准点的匹配要求就高反之则要求低根据不同帧类型校验一些参数如lv iso等校验帧是否有效无效的帧需要丢掉比如待配准的Normal帧如果相对于参考帧Normal帧 LV iso变化较大也不参与配准拦截一些不需要配准的异常情况9.1.2 特征匹配匹配策略通过特征描述子匹配两幅图像中的对应关键点筛选出高置信度的匹配对如使用RANSAC剔除异常值。利用全部内点和最小二乘法算出最终的单应性矩阵H矩阵。9.1.3 H矩阵求解H是一个3×3矩阵描述两平面如图像平面间的投影变换关系满足自由度H有8个独立参数因齐次坐标尺度不变性需至少4对匹配点求解。H矩阵式一个3*3的矩阵如下图所示其中 0134 为旋转25为平移67为缩放h81归一化。处理时会设置阈值abs(h0-1) || abs(h4-1) threshRotate0.0X对应旋转超过阈值h2 || h5 threshShiftX0 对应平移超过阈值X0几十个像素h6 || h7 threshZoom0.000X对应缩放超过阈值当上述任意一个值超过阈值时认为两帧图像间位移量较大丢掉待配准帧该帧不需要warp到参考帧也不再参与后续多帧融合。通过映射矩阵将待配准帧映射warp到参考帧坐标系。最终将配准后的多帧送网络进行融合。工程优化低分辨率预处理对图像下采样后计算H再缩放至原尺寸以减少计算量。多帧配准在手机HDR场景中需对多帧图像如N帧、L帧分别配准通过亮度对齐和高斯滤波预处理后提取特征10、ToneMapping当HDR模块完成多帧合成frame stitch后接下来就需要对数据位宽进行压缩以节约后续步骤的计算资源。比较合理的做法是采取逐级压缩策略比如在HDR模块先压缩到12位精度经过CCM、Gamma 等颜色处理后进一步压缩到10位精度经过CSC模块后进行最后一次压缩得到最终的8位精度输出。从16/20位精度压缩到12位精度的过程称为色调映射这一步骤的主要任务是压缩图像的动态范围将HDR图像映射到LDR图像并尽量保证图像细节不损失。色调映射的方法大致分为两类 即全局算法Global Tone MappingGTM和局部算法Local Tone MappingLTM。10.1 GTM全局算法可以理解为每幅图像有一个颜色映射表GTM算法通过查表的方法把一个输入颜色映射为一个输出颜色。有些算法对所有图像都使用固定的表有些算法则是针对每一帧图像创建不同的表。GTM算法特点 任意相同颜色的像素点在映射后还是相同的颜色全局算法一般较简单速度快全局算法的性能一般劣于局部方法存在算法 直方图均衡化、Gamma、对数校正、直方图规定化、分段灰度变换10.2 LTM局部算法借鉴了人眼的知觉原理在映射一个像素时不仅考虑该像素的绝对值还会考虑该像素周围区域的平均亮度值将对比度大的像素映射为高亮对比度小的像素映射为低亮往往可以取得更好的效果。LTM算法特点 映射前颜色相同的像素点映射后颜色可能不同局部算法一般较全局方法更复杂速度相对较慢局部算法的性能一般优于全局方法会出现光晕等现象11、LSC镜头阴影有两种表现形式分别是Luma shading又称vignetting指由于镜头通光量从中心向边缘逐渐衰减导致画面边缘亮度变暗的现象。Chroma shading指由于镜头对不同波长的光线折射率不同引起焦平面位置分离导致图像出现伪彩的现象。11.1Vignetting如上图所示由于镜头中都会存在多处光阑当入射光线偏离光轴角度较大时部分光线就会被光阑遮挡而不能参与成像因此越靠近sensor边缘的像素接收到的曝光量就越低。11.2 Chroma shading镜头对不同波长的光线折射率不同会导致色差问题即不同波长的焦点在空间上不重合导致焦平面分裂为三个不完全重合的曲面这会破坏图像的白平衡使图像出现伪彩如下图所示。根据sensor所处的前后位置不同伪彩可能偏红也可能偏蓝。12、CCM人眼在可见光波段的频谱响应度和半导体传感器的频谱响应以及显示器的激励响应都存在较大的差别这些差别会对摄像机的色彩还原造成较大的影响。举例来说从下图所示的光谱响应曲线中可以了解到一个典型的硅材料sensor在500nm处对蓝、绿光的响应几乎是相等的但是人眼的蓝色锥细胞对500nm的蓝绿光响应却几乎为零。假设sensor按照自己的特性忠实地记录下它对500nm波长的响应值为b根据CIE的标准显示器会在b值的驱动下发出波长为435.8nm的蓝光使人眼感知到明亮的蓝光。这个过程在人眼看来就是成像系统在绿色中凭空增加了很多蓝色的成分降低了绿色的饱和度造成了颜色失真。此外摄像机光路上一般还存在镜头、滤波片等光学元件镜头的镀膜、滤光片的频率响应等参数也会对色彩还原造成影响这些因素综合作用的结果就是人眼在显示器上看到的RGB颜色与真实世界中感知到的物体颜色存在偏差 尤其是色饱和度受到较大影响因此必须对摄像机记录的颜色进行校正以还原人眼的感知效果。颜色校正英文color correction是在RGB空间中完成的处理任务主流的做法是用一个3x3 的矩阵将一个输入像素值(R, G, B)线性地映射为一个新的像素值(R, G, B)通过审慎地选择矩阵参数使映射后的颜色更符合人的认知习惯。这个3x3 的矩阵叫做颜色校正矩阵英文color correction matrix简称CCM其变换公式如下。CCM公式的一个基本约束就是不能破坏白平衡即对于任何RGB的输入必须保证输出满足RGB。正式由于这个原因颜色校正操作只能放在白平衡调整之后执行。实践中通常使用X-Rite 24色卡上的18个彩色色块为标准计算校正系数基本原理是用摄像机拍摄色卡提取18个色块的平均颜色Rn, Gn, Bnn1..18 构成输入矩阵用24色卡上的18个彩色色块的标准RGB值构成目标矩阵则有关于CCM的矩阵方程求解M的过程如下上述过程需要使用某种色卡因此称为patch-based方法。