本发明实施例涉及图像处理技术,尤其涉及一种Gamma校正的方法及装置。
背景技术:
Gamma校正是对输入图像灰度值进行的非线性操作,是图像处理中常见的一种处理方法。Gamma校正使图像的整体亮度得到提升,同时低灰度处的对比度得到增强,更利于分辨低灰度值的图像细节。
传统的Gamma校正实现方法包括:查找表法和16点折线近似法。查找表法是将输入输出的灰度值映射关系储存在硬件存储器中,将输入灰度值作为存储器的地址,对应的存储器地址中存放输出灰度值。理想的Gamma映射关系是一条曲线,16点折线近似法是在曲线上选取16个基准点,基准点处的Gamma映射关系与理想Gamma曲线相同,其他部分的Gamma映射关系采用相邻基准点之间的连线来近似。
查找表法的优点是精度高,但是需要硬件存储器来存储Gamma灰度映射关系,占用比较多资源,成本较高。16点折线近似法选取16个基准点,除基准点之外的Gamma映射关系采用相邻基准点之间的连线来近似,近似值与理想的Gamma映射关系存在较大误差,且由于基准点的灰度值不存在明显一定的分布规律,运算复杂。
技术实现要素:
本发明实施例提供一种Gamma校正的方法及装置,以节省硬件存储器,同时减小与理想的Gamma映射关系间的误差,减少复杂的运算。
第一方面,本发明实施例提供了一种Gamma校正的方法,该方法包括:
获取待校正像素点的输入灰度值;
根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值;
如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;
如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值;
根据所述输出灰度值校正所述输入灰度值;
其中,Gamma曲线映射表中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系。
进一步的,所述Gamma曲线映射表中,低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。
进一步的,所述坐标灰度值的数量为64个。
进一步的,在第1个坐标灰度值到第33个坐标灰度值中,相邻坐标灰度值的差为2的1次幂;
在第33个坐标灰度值到第49个坐标灰度值中,相邻坐标灰度值的差为2的2次幂;
在第49个坐标灰度值到第64个坐标灰度值中,相邻坐标灰度值的差为2的3次幂。
进一步的,对两个校正灰度值进行插值计算,作为输出灰度值,包括:
根据如下公式进行插值计算,得到输出灰度值:
Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))
其中,Xn和Xn+1分别表示相邻的两个坐标灰度值,Yn和Yn+1分别表示两个坐标灰度值Xn和Xn+1对应的校正灰度值,X表示输入灰度值,Y表示输出灰度值。
进一步的,
根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值包括:
将所述输入灰度值转换成二进制形式;
将二进制的输入灰度值与Gamma曲线映射表中二进制存储的坐标灰度值进行按位比较,以查找相同的坐标灰度值;
相应的,对两个校正灰度值进行插值计算,作为输出灰度值包括:
对于二进制形式的两个校正灰度值,获取两个校正灰度值之差;
将与所述两个校正灰度值之差的二进制位进行右移位运算,以得到插值,作为所述输出灰度值。
第二方面,本发明实施例还提供了一种Gamma校正的装置,该装置包括:
输入灰度值获取模块,用于获取待校正像素点的输入灰度值;
坐标灰度值查找模块,用于根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值;
校正灰度值获取模块,用于如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;
插值计算模块,用于如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值;
输入灰度值校正模块,用于根据所述输出灰度值校正所述输入灰度值;
其中,Gamma曲线映射表中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系。
进一步的,
所述Gamma曲线映射表中,低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。
进一步的,所述坐标灰度值的数量为64个。
进一步的,
在第1个坐标灰度值到第33个坐标灰度值中,相邻坐标灰度值的差为2的1次幂;
在第33个坐标灰度值到第49个坐标灰度值中,相邻坐标灰度值的差为2的2次幂;
在第49个坐标灰度值到第64个坐标灰度值中,相邻坐标灰度值的差为2的3次幂。
进一步的,所述插值计算模块,具体用于:
根据如下公式进行插值计算,得到输出灰度值:
Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))
其中,Xn和Xn+1分别表示相邻的两个坐标灰度值,Yn和Yn+1分别表示两个坐标灰度值Xn和Xn+1对应的校正灰度值,X表示输入灰度值,Y表示输出灰度值。
进一步的,所述坐标灰度值查找模块,包括:
输入灰度值转化单元,用于将所述输入灰度值转换成二进制形式;
按位比较单元,用于将二进制的输入灰度值与Gamma曲线映射表中二进制存储的坐标灰度值进行按位比较,以查找相同的坐标灰度值;
相应的,所述插值计算模块,包括:
校正灰度值之差获取单元,用于对于二进制形式的两个校正灰度值,获取两个校正灰度值之差;
右移位运算单元,用于将所述两个校正灰度值之差的二进制位进行右移位运算,以得到插值,作为所述输出灰度值。
本发明实施例提供的Gamma校正的方法及装置,通过在Gamma曲线映射表中查找与输入灰度值对应的坐标灰度值,如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值,实现了对输入图像灰度值的非线性操作,使图像的整体亮度得到提升,使低灰度处的对比度得到增强。其中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系,使得在进行插值计算输出灰度值时,能够避免复杂的除法运算。
附图说明
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1是本发明实施例一提供的一种Gamma校正的方法流程图;
图2是本发明实施例三提供的一种Gamma校正的方法流程图;
图3是本发明实施例四提供的一种Gamma校正的装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种Gamma校正的方法流程图,本实施例可用于Gamma校正,该方法可由Gamma校正装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在任何具有图像处理功能的智能终端中,具体实现中,智能终端可包括:平板电脑、智能手机等移动终端,上述终端仅是举例,而非穷举,包含但不限于上述智能终端。
参见图1,所述Gamma校正的方法,包括:
S110、获取待校正像素点的输入灰度值。
S120、根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值。
在本实施例中,在Gamma曲线映射表中,包含多个基准点对,每个基准点的横坐标表示坐标灰度值,纵坐标表示校正灰度值。其中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系。示例性的,分别用Xn和Xn+1表示相邻两坐标灰度值,Xn+1-Xn=2m其中,m=1,2,3…。即相邻坐标灰度值之间的差值可以为2,可以为4,还可以为8,本实施例对此并不做限定。将获取的待校正像素点的输入灰度值与Gamma曲线映射表中的坐标灰度值进行比较,查找是否存在对应的坐标灰度值。
S130、如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值。
如果输入的灰度值等于Gamma曲线映射表中某基准点的坐标灰度值,则获取该坐标灰度值对应的校正灰度值,并将该校正灰度值作为输入灰度值对应的的输出灰度值。
S140、如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值。
如果在Gamma曲线映射表中,查找不到与输入灰度值对应相等的坐标灰度值,则查找比较输入灰度值处于哪两个相邻基准点对应的坐标灰度值之间,并分别得到两个相邻坐标灰度值对应的校正灰度值。根据输入灰度值、相邻两个坐标灰度值及对应的两个校正灰度值进行插值计算,得到输入灰度值对应的输出灰度值。示例性的,根据如下公式进行插值计算,得到输出灰度值:
Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))
其中,Xn和Xn+1分别表示相邻的两个坐标灰度值,Yn和Yn+1分别表示两个坐标灰度值Xn和Xn+1对应的校正灰度值,X表示输入灰度值,Y表示输出灰度值。
S150、根据所述输出灰度值校正所述输入灰度值。
将查找得到的输出灰度值或通过插值计算得到的输出灰度值作为输入灰度值对应的校正值,依次对每个输入灰度值进行查找计算,完成所有输入灰度值的校正。
本实施提供的Gamma校正的方法,通过在Gamma曲线映射表中查找与输入灰度值对应的坐标灰度值,如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值,实现了对输入图像灰度值的非线性操作,使图像的整体亮度得到提升,使低灰度处的对比度得到增强。其中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系,使得在进行插值计算输出灰度值时,能够避免复杂的除法运算。
作为本实施例的一个优选实施例,根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值包括:将所述输入灰度值转换成二进制形式;将二进制的输入灰度值与Gamma曲线映射表中二进制存储的坐标灰度值进行按位比较,以查找相同的坐标灰度值。相应的,对两个校正灰度值进行插值计算,作为输出灰度值包括:对于二进制形式的两个校正灰度值,获取两个校正灰度值之差;将与所述两个校正灰度值之差的二进制位进行右移位运算,以得到插值,作为所述输出灰度值。
在本实施例中,需将Gamma曲线映射表以二进制的形式存储在硬件存储器中,即坐标灰度值与坐标灰度值一一对应的校正灰度值以二进制的形式存储在硬件存储器中。将输入灰度值转化为二进制形式,并与Gamma曲线映射表中二进制存储的坐标灰度值按位逐一进行比较,直到每个二进制位均相同,那么就能够查找到与输入灰度值相同的坐标灰度值。当查找不到相同的坐标灰度值时,将与输入灰度值相邻的两个坐标灰度值的校正灰度值以二进制形式作差。因为Gamma曲线映射表中,相邻坐标灰度值之间的差值为2的正整数次幂,那么在以二进制形式存储时,相邻两坐标灰度值之差的二进制形式为10,100,1000…。示例性的,根据公式Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))进行插值计算时,因为除以Xn+1-Xn,在进行除法运算时,能够避免复杂的除法运算,只需将二进制形式的被除数进行简单的右移位运算,就能够得到插值计算的结果,并将插值结果作为输出灰度值。
实施例二
本实施例在上述实施例的基础上,对Gamma曲线映射表中,相邻两坐标灰度值之差和坐标灰度值的数量进行了限定。
优选的,所述Gamma曲线映射表中,低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。
在本实施例中,如果在Gamma曲线映射表中查找不到相同的坐标灰度值,根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值时,相邻两坐标灰度值的差值越小,插值计算的输出灰度值精度越高,越接近理想的Gamma曲线上的输出灰度值。根据人的视觉原理特性—人眼的亮度感觉特性,对亮度较高的区域感知性要高于亮度较低的感知性,低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。在低灰度区间的相邻两坐标灰度值间隔较小,这样在低灰度区间进行Gamma校正后,对输入灰度值的校正精度更高,校正处理后,图像较暗部分细节效果更好。
优选的,在Gamma曲线映射表中,所述坐标灰度值的数量为64个。
灰度图像中每个像素点的灰度值的取值为0-255,共256个灰度值。在Gamma曲线映射表中,包含64个坐标灰度值,即包含64个基准点对。在这64个坐标灰度值中,相邻两坐标灰度值之差为2的正整数次幂,且低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。示例性的,在第1个坐标灰度值到第33个坐标灰度值中,相邻坐标灰度值的差为2的1次幂;在第33个坐标灰度值到第49个坐标灰度值中,相邻坐标灰度值的差为2的2次幂;在第49个坐标灰度值到第64个坐标灰度值中,相邻坐标灰度值的差为2的3次幂。64个基准点的坐标灰度值如下表所示:
本实施例提供的Gamma校正的方法,通过在Gamma曲线映射表中设置64个坐标灰度值,使得对输入灰度值进行Gamma校正的精度更高,校正后的输出灰度值更接近理想的Gamma曲线,与理想Gamma曲线的误差值更小,对图像处理后的效果更好。通过设定低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差,使得低灰度值区间得到的Gamma曲线精度更高,经过Gamma校正后的图像暗部细节效果更好。
实施例三
图2是本发明实施例提供的一种Gamma校正的方法流程图,本实施例是上述实施例二的一个具体示例,具体包括如下步骤:
S210、获取待校正像素点的输入灰度值。
S220、将所述输入灰度值与Gamma曲线映射表中的64个坐标灰度值进行比较。
将输入灰度值与Gamma曲线映射表中的64个坐标灰度值一一进行比较,查找在64个坐标灰度值中是否存在于输入灰度值相同的灰度值。
S230、判断输入灰度值是否等于64个坐标灰度值,若是,则执行S260,若否,则执行S240。
判断输入灰度值是否等于某坐标灰度值,如果输入灰度值等于64个坐标灰度值中的某坐标灰度值,则执行S260,如果输入灰度值不等于64个坐标灰度值中的任一坐标灰度值,则执行S240。
S240、查找到与输入灰度值相邻的两坐标灰度值对应的校正灰度值。
根据Gamma曲线映射表查找与输入灰度值相邻的两坐标灰度值对应的校正灰度值,示例性的,输入灰度值为53,输入灰度值位于第27个基准点的坐标灰度值52与第28个基准点的坐标灰度值54之间,则分别根据Gamma曲线映射表查找坐标灰度值52与53对应的校正灰度值。
S250、根据公式Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))进行插值计算。
S260、得到输出灰度值。
当输入灰度值等于某坐标灰度值时,将该坐标灰度值对应的校正灰度值作为输出灰度值,完成对输入灰度值的校正;当输入灰度值不等于某坐标灰度值时,即输入灰度值介于某相邻两坐标灰度值之间时,将根据公式Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))进行插值计算的灰度值作为输出灰度值,完成对输入灰度值的校正。
本实施例提供的Gamma校正的方法,通过在Gamma曲线映射表中设置64个坐标灰度值,只需64个硬件存储单元,大大节省了硬件资源,同时相比于16点折线近似法,使得对输入灰度值进行Gamma校正的精度更高,校正后的输出灰度值更接近理想的Gamma曲线,与理想Gamma曲线的误差值更小,对图像处理后的效果更好。通过设定低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差,使得低灰度值区间得到的Gamma曲线精度更高,经过Gamma校正后的图像暗部细节效果更好。
实施例四
图3为本发明实施例提供的一种Gamma校正的装置的结构示意图,所示装置包括:输入灰度值获取模块310、坐标灰度值查找模块320、校正灰度值获取模块330、插值计算模块340和输入灰度值校正模块350,下面对各模块进行具体说明。
输入灰度值获取模块310,用于获取待校正像素点的输入灰度值;
坐标灰度值查找模块320,用于根据所述输入灰度值在Gamma曲线映射表中查找对应的坐标灰度值;
校正灰度值获取模块330,用于如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;
插值计算模块340,用于如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值;
输入灰度值校正模块350,用于根据所述输出灰度值校正所述输入灰度值;
其中,Gamma曲线映射表中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系。
优选的,所述Gamma曲线映射表中,低灰度区间的坐标灰度值之差小于高灰度区间的坐标灰度值之差。
优选的,所述坐标灰度值的数量为64个。
优选的,在第1个坐标灰度值到第33个坐标灰度值中,相邻坐标灰度值的差为2的1次幂;
在第33个坐标灰度值到第49个坐标灰度值中,相邻坐标灰度值的差为2的2次幂;
在第49个坐标灰度值到第64个坐标灰度值中,相邻坐标灰度值的差为2的3次幂。
优选的,所述插值计算模块340,具体用于:
根据如下公式进行插值计算,得到输出灰度值:
Y=Yn+((Yn+1-Yn)*(X-Xn)/(Xn+1-Xn))
其中,Xn和Xn+1分别表示相邻的两个坐标灰度值,Yn和Yn+1分别表示两个坐标灰度值Xn和Xn+1对应的校正灰度值,X表示输入灰度值,Y表示输出灰度值。
优选的,所述坐标灰度值查找模块320,包括:
输入灰度值转化单元,用于将所述输入灰度值转换成二进制形式;
按位比较单元,用于将二进制的输入灰度值与Gamma曲线映射表中二进制存储的坐标灰度值进行按位比较,以查找相同的坐标灰度值;
相应的,所述插值计算模块340,包括:
校正灰度值之差获取单元,用于对于二进制形式的两个校正灰度值,获取两个校正灰度值之差;
右移位运算单元,用于将所述两个校正灰度值之差的二进制位进行右移位运算,以得到插值,作为所述输出灰度值。
本实施提供的Gamma校正的装置,通过在Gamma曲线映射表中查找与输入灰度值对应的坐标灰度值,如果查找到相同的坐标灰度值,则从所述Gamma曲线映射表中获取对应的校正灰度值,作为输出灰度值;如果查找不到相同的坐标灰度值,则根据查找到的相邻两个坐标灰度值获取对应的校正灰度值,并对两个校正灰度值进行插值计算,作为输出灰度值,实现了对输入图像灰度值的非线性操作,使图像的整体亮度得到提升,使低灰度处的对比度得到增强。其中,相邻坐标灰度值之间的差值为2的正整数次幂,各所述坐标灰度值与校正灰度值的对应关系满足Gamma曲线关系,使得在进行插值计算输出灰度值时,能够避免复杂的除法运算。
本发明实施例所提供的Gamma校正的装置可执行本发明任意实施例所提供的Gamma校正的方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。