Adaptive piece-wise approximation method for gamma correction

分享一篇美国专利:《Adaptive piece-wise approximation method for gamma correction --United States Patent

一、背景

      Gamma校正是isp pipeline中的一个重要模块,主要是为了补偿CRT screen的非线性特性。

      针对数字图像信号,gamma校正简单的实现方式是使用查找表实现。查找表一般保存在ROM中,每个查找表中保存Gamma校正之后的亮度值。然而,访问ROM中的查找表需要许多工作时钟才能完成。

      另外一种Gamma校正的方式是使用固定点的分段线性插值实现。把n bit输入信号所表示的最大亮度值平分为几段,在ROM中保存分段的节点所对应的Gamma校正值,位于节点之间的值通过线性插值的到。具体原理如下图所示:

      这种方法由于只需要存储少量节点对应的Gamma校正值,而不是存储所有点的gamma校正值,所以其消耗的内存比查找表的方法要少很多。但是,这种分段线性插值并不是太精确。(如果节点足够的话,还是可以比较精确的;如果节点比较少的话,这种方式确实不太精确)。由于每条分段之间的间距是固定的,因此在特点节点数量的情况下,不能兼顾gamma曲线中的线性部分和非线性部分的精确度。

      还有一种方法是结合分段线性和查找表的方法。为了保证其精度,在gamma曲线非线性部分使用查找表的方式;在gamma曲线线性部分使用分段插值的方式进行校正。这种方式仍然需要较多的内存。

二、自适应分段线性插值硬件实现

      本专利使用较小内存的前提下,对分段线性插值进行自适应,较好的兼顾了gamma曲线的非线性和线性部分的插值精度。

      分段线性插值主要原理为:

      G(B)、G(A)为可编程的采用点所对应的gamma矫正值,A和B为分段节点值。

FIG1,是该专利的硬件实现示意图

       如上图所示:是gamma校正硬件实现图100,主要由数据选择器110,减法器115,偏移模块120,乘法器125,除法器130以及加法器135。

FIG2,是自适应分段线性插值算法示意图

上图是自适应分段线性插值示意图。主要实现步骤为:

  1. 选取输入0和最大值N,最为输入范围的两端点。
  2. 把上述两端点平分为两部分200
  3. 把步骤2所平分的两部分,再继续平分,分成四段相等的范围210
  4. 按照自适应分段的方法把上述四部分继续划分下去,直到达到预设的最小宽度范围。自适应分段方法由平分两部分220;或/和平分成三部分230;或/和平分成四部分240构成。
FIG3,是自适应分段线性插值拟合曲线示意图

       如图3,Gamma校正曲线为10bit的输入数据,被七个点分成八段。首先G5把范围平分为两段,然后G3、G6把范围平分为四段。此后,应用自适应分段的方法把曲线继续划分,为了简单阐述原理,平分两段的操作执行了两次,得到的节点为G1,G4,G0和G2。所选取的分段节点多对应的灰度值和二进制表示如下图所示:

       图像数字信号通过0-G7八个点进行采样,得到其灰度值保存在RAM中,为后续分段线性插值做准备。

      如图FIG1,输入10bit图像亮度数据IN[9:0]140,因此有1024个不同的亮度等级。数据线140与偏移模块120连接,高四位IN[9:6]和高两位IN[9:8]数据分别和数据选择器110和除法器连接。数据选择器数据110存放于ROM中。针对图3而言,G0-G7保存于110A,0-G6保存于110B中,这样可以通过输入数据高四位IN[9:6]在一个时钟内读取到相邻的两个节点的gamma矫正灰度值。高节点所对应的10bit gamma矫正值G(B)145和低节点所对应的10bit gamma矫正值G(A)150

      减法器115所计算的是高节点对应的gamma校正值减去低节点所对应的gamma校正值155。同时,偏移器120通过移位的方式去掉高位保留t-bit位数据160,得到输入数据与低节点gamma校正值的差值。t表示可能的最大数据位,在该示例中最大为8位。其移位计算结果如下图示:

      例如,假设输入数据亮度值为134,其二进制表示为:00 1000 0110,高位为00,故输出值160为00110,即十进制6,表示134与节点128之间的差值IN-A。

      乘法器125把高节点与低节点的差值155与偏移模块输出数据160相乘,乘积的结果输入到除法器130,通过移位的方式输出的结果即为(G(B)-G(A))/(B-A)。除法器移中移动的位数由下表得出:

      例如,假设输入数据亮度值为134,其二进制表示为:00 1000 0110,高位为00,位于128和192之间,而192-128=64,即B-A= 64,所以需要将除法器输入数据右移6位。

      最后,加法器135机上低节点值150和除法器输出的结果170,得到差值之后的结果。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值