最小二乘法计算CCM

        

目录

        最小二乘法介绍

        带约束条件的最小二乘法

        计算法获取AB矩阵

        实拍法获取B矩阵       

        完全实拍获取AB矩阵

        总结


        在ISP通路里,有个CCM(Color Correction Matrix)模块,这个模块就是个3x3的矩阵,其目的就是将与设备相关的颜色空间,转到和设备无关的颜色空间。

        最小二乘法介绍

        这个模块可以用最小二乘法计算得到,先介绍下最小二乘法。

        其中,我们规定其中B为3xN的矩阵,A为3xN的矩阵,M为3x3矩阵。可以认为M为CCM矩阵,A为目标色卡RGB或XYZ值,B为camera的RGB值,N为色卡的数目,一般为24色卡或者SG色卡,由于CCM矩阵是3x3矩阵,所以,一般用24色卡即可。

        要想计算出M,则有

可得

         当然,ISP里的CCM模块,不仅仅是一个3x3矩阵,实际上,为了保证经过CCM之后,AWB的白点不变,即保证白还是白的,需要满足另一个条件,那就是必须保证CCM矩阵的行和为1。而用上面的公式得到的M并不会保证3x3的矩阵行和为1。

        带约束条件的最小二乘法

        所以,在求解的过程中需要加入约束条件。其推导过程如下(由于敲公式太费劲了,用手写的)。

这样就可以算出M矩阵,必然能够保证M矩阵的行和为1。

        计算法获取AB矩阵

        下面再介绍如何得到A矩阵和B矩阵,A矩阵我们当作是目标值,这个可以是CIE1931标准观察者空间得到RGB值,这个值和设备不相关了,对指定光源下,可以计算出其值

∫ρ (λ) *R(λ)*stdxyz(λ)

        该值是在XYZ空间,且还没做白平衡,所以需要使用色适应计算caMat,可以使用Branford或者CAT02计算,然后再转到sRGB色域或者P3色域,这样就能得到A矩阵。

而B矩阵是和camera相关的,如果能有相机的相应曲线,那么可以使用同样的方法,计算其值,

∫ρ (λ) *R(λ)*S (λ)

同样的,然后做白平衡,即可得到B矩阵。

那么整个计算流程如下图

        实拍法获取B矩阵       

        当然,有时,我们没法知道sensor的响应曲线,那么,可以采用实拍的数据,不过这样需要测环境光源曲线,要保证A矩阵里使用相同的光源曲线。

        那整个流程如下:

        完全实拍获取AB矩阵

        如果有竞品手机,可以在相同光源下,同时用两台手机对色卡进行拍照,从而获取到AB矩阵。整体流程如下:

        需保证照片的色域是相同的,不能一个sRGB,一个P3 AWB对齐;亮度对齐,饱和度对齐,都是竞品手机向调试手机对齐,AWB对齐是为了让得到的CCM不会带有倾向,不影响AWB,亮度对齐是为了,计算CCM时无亮度影响,更多的考虑颜色, 二次计算和饱和度对齐是为了色度优先,尽可能保证色相准确性,牺牲饱和度。

        总结

        这个过程是计算指定光源下的CCM矩阵,实际中,不同光源对应的CCM不同,所以需要计算出多种光源下的CCM矩阵,比方说,D65,LED5000K,TL84,AH等光源下,然后通过AWB计算出的白点色温,根据色温大小或者光源类型,选择对应的CCM矩阵,中间可以采用插值的方式,得到最终使用的CCM阵,只要不选错CCM,效果基本上不会差。 

        当然,由于CCM是3x3矩阵,是线性的,而sensor的响应曲线到人眼标准观察者空间是非线性的,所以,一般不能保证每个颜色都是准确的,也就是用对应的CCM矩阵算出各个色块的色差,某些色块的色差会比较大,还需要后处理模块来进行二次修正。

  • 11
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值