一种基于FPGA的图像实时Gamma校正方法[发明专利]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010730559.5
(22)申请日 2020.07.27
(71)申请人 合肥埃科光电科技有限公司
地址 230088 安徽省合肥市高新区燕子河
路388号亿智科技产业园1号楼
(72)发明人 杨晨飞 董宁 曹桂平 邵云峰 
张光宇 
(74)专利代理机构 安徽省合肥新安专利代理有
限责任公司 34101
代理人 陆丽莉 何梅生
(51)Int.Cl.
G06T 5/00(2006.01)
G06F 7/556(2006.01)
(54)发明名称
一种基于FPGA的图像实时Gamma校正方法
(57)摘要
本发明公开了一种基于FPGA的图像实时
Gamma校正方法,其步骤包括:1对输入图像数据
进行归一化;2在FPGA内使用多次迭代、逐次逼近
的方法,计算归一化的输入图像数据的对数函
数;3在FPGA内使用乘法器计算归一化的输入图
像数据的乘积;4在FPGA内使用多次迭代、逐次逼
近的方法,计算归一化的输入图像数据的指数函
数,从而得到归一化的输出图像数据;5进行去归
一化,得到输出图像数据。

本发明基于FPGA实现
了对图像数据的Gamma校正,具有较高的实时性;
并在FPGA内使用多次迭代、逐次逼近的方法进行
计算,资源消耗量较低,
校正精度较高。

权利要求书2页 说明书6页 附图2页CN 111815541 A 2020.10.23
C N 111815541
A
1.一种基于FPGA的图像实时Gamma校正方法,其特征在于包括以下步骤:
步骤1、对输入图像数据进行归一化,得到归一化的输入图像数据V;
步骤2、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的对数函数log2 V;
步骤2.1、定义当前迭代次数为i,定义总的迭代次数为M1+N1,其中,M1为选取的A型负迭代的次数,N1为选取的A型正迭代的次数;
步骤2.2、初始化i=-M1+1;
步骤2.3、利用式(1)初始化第i次迭代的三个变量x i、y i、z i:
步骤2.4、判断i≤0是否成立,若成立,则利用式(2)对第i次迭代的三个变量x i、y i、z i进行A型负迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;否则,利用式(3)对第i次迭代的三个变量x i、y i、z i进行A型正迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;
式(2)和式(3)中,T(δ)表示迭代的逼近幅度数列,并有:
式(2)和式(3)中,d i表示第i次迭代的逼近极性,并有:
步骤2.5、将i+1赋值给i;判断i≥N1是否成立,若成立,则执行步骤2.6;否则,执行步骤2.4;
步骤2.6、将第N1+1次迭代的变量作为所述对数函数log2V的计算结果;
步骤3、在FPGA内使用乘法器计算归一化的输入图像数据V的乘积γ·log2 V,其中,γ为Gamma校正系数;
步骤4、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的指数函数从而得到归一化的输出图像数据L;
步骤4.1、定义当前迭代次数为j,定义总的迭代次数为M2+N2次,其中,M2为选取的B型负迭代的次数,N2为选取的B型正迭代的次数;
步骤4.2、初始化j=-M2+1;
步骤4.3、利用式(6)初始化第j次迭代的三个变量u j、v j、w j:
式(6)中,S表示多次迭代的修正系数,并有:
步骤4.4、判断j≤0是否成立,若成立,则利用式(8)对第j次迭代的三个变量u j、v j、w j进行B型负迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1;否则,利用式(9)对第j次迭代的三个变量u j、v j、w j进行B型正迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1:
式(8)和式(9)中,e j表示第j次迭代的逼近极性,并有:
步骤4.5、将j+1赋值给j,并j≥N2是否成立,若成立,则执行步骤4.6;否则返回步骤4.4执行;
步骤4.6、将第N2+1次迭代的变量作为所述指数函数的运算结果,并记为所述归一化的输入图像数据V的Gamma校正结果L;
步骤5、对所述Gamma校正结果L进行去归一化,从而得到校正后的图像数据并输出。

2.根据权利要求1所述的基于FPGA的图像实时Gamma校正方法,其特征在于:
所述步骤2.4与步骤4.4中的迭代计算是基于FPGA硬件资源实现,其中,加法、减法运算是基于FPGA的加法器实现;任意数值与2的幂的乘法是基于FPGA的桶式移位器实现;迭代的逼近幅度数列T(δ)的存储与调用是基于FPGA的查找表实现。

一种基于FPGA的图像实时Gamma校正方法
技术领域
[0001]本发明属于数字图像处理技术领域,具体的说是一种基于FPGA的图像实时Gamma 校正方法。

背景技术
[0002]Gamma校正是一种重要的图像处理算法,其原理是对图像像素亮度进行幂指数映射。

Gamma校正早期主要应用于显示器/电视机中,用于对图像显示的质量进行优化。

而随着图像数字化领域的发展,目前Gamma校正也广泛应用在各类数字图像处理中。

[0003]Gamma校正公式如下:
[0004]L=Vγ
[0005]式中,V表示归一化的输入图像数据,L表示归一化的输出图像数据,γ表示Gamma 校正系数。

[0006]FPGA由于其并行流水线架构,可以实现极高的实时性,在机器视觉、工业检测、医疗成像等众多领域的数字图像处理中有着广泛的应用。

但使用FPGA直接对Gamma校正按公式进行计算较为困难,进行幂指数计算会占用大量的逻辑资源,在大部分应用场景中并不适用。

[0007]目前常用的实现方法是查找表法,先在PC或嵌入式处理器内计算出所有可能的参数对应的Gamma校正结果,并以查找表的形式存储在FPGA内;在需要对图像数据进行实时校正时,根据输入图像数据从查找表中找出对应的Gamma校正结果作为输出。

查找表是一种非常直接的方法,适用于任何函数的计算,但其缺点在于需要占用大量的存储资源,例如对于n比特位宽的输入图像数据,在FPGA内就需要2n×n比特的存储资源进行存储,对于位宽较宽的输入图像数据,或是并行路数较多的应用场景,查找表法需要的存储资源很容易就会超过FPGA的总资源量。

此外,当Gamma校正系数改变时,往往需要很长时间才能完成对FPGA 内查找表的更新。

[0008]随着图像采集与数字图像处理技术领域的发展,近年来图像精度越来越高,位宽越来越宽,对图像处理的速度要求也越来越高;此外,在很多应用场景中需要根据图像亮度对Gamma校正系数进行动态调整,并实时反映至输出图像数据中。

在FPGA资源量有限的情况下,查找表法已很难满足这些需求。

发明内容
[0009]本发明是为了解决上述现有技术存在的不足之处,提出一种基于FPGA的图像实时Gamma校正方法,以期能在使用较少硬件资源的条件下,实现高实时性、高精度的数字图像Gamma校正,并支持Gamma校正系数的动态调整。

[0010]本发明为达到上述发明目的,采用如下技术方案:
[0011]本发明一种基于FPGA的图像实时Gamma校正方法的特点在于包括以下步骤:[0012]步骤1、对输入图像数据进行归一化,得到归一化的输入图像数据V;
[0013]步骤2、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的对数函数log2 V;
[0014]步骤2.1、定义当前迭代次数为i,定义总的迭代次数为M1+N1,其中,M1为选取的A型负迭代的次数,N1为选取的A型正迭代的次数;
[0015]步骤2.2、初始化i=-M1+1;
[0016]步骤2.3、利用式(1)初始化第i次迭代的三个变量x i、y i、z i:
[0017]
[0018]步骤2.4、判断i≤0是否成立,若成立,则利用式(2)对第i次迭代的三个变量x i、y i、z i进行A型负迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;否则,利用式(3)对第i次迭代的三个变量x i、y i、z i进行A型正迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;
[0019]
[0020]
[0021]式(2)和式(3)中,T(δ)表示迭代的逼近幅度数列,并有:
[0022]
[0023]式(2)和式(3)中,d i表示第i次迭代的逼近极性,并有:
[0024]
[0025]步骤2.5、将i+1赋值给i;判断i≥N1是否成立,若成立,则执行步骤2.6;否则,执行步骤2.4;
[0026]步骤2.6、将第N1+1次迭代的变量作为所述对数函数log2V的计算结果;[0027]步骤3、在FPGA内使用乘法器计算归一化的输入图像数据V的乘积γ·log2 V,其中,γ为Gamma校正系数;
[0028]步骤4、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的指数函数从而得到归一化的输出图像数据L;
[0029]步骤4.1、定义当前迭代次数为j,定义总的迭代次数为M2+N2次,其中,M2为选取的B 型负迭代的次数,N2为选取的B型正迭代的次数;
[0030]步骤4.2、初始化j=-M2+1;
[0031]步骤4.3、利用式(6)初始化第j次迭代的三个变量u j、v j、w j:
[0032]
[0033]式(6)中,S表示多次迭代的修正系数,并有:
[0034]
[0035]步骤4.4、判断j≤0是否成立,若成立,则利用式(8)对第j次迭代的三个变量u j、v j、w j进行B型负迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1;否则,利用式(9)对第j次迭代的三个变量u j、v j、w j进行B型正迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1:
[0036]
[0037]
[0038]式(8)和式(9)中,e j表示第j次迭代的逼近极性,并有:
[0039]
[0040]步骤4.5、将j+1赋值给j,并j≥N2是否成立,若成立,则执行步骤4.6;否则返回步骤4.4执行;
[0041]步骤4.6、将第N2+1次迭代的变量作为所述指数函数的运算结果,并记为所述归一化的输入图像数据V的Gamma校正结果L;
[0042]步骤5、对所述Gamma校正结果L进行去归一化,从而得到校正后的图像数据并输出。

[0043]本发明所述的基于FPGA的图像实时Gamma校正方法的特点也在于:
[0044]所述步骤2.4与步骤4.4中的迭代计算是基于FPGA硬件资源实现,其中,加法、减法运算是基于FPGA的加法器实现;任意数值与2的幂的乘法是基于FPGA的桶式移位器实现;迭代的逼近幅度数列T(δ)的存储与调用是基于FPGA的查找表实现。

[0045]与现有技术相比,本发明的有益效果在于:
[0046]1、本发明基于FPGA实现图像数据的实时Gamma校正,将复杂的幂指数计算变化为对图像数据进行一次对数计算、一次乘积计算和一次指数计算,既保证了图像数据Gamma校正的精度和实时性,也减少了FPGA逻辑资源和存储资源的占用量。

[0047]2、本发明中对于图像数据进行对数计算和指数计算是在FPGA中使用多次迭代、逐次逼近的方法实现,对数计算和指数计算的精度与迭代次数正相关,通过选取合适的迭代次数,即可实现Gamma校正结果的高精度。

[0048]3、本发明中对于图像数据进行对数计算和指数计算的方法仅需要在FPGA内存储迭代的逼近幅度数列,与传统的查找表法相比,对FPGA存储资源的占用量大幅减少。

[0049]4、本发明由于只在对图像数据进行乘积计算的步骤中使用了Gamma校正系数,与查找表法相比,当Gamma校正系数改变时,无需更新大量查找表数据,新的Gamma校正系数可以实时反映至输出图像数据中,因而允许对Gamma校正系数进行动态调整。

附图说明
[0050]图1为本发明基于FPGA实现图像数据的实时Gamma校正的流程图;
[0051]图2为本发明对第i次迭代的三个变量x i、y i、z i进行A型正迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1的实现方法的示意图。

具体实施方式
[0052]本实施例中,一种基于FPGA的图像实时Gamma校正方法,是将如式(1)所示的Gamma 校正公式变化为式(2),将不适合使用FPGA计算的幂指数变化为对图像数据进行一次对数计算、一次乘积计算和一次指数计算,既保证了图像数据Gamma校正的精度和实时性,也减少了FPGA逻辑资源和存储资源的占用量。

[0053]L=Vγ (1)
[0054]
[0055]式(1)和式(2)中,V表示归一化的输入图像数据,L表示归一化的输出图像数据,γ表示Gamma校正系数。

[0056]如图1所示,该方法进行图像实时Gamma校正的具体过程如下:
[0057]步骤1、对输入图像数据进行归一化,得到归一化的输入图像数据V;
[0058]步骤2、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的对数函数log2 V;
[0059]步骤2.1、定义当前迭代次数为i,定义总的迭代次数为M1+N1,其中,M1为选取的A型负迭代的次数,N1为选取的A型正迭代的次数;
[0060]步骤2.2、初始化i=-M1+1;
[0061]步骤2.3、利用式(3)初始化第i次迭代的三个变量x i、y i、z i:
[0062]
[0063]步骤2.4、判断i≤0是否成立,若成立,则利用式(4)对第i次迭代的三个变量x i、y i、z i进行A型负迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;否则,利用式(5)对第i次迭代的三个变量x i、y i、z i进行A型正迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1;
[0064]
[0065]
[0066]式(4)和式(5)中,T(δ)表示迭代的逼近幅度数列,并有:
[0067]
[0068]式(4)和式(5)中,d i表示第i次迭代的逼近极性,并有:
[0069]
[0070]步骤2.5、将i+1赋值给i;判断i≥N1是否成立,若成立,则执行步骤2.6;否则,执行步骤2.4;
[0071]步骤2.6、将第N1+1次迭代的变量作为所述对数函数log2V的计算结果;[0072]步骤3、在FPGA内使用乘法器计算归一化的输入图像数据V的乘积γ·log2 V,其中,γ为Gamma校正系数;
[0073]步骤4、在FPGA内使用多次迭代、逐次逼近的方法,计算归一化的输入图像数据V的指数函数从而得到归一化的输出图像数据L;
[0074]步骤4.1、定义当前迭代次数为j,定义总的迭代次数为M2+N2次,其中,M2为选取的B 型负迭代的次数,N2为选取的B型正迭代的次数;
[0075]步骤4.2、初始化j=-M2+1;
[0076]步骤4.3、利用式(8)初始化第j次迭代的三个变量u j、v j、w j:
[0077]
[0078]式(8)中,S表示多次迭代的修正系数,并有:
[0079]
[0080]步骤4.4、判断j≤0是否成立,若成立,则利用式(10)对第j次迭代的三个变量u j、v j、w j进行B型负迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1;否则,利用式(11)对第j次迭代的三个变量u j、v j、w j进行B型正迭代,得到第j+1次迭代的三个变量u j+1、v j+1、w j+1:
[0081]
[0082]
[0083]式(10)和式(11)中,e j表示第j次迭代的逼近极性,并有:
[0084]
[0085]步骤4.5、将j+1赋值给j,并j≥N2是否成立,若成立,则执行步骤4.6;否则返回步骤4.4执行;
[0086]步骤4.6、将第N2+1次迭代的变量作为所述指数函数的运算结果,并记为所述归一化的输入图像数据V的Gamma校正结果L;
[0087]步骤5、对所述Gamma校正结果L进行去归一化,从而得到校正后的图像数据并输出。

[0088]本实施例中,步骤2.4与步骤4.4中的迭代计算基于FPGA硬件资源实现,包括加法器、桶式移位器与查找表。

其中,加法、减法运算是基于FPGA的加法器实现;任意数值与2的幂的乘法是基于FPGA的桶式移位器实现;迭代的逼近幅度数列T(δ)的存储与调用是基于FPGA的查找表实现。

[0089]如图2所示,为步骤2.4中利用式(5)对第i次迭代的三个变量x i、y i、z i进行A型正迭代,得到第i+1次迭代的三个变量x i+1、y i+1、z i+1的实现方法:
[0090]步骤2.4.1、判断变量x i、y i的正负极性是否相同,若极性相同时,根据式(7)得到d i =-1,否则d i=+1;
[0091]步骤2.4.2、将变量x i输入桶式移位器1,向右进行移位,移动位数为i位,得到x′i=x i2-i;
[0092]步骤2.4.3、将x′i与变量y i输入加法器2,当d i=-1时,加法器2进行减法操作,得到输出y i+1=y i-x i2-i,当d i=+1时,加法器2进行加法操作,得到输出y i+1=y i+x i2-i;
[0093]步骤2.4.4、将变量y i输入桶式移位器2,向右进行移位,移动位数为i位,得到y′i=y i2-i;
[0094]步骤2.4.5、将y′i与变量y i输入加法器1,当d i=-1时,加法器1进行减法操作,得到输出x i+1=x i-y i2-i,当d i=+1时,加法器1进行加法操作,得到输出x i+1=x i+y i2-i;
[0095]步骤2.4.6、将迭代次数i输入查找表,查表得到迭代的逼近幅度数列值为T(2-i);[0096]步骤2.4.7、将T(2-i)与变量z i输入加法器3,当d i=-1时,加法器3进行加法操作,得到输出z i+1=z i+T(2-i),当d i=+1时,加法器3进行减法操作,得到输出z i+1=z i-T(2-i)。

[0097]以上所述仅为本发明的优选实施例,并不用于限制本发明,显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神范围,这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

图1
图2
说 明 书 附 图2/2页CN 111815541 A 11。

相关文档
最新文档