图像灰度值调整方法和装置转让专利

申请号 : CN201610817407.2

文献号 : CN107818553B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 那彦波严寒段然

申请人 : 京东方科技集团股份有限公司

摘要 :

公开了图像灰度值调整方法和装置。该方法包括:通过直方图均衡化映射函数,计算图像中的每个像素的灰度值的第一映射值;通过直方图均衡化映射函数,计算每个像素的灰度值减去第一预设值后的第二映射值,如果该灰度值减去第一预设值后超过预设灰度值范围,选取预设灰度值范围的最小值来计算第二映射值;通过直方图均衡化映射函数,计算每个像素的灰度值加上第二预设值后的第三映射值,如果该灰度值加上第二预设值后超过预设灰度值范围,选取所述灰度值范围的最大值来计算第三映射值;基于第一映射值、第二映射值和第三映射值和各自的权重计算每个像素的输出灰度值。实施例可以实现的技术效果包括:不会移除图像中的细节、能够填充直方图中的空隙、能够降低方法复杂度等。

权利要求 :

1.一种图像灰度值调整方法,其特征在于,包括:

通过直方图均衡化映射函数,计算所述图像中的每个像素的灰度值的第一映射值;

通过所述直方图均衡化映射函数,使用所述每个像素的灰度值减去第一预设值后的值来计算第二映射值,如果该灰度值减去第一预设值后的值超过预设灰度值范围,选取所述预设灰度值范围的最小值来计算所述第二映射值;

通过所述直方图均衡化映射函数,使用所述每个像素的灰度值加上第二预设值后的值来计算第三映射值,如果该灰度值加上第二预设值后的值超过所述预设灰度值范围,选取所述预设灰度值范围的最大值来计算所述第三映射值;

基于所述第一映射值、所述第二映射值和所述第三映射值和所述映射值分别对应的权重计算所述每个像素的输出灰度值。

2.根据权利要求1所述的方法,其特征在于,所述第一预设值与所述第二预设值相同。

3.根据权利要求1或2所述的方法,其特征在于,所述第一预设值和所述第二预设值都等于1。

4.根据权利要求1所述的方法,其特征在于,还包括:基于与所述每个像素周围的指定范围内的像素来计算所述权重。

5.根据权利要求4所述的方法,其特征在于,在所述每个像素周围的指定范围内的像素包括至少3个邻近像素。

6.根据权利要求4所述的方法,其特征在于,在所述每个像素周围的指定范围内的像素包括在所述每个像素周围的指定范围内的所有像素或一部分像素。

7.根据权利要求4-6任一所述的方法,其特征在于,所述方法还包括:基于在所述每个像素周围的指定范围内的像素的灰度值等于所述每个像素的灰度值的像素的数量,来确定所述第一映射值的权重;

基于在所述每个像素周围的指定范围内的像素的灰度值小于所述每个像素的灰度值的像素的数量,来确定所述第二映射值的权重;

基于在所述每个像素周围的指定范围内的像素的灰度值大于所述每个像素的灰度值的像素的数量,来确定所述第三映射值的权重。

8.一种图像灰度值调整装置,其特征在于,包括:

用于通过直方图均衡化映射函数,计算所述图像中的每个像素的灰度值的第一映射值的模块;

用于通过所述直方图均衡化映射函数,使用所述每个像素的灰度值减去第一预设值后的值来计算第二映射值的模块,如果该灰度值减去第一预设值后的值超过预设灰度值范围,选取所述预设灰度值范围的最小值来计算所述第二映射值;

用于通过所述直方图均衡化映射函数,使用所述每个像素的灰度值加上第二预设值后的值来计算第三映射值的模块,如果该灰度值加上第二预设值后的值超过所述预设灰度值范围,选取所述预设灰度值范围的最大值来计算所述第三映射值;

用于基于所述第一映射值、所述第二映射值和所述第三映射值和所述映射值分别对应的权重计算所述每个像素的输出灰度值的模块。

9.根据权利要求8所述的装置,其特征在于,所述第一预设值与所述第二预设值相同。

10.根据权利要求8或9所述的装置,其特征在于,所述第一预设值和所述第二预设值都等于1。

11.根据权利要求8所述的装置,其特征在于,还包括用于基于与所述每个像素周围的指定范围内的像素来计算所述权重的模块。

12.根据权利要求11所述的装置,其特征在于,在所述每个像素周围的指定范围内的像素包括至少3个邻近像素。

13.根据权利要求11所述的装置,其特征在于,在所述每个像素周围的指定范围内的像素包括在所述每个像素周围的指定范围内的所有像素或一部分像素。

14.根据权利要求11-13任一所述的装置,其特征在于,所述装置还包括:用于基于在所述每个像素周围的指定范围内的像素的灰度值等于所述每个像素的灰度值的像素的数量,来确定所述第一映射值的权重的模块;

用于基于在所述每个像素周围的指定范围内的像素的灰度值小于所述每个像素的灰度值的像素的数量,来确定所述第二映射值的权重的模块;

用于基于在所述每个像素周围的指定范围内的像素的灰度值大于所述每个像素的灰度值的像素的数量,来确定所述第三映射值的权重的模块。

说明书 :

图像灰度值调整方法和装置

技术领域

[0001] 本公开的实施例涉及信息技术,更具体地涉及图像灰度值调整方法和装置。

背景技术

[0002] 近年来,随着电子技术和图像处理技术的飞速发展,图像或视觉系统广泛地应用于各种行业,诸如交通监控、驾驶辅助系统、公共安全、边防海关、体育赛事报道、事件检测、跟踪、场景分析和分类、对象检测和识别、图像索引和检索等诸多领域。在大多数的图像或视觉处理应用/系统中,诸如数字摄影、医学图像分析、遥感、LCD显示处理、以及科学可视化等,图像对比度调节可以起到关键的作用。
[0003] 一般而言,存在若干原因导致图像/视频具有较差的对比度(例如,图像的灰度值分布比较集中),例如,所使用的成像设备的质量较差、操作者缺乏经验、在获取图像时的不利的外部条件(诸如,雨、雪、烟、雾、灰尘、沙尘等)等。这些原因可能导致所获取的图像的动态范围较小。因此,此类图像或视频可能不能显示所捕获的场景中的全部细节,并且所捕获的图像可能呈现褪色和不自然的样子。此外,一些图像的灰度值可能分布集中在较窄的区间,也会引起图像细节不够清晰。例如,一幅过度曝光的图片,其灰度级都集中在高亮度范围内,而曝光不足的图片,其灰度级集中在低亮度范围内。一般而言,可以采用对比度增强技术(诸如直方图均衡化)以使得图像的灰度值间距拉开或使灰度值分布均匀,从而增大对比度的动态范围,使图像细节清晰,达到增强的目的。
[0004] 然而,对比度增强技术(例如,直方图均衡化技术)可能会导致输出直方图中存在空隙、导致过度的增强输出、不能提供控制参数和/或不能控制噪声和带状干扰等问题。
[0005] 因此需要一种改进的图像灰度值调整方案。

发明内容

[0006] 根据本公开的一个方面,公开了一种图像灰度值调整方法。该方法包括:通过直方图均衡化映射函数,计算所述图像中的每个像素的灰度值的第一映射值;通过所述直方图均衡化映射函数,计算所述每个像素的灰度值减去第一预设值后的第二映射值,如果该灰度值减去第一预设值后超过预设灰度值范围,选取所述预设灰度值范围的最小值来计算所述第二映射值;通过所述直方图均衡化映射函数,计算所述每个像素的灰度值加上第二预设值后的第三映射值,如果该灰度值加上第二预设值后超过所述预设灰度值范围,选取所述预设灰度值范围的最大值来计算所述第三映射值;基于所述第一映射值、所述第二映射值和所述第三映射值和各自的权重计算所述每个像素的输出灰度值。
[0007] 在一个实施例中,所述第一预设值与所述第二预设值相同。
[0008] 在一个实施例中,所述第一预设值和所述第二预设值都等于1。
[0009] 在一个实施例中,所述方法还包括:基于与所述每个像素周围的指定范围内的像素来计算所述权重。
[0010] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括至少3个邻近像素。
[0011] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括在所述每个像素周围的指定范围内的所有像素或一部分像素。
[0012] 在一个实施例中,所述方法还包括:基于在所述每个像素周围的指定范围内的像素的灰度值等于所述每个像素的灰度值的像素的数量,来确定所述第一映射值的权重;基于在所述每个像素周围的指定范围内的像素的灰度值小于所述每个像素的灰度值的像素的数量,来确定所述第二映射值的权重;基于在所述每个像素周围的指定范围内的像素的灰度值大于所述每个像素的灰度值的像素的数量,来确定所述第三映射值的权重。
[0013] 根据本公开的另一个方面提供了一种图像灰度值调整装置。所述装置包括:用于通过直方图均衡化映射函数,计算所述图像中的每个像素的灰度值的第一映射值的模块;用于通过所述直方图均衡化映射函数,计算所述每个像素的灰度值减去第一预设值后的第二映射值的模块,如果该灰度值减去第一预设值后超过预设灰度值范围,选取所述预设灰度值范围的最小值来计算所述第二映射值;用于通过所述直方图均衡化映射函数,计算所述每个像素的灰度值加上第二预设值后的第三映射值的模块,如果该灰度值加上第二预设值后超过所述预设灰度值范围,选取所述预设灰度值范围的最大值来计算所述第三映射值;用于基于所述第一映射值、所述第二映射值和所述第三映射值和各自的权重计算所述每个像素的输出灰度值的模块。
[0014] 在一个实施例中,所述第一预设值与所述第一预设值相同。
[0015] 在一个实施例中,所述第一预设值和所述第一预设值都等于1。
[0016] 在一个实施例中,所述装置还包括用于基于与所述每个像素周围的指定范围内的像素来计算所述权重的模块。
[0017] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括至少3个邻近像素。
[0018] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括在所述每个像素周围的指定范围内的所有像素或一部分像素。
[0019] 在一个实施例中,所述装置还包括:用于基于在所述每个像素周围的指定范围内的像素的灰度值等于所述每个像素的灰度值的像素的数量,来确定所述第一映射值的权重的模块;用于基于在所述每个像素周围的指定范围内的像素的灰度值小于所述每个像素的灰度值的像素的数量,来确定所述第二映射值的权重的模块;用于基于在所述每个像素周围的指定范围内的像素的灰度值大于所述每个像素的灰度值的像素的数量,来确定所述第三映射值的权重的模块。
[0020] 上述所述的方法和装置的实施例可以实现的技术效果包括:不会移除图像中的细节、能够填充灰度直方图中的空隙、能够降低方法的复杂度、节省计算和/或存储资源。

附图说明

[0021] 图1示出了可以使用本公开的实施例的装置的框图。
[0022] 图2示出了根据本公开的实施例的方法的流程图。
[0023] 图3A和图3B示出了在每个像素周围的指定范围内的像素的示意图。
[0024] 图4示出了根据本公开的实施例的装置的框图。
[0025] 图5(a)至图5(f)示出了根据本公开的实施例的方法和图像均衡化的方法对图像灰度值进行调整的结果。
[0026] 图6示出了通过直方图均衡化方法对图像进行处理的结果。

具体实施方式

[0027] 下面参照附图描述本公开的实施例。在下面的描述中,阐述了许多具体细节以便使所属技术领域的技术人员更全面地了解和实现本公开。但是,对所属技术领域的技术人员明显的是,可以在不具有这些具体细节中的一些具体细节的情况下来实现本公开的实施例。此外,应当理解的是,本公开并不局限于所介绍的特定实施例。相反,可以考虑用下面所述的特征和要素的任意组合来实施本公开的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用,而不应看作是权利要求的要素或限定,除非在权利要求中明确提出。
[0028] 针对数字电视的现代标准(诸如BT.2020)将图像的位深增加到至少10比特/像素。这是受现代显示面板的能力所激励的,以便覆盖高动态范围(例如,>1000cd/m2)。在高动态范围显示器(HDR)领域中,一种受欢迎的特征是增强输入图像的动态范围以揭露更多数量的细节并产生更好的用户体验。标准的对比度增强器(诸如,对灰度值的范围进行简单地重新调节以覆盖100%的亮度级别)不适合于此类应用,因为它们会产生许多不希望的效果,诸如在视频中的图像闪烁、色带、和颗粒状噪声。
[0029] 直方图映射技术(诸如,直方图均衡化(HEQ))是一种常用的图像对比度调整方法,它能够将输入图像Y的像素灰度值重新分布到不同的值。在直方图映射技术中,通常使用映射函数 来实现,其中B1和B2是图像的位深。针对每个输入像素的灰度值Y[i,j],通过下式给出输出像素的灰度值Out[i,j]=T[Y[i,j]]。
[0030] 图6示出了通过直方图均衡化方法对图像进行处理的结果。如图6示出的,HEQ能够均匀地分布像素的灰度值,并且产生类似于线性增加的CDF(累积分布函数)。HEQ能够产生最大可能的动态范围,但是它常常导致过度的增强输出,不能提供控制参数并且不能控制噪声和带状干扰。如在图6中示出的,HEQ的一个特定问题是,它不使用中间的值。这可以导致所产生的图像直方图存在空隙(如图6中的箭头101所指示的),以及在CDF中的显著改变(如图6中的箭头105所指示的)。
[0031] 以下参考文献1提供了对直方图均衡化(HEQ)的改进技术:T.Arici,S.Dikbas,and Y.Altunbasak,“A Histogram Modification Framework and Its Application for Image Contrast Enhancement.”IEEE Trans.On Image Processing,Vol.18,No.9,pp.1921-1935,September 2009,通过引用将该文献的全部内容并入本文。在该参考文献中,映射函数被设计为降低输出直方图中的空隙。虽然参考文献1的技术方案能够控制直方图中的空隙的大小,但是不能够避免空隙。此外,如低通滤波器(LPF)、双边滤波器、中值滤波器等也是不适用的,因为经过它们处理的图像会降低输出图像中的细节。
[0032] 本公开的实施例提供了一种改进的图像灰度值处理的技术方案。该技术方案可以至少减轻或避免上述问题中的一个或多个问题。
[0033] 需要注意的是,虽然下文中主要在单个图像的上下文中来介绍本公开的实施例,但是应当理解的是本公开的实施例同样可以应用于视频,例如应用于显示器中的图像处理电路。还需要说明的是,本文中的实施例不但可以应用于处理非实时的图像或视频,而且可以应用于处理实时的图像或视频。另外,还需要注意的是,在本文中的图像可以是彩色图像也可以是灰度图像。
[0034] 在全文中,相同的标记指相同的元素。如本文所使用的,词语“数据”、“内容”、“信息”以及类似的词语可交换地使用,以指依照本公开的实施例能够被传送、接收和/或存储的数据。因此,任何此类词语的使用不应当被认为是限制本公开的实施例的精神和范围。
[0035] 另外,如本文所使用的,词语‘电路’指:(a)仅硬件电路实现方式(例如,在模拟电路和/或数字电路中的实现方式);(b)电路和计算机程序产品(多个)的组合,所述计算机程序产品(多个)包括:存储在一个或多个计算机可读存储器上的软件和/或固件指令,所述组合一起工作以使得装置执行本文描述的一个或多个功能;以及(c)要求用于运行的软件或固件的电路(诸如例如,微处理器(多个)或微处理器(多个)的一部分),即使所述软件或固件不是物理呈现的。‘电路’的这种定义应用于本文中(包括在任何权利要求中)的这个词语的所有使用。作为进一步示例,如本文所使用的,词语‘电路’还包含:包括一个或多个处理器和/或其部分(多个)并且伴随有软件和/或固件的实现方式。
[0036] 图1示出了根据至少一个示例实施例的装置(诸如电子装置10)的框图。然而,应当理解的是,在本文中说明的以及在下文中描述的电子装置仅是说明可以受益于本公开的实施例的电子装置,以及因此不应当被认为是限制本公开的范围。虽然出于示例的目的,说明了并且将在下文中将描述电子装置10,但是其它类型的电子装置可以容易地利用本公开的实施例。电子装置10可以是显示器、电视机、投影机、便携式数字助理(PDA),移动计算机,台式计算机、智能电视,游戏装置,便携式计算机,媒体播放器、相机,视频记录器、移动电话、全球定位系统(GPS)装置、智能眼镜、车载导航系统、视频监控系统、智能电话、平板计算机、膝上型计算机、服务器、瘦客户端、云计算机、虚拟计算机、机顶盒、计算设备、分布式系统和/或任何其它类型的电子系统。电子装置10可以运行任何类型的操作系统,其包括但不限于Windows、Linux、UNIX、Android、iOS以及它们的变体。此外,在其它示例实施例中,至少一个示例实施例的电子装置不需要是整个电子装置,而是可以是电子装置的组件或组件组。
[0037] 此外,电子装置10可以容易地利用本公开的实施例而不管该电子装置是移动的还是固定的。例如,可以结合显示器图像处理应用描述本公开的实施例,但是本公开的实施例也可以应用于任何其它可以适用的应用。
[0038] 在至少一个示例实施例中,电子装置10包括处理器11和存储器12。处理器11可以是任何类型的处理器、控制器、嵌入式控制器、处理器核心、和/或诸如此类。在至少一个示例实施例中,处理器11使用计算机程序代码以使得电子装置10执行一个或多个动作。存储器12可以包括:易失性存储器,诸如易失性随机存取存储器(RAM)(其包含用于数据的临时存储的缓存区域),和/或其它存储器,例如,非易失性存储器,其可以是嵌入式的和/或可以是可移动的。非易失性存储器可以包括:EEPROM、闪速存储器和/或诸如此类。存储器12可以存储任何数量的信息片段,以及数据。信息和数据可以由电子装置10使用以实现电子装置10的一个或多个功能,诸如本文中描述的功能。在至少一个示例实施例中,存储器12包括:
计算机程序代码。存储器和计算机程序代码被配置为与处理器一起工作使得电子装置执行本文中描述的一个或多个动作。
[0039] 电子装置10还可以包括:通信模块15。在至少一个示例实施例中,通信模块15包括:天线(或多个天线)、有线连接器、和/或诸如此类,它们与传送器和/或接收器操作地通信。在至少一个示例实施例中,处理器11提供信号给传送器和/或从接收器接收信号。信号可以包括:根据通信接口标准的信令信息、用户语音、接收的数据、用户生成的数据、和/或诸如此类。通信模块15可以使用一个或多个空中接口标准、通信协议、调制类型、和接入类型进行操作。作为说明,通信模块15可以根据以下协议进行操作:第二代(2G)无线通信协议IS-136(时分多址接入(TDMA)),全球移动通信系统(GSM),以及IS-95(码分多址接入(CDMA)),第三代(3G)无线通信协议,诸如通用移动通信系统(UMTS),CDMA2000,宽带CDMA(WCDMA)和时分同步CDMA(TD-SCDMA),和/或第四代(4G)无线通信协议,无线联网协议(诸如802.11),短距无线协议(诸如蓝牙)和/或诸如此类。通信模块15可以依照有线协议进行操作,诸如以太网、数字用户线路(DSL)、异步转移模式(ATM)和/或诸如此类。
[0040] 处理器11可以包括诸如电路的模块,该构件用于实现音频、视频、通信、导航、逻辑功能、和/或诸如此类,以及用于实现本公开的实施例,其包括例如本文中描述的功能中的一个或多个功能。例如,处理器11可以包括用于执行各种功能(其包括例如本文中描述的一个或多个功能)的模块,诸如数字信号处理器、微处理器、各种模拟至数字转换器、数字至模拟转换器、处理电路和其它支持电路。电子装置10可以执行控制和信号处理功能。处理器11可以包括:在调制和传输之前对消息和数据进行编码和交织的功能。处理器11还可以包括内部语音编码器,可以包括内部数据调制解调器。此外,处理器11可以包括操作一个或多个软件程序,该软件程序可被存储在存储器中,以及该软件程序可以使得处理器11实现至少一个实施例,例如本文中描述的功能中的一个或多个功能。例如,处理器11可以操作连通性程序,诸如常规网络浏览器。连通性程序可以允许电子装置10根据以下协议来传送和接收网络内容(诸如基于位置的内容和/或其它网页内容):例如传输控制协议(TCP)、互联网协议(IP)、用户数据包协议(UDP)、互联网消息访问协议(IMAP)、邮局协议(POP)、简单邮件传输协议(SMTP)、无线应用协议(WAP)、超文本传输协议(HTTP)和/或诸如此类。
[0041] 电子装置10可以包括:用户接口,该用户接口用于提供输出和/或接收输入。电子装置10可以包括输出设备14。输出设备14可以包括:音频输出设备,诸如振铃器、耳机、扬声器、和/或诸如此类。输出设备14可以包括:触感输出设备,诸如振动传感器、电变形表面、电变形结构、和/或诸如此类。输出设备14可以包括:可视化输出设备,诸如显示器、灯、和/或诸如此类。电子装置可以包括:输入设备13。输入设备13可以包括:光传感器、接近传感器、麦克风、触摸传感器、力传感器、按钮、小键盘、运动传感器、磁场传感器、运动传感器、相机、和/或诸如此类。在包括触摸显示器的实施例中,触摸显示器可以被配置为接收来自单点触摸、多点触摸和/或诸如此类的输入。在此类实施例中,触摸显示器和/或处理器可以至少部分地基于方位、运动、速度、接触区域和/或诸如此类来确定输入。
[0042] 电子装置10可以包括各种触摸显示器,例如,该触摸显示器被配置为使得能够通过各种电阻式、电容式、红外线、应变仪(strain gauge)、表面波、光学成像、色散信号技术、声脉冲识别和/或其它技术的触摸识别以及然后提供指示与触摸相关联的位置和其它参数的信号。另外,触摸显示器可以被配置为接收以触摸事件的形式的输入的指示,触摸事件可以被定义为在选择对象(例如,手指、触针、触笔或其它定点设备)和触摸显示器之间的实际物理触摸。触摸输入可以包括由触摸显示器检测的任何输入,其包括涉及实际物理接触的触摸事件和不涉及物理接触但是以其它方式被触摸显示器检测的触摸事件。触摸显示器能够接收与触摸输入有关的与应用于触摸屏的力相关联的信息。例如,触摸屏可以在重压触摸输入和轻压触摸输入之间进行区分。在至少一个示例实施例中,显示器可以显示二维信息、三维信息和/或诸如此类。
[0043] 输入设备13可以包括媒体捕获元件。媒体捕获元件可以是用于捕获用于存储、显示或传输的图像、视频、和/或音频的任何构件。例如,在至少一个示例实施例(其中,媒体捕获元件是相机模块)中,相机模块可以包括数字相机,其可以从捕获的图像形成数字图像文件。因此,相机模块可以包括:用于从捕获的图像创建数字图像所需要的硬件(诸如镜头或其它光学组件(多个))和/或软件。可替代地,相机模块可以包括:仅用于查看图像的硬件,而电子装置10的存储设备以软件的形式存储用于由处理器11执行的指令,该指令用于从捕获的图像创建数字图像。在至少一个示例实施例中,相机模块还可以包括:处理元件(诸如协处理器)和编码器和/或解码器,处理元件协助处理器11来处理图像数据,编码器和/或解码器用于压缩和/或解压缩图像数据。编码器和/或解码器可以根据标准格式(诸如联合图像专家组(JPEG)标准格式、运动图像专家组(MPEG)标准格式、视频编码专家组(VCEG)标准格式或任何其它合适的标准格式)进行编码和/或解码。
[0044] 图2示出了根据本公开的实施例的图像灰度值调整方法200的流程图,可以在诸如图1的电子装置10的装置处来执行方法200。因此,电子装置10可以提供用于实现方法200的各个部分的模块以及用于实现电子装置10的其它功能的模块。
[0045] 如在图2中示出的,方法200从框201开始。在框201中,通过直方图均衡化映射函数,计算图像中的每个像素的灰度值的第一映射值。图像可以是预先存储在电子装置10的存储器中的图像,或例如通过图像传感器实时捕获的图像,或从本地位置或网络位置获取的图像。例如,在电子装置10被包含在HDR显示器的实例中,电子装置10可以通过HDR显示器的显示接口来接收例如来自图像输出设备(例如,图像处理器(诸如显卡)、视频播放器等)的图像。
[0046] 图像可以是彩色图像或灰度图像。彩色图像可以包括任何颜色模型的图像,例如,RGB颜色模型、HSL颜色模型、CMYK颜色模型等。图像的格式包括但不限于:bmp,jpg,jpeg,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw或其它合适的格式。
[0047] 直方图均衡化映射函数可以是任何现有的或将来开发的任何合适的直方图均衡化映射函数。例如,直方图均衡化映射函数可以被表示为: 其中B1和B2是图像的位深。B1和B2可以相同,也可以不同。一般而言,B1≤B2。在其它实施例中,B1>B2。
针对每个输入像素Y[i,j],可以通过下式计算图像中的每个像素的灰度值的第一映射值:
Vcur=T[Y[i,j]],其中Vcur表示第一映射值,T[]表示直方图均衡化映射函数,如上所述,T[]可以具有任何合适的直方图均衡化映射函数形式。
[0048] 在框203中,通过直方图均衡化映射函数,计算每个像素的灰度值减去第一预设值后的第二映射值,如果该灰度值减去第一预设值后超过预设灰度值范围,选取预设灰度值范围的最小值来计算第二映射值。可以通过各种合适的方法来确定第一预设值,例如第一预设值可以是预定的值,由用户来指定的值,通过在训练数据集上进行机器学习而确定的值,或根据用户的偏好而确定的值,诸如此类。作为示例,第一预设值可以是1。当确定了第一预设值后,可以使用如在框201中使用的相同的直方图均衡化映射函数来计算第二映射值。
[0049] 作为示例,灰度值的范围可以表示为2BitDepth-1,其中BitDepth表示位深。例如,如果BitDepth=8,则灰度值的范围为0-255。在HDR显示器中,灰度值的范围可以为0到210-1。此外,在其它实施例中,灰度值的范围也可以是任何其它合适的范围。
[0050] 在这个实施例中,如果该灰度值减去第一预设值后超过预设灰度值范围,选取预设灰度值范围的最小值来计算第二映射值。例如,假设灰度值范围为0-255,像素的灰度值为0,第一预设值为1,在这种情况下,比灰度值0小第一预设值1的灰度值为-1,-1并不在灰度值范围内,因此可以选择灰度值范围的最小值0来计算第二映射值。
[0051] 在这个实施例中,针对每个输入像素Y[i,j],可以通过下式计算第二映射值:Vprev=T[max(Y[i,j],r2)-r2],其中Vprev表示第二映射值,r2表示第一预设值,T[]表示直方图均衡化映射函数并且可以与计算第一映射值的直方图均衡化映射函数相同,max(Y[i,j],r2)表示取Y[i,j]和r2中的较大值。
[0052] 在框205中,通过直方图均衡化映射函数,计算每个像素的灰度值加上第二预设值后的第三映射值,如果该灰度值加上第二预设值后超过预设灰度值范围,选取预设灰度值范围的最大值来计算第三映射值。
[0053] 与第一预设值类似,可以通过各种合适的方法来确定第二预设值,例如第二预设值可以是预定的值,由用户指定的值,通过在训练数据集上进行机器学习而确定的值,或根据用户的偏好而确定的值,诸如此类。作为示例,第二预设值可以是1。当确定了第二预设值后,可以使用如在框201和203中使用的相同的直方图均衡化映射函数来计算第三映射值。
[0054] 在这个实施例中,如果该灰度值加上第二预设值后超过预设灰度值范围,选取预设灰度值范围的最大值来计算第三映射值。例如,假设灰度值范围为0-255,像素的灰度值为255,第二预设值为1,在这种情况下,比灰度值255大第二预设值1的灰度值为256,256并不在灰度值范围0-255内,因此可以选择灰度值范围的最大值255来计算第二映射值。
[0055] 在这个实施例中,针对每个输入像素Y[i,j],可以通过下式计算第三映射值:Vnext=T[min(Y[i,j]+r3,2B-1)],其中Vnext表示第三映射值,r3表示第二预设值,T[]表示直方图均衡化映射函数并且可以与计算第一映射值和第二映射值的直方图均衡化映射函数相同,min(Y[i,j]+r3,2B-1)表示取Y[i,j]+r3和2B-1中的较小值,其中B表示图像的灰度值位深。
[0056] 需要注意的是,第一预设值与第二预设值可以相同,也可以不相同。一般而言,第一预设值与第二预设值通常选取大于0的整数,并且可以是较小的数值。在一个实施例中,第一预设值与第二预设值可以都等于1。
[0057] 此外,框201、203和205可以同时执行或顺序执行。例如,在支持并行处理的情况下,可以同时执行框201、203和205,在不支持并行处理的情况下,可以顺序地执行框201、203和205。另外,在顺序执行的情况下,可以对框201、203和205的执行顺序不做限制。
[0058] 在计算了第一映射值、第二映射值和第三映射值后,在框207,可以基于第一映射值、第二映射值和第三映射值和各自的权重来计算每个像素的输出灰度值。
[0059] 在这个实施例中,第一映射值、第二映射值和第三映射值各自的权重可以是预定的值,由用户指定的值,通过在训练数据集上进行机器学习而确定的值,或根据用户的偏好而确定的值,诸如此类。
[0060] 在这个实施例中,可以采用基于第一映射值、第二映射值和第三映射值和各自的权重的任何合适的等式来计算输出灰度值。在一个实施例中,可以采用以下等式来计算输出灰度值:
[0061] Out[i,j]=C2·Vprev+C1·Vcur+C3·Vnext
[0062] 其中Out[i,j]为输出灰度值,C1、C2和C3分别是第一映射值、第二映射值和第三映射值的权重,Vcur、Vprev和Vnext分别是第一映射值、第二映射值和第三映射值。在其它实施例中,也可以采用任何其它合适的等式形式来计算输出灰度值。
[0063] 在一个实施例中,方法200还包括:基于与每个像素周围的指定范围内的像素来计算权重。例如,在计算权重中,可以考虑每个像素周围的指定范围内的像素的灰度值的统计特征或其它合适的特征,来计算权重。指定范围可以具有任何合适的形状,例如矩形、圆形、或其它规则的形状。另外,指定范围也可以是不规则的形状。此外,指定范围可以是连续的区域,也可以是由多个不连续的区域组成。在一个实施例中,指定范围可以是以每个像素为中心的正方形或矩形区域。指定范围可以是预定的、用户指定的、根据设备的计算能力而设置的、根据图像的特点设置的、或诸如此类。
[0064] 在一个实施例中,在每个像素周围的指定范围内的像素可以包括至少3个像素。例如,在每个像素周围的指定范围内的像素可以包括每个像素的上方、左方、右方的三个像素,或包括上方、左方、右方、下方的不只三个像素。
[0065] 在一个实施例中,在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的所有像素或一部分像素。例如,可以在指定范围中均匀地选取部分像素。在选取部分像素的情况下,可以节省计算资源、提高计算速度、便于在计算和/或存储能力较差的设备上应用本公开的实施例。
[0066] 图3A和图3B示出了在每个像素周围的指定范围内的像素的示意图。图3A示出了在每个像素周围的指定范围内选择所有像素的示意图,图3B示出了在每个像素周围的指定范围内选择部分像素的示意图。在3A和图3B中,箭头所指示的像素为待计算灰度值的像素,指定范围为16x16的网格(其包括256个像素),正方形小方块表示像素,填充了黑色的小方块表示选择的像素,而未填充的小方块表示没有被选择的像素。在3A中,网格包括256个选择的像素,而在图3B中,网格包括36个选择的像素。因此,显而易见的是,在计算权重的过程中,选择指定范围内的一部分像素可以显著地提高计算效率,并且对计算结果不会有太大的影响。因此,取决于不同的应用场景,可以相应地选择指定范围内的全部像素或部分像素。例如,在对实时性要求较高的场景,或设备的计算能力和/或存储能力较差的情况下,可以采用选择指定范围内的一部分像素来计算权重。而在对准确性要求较高的情况下,可以采用选择指定范围内的全部像素来计算权重。
[0067] 在一个实施例中,方法200还包括:基于在每个像素周围的指定范围内的像素的灰度值等于每个像素的灰度值的像素的数量,来确定所述第一映射值的权重。在这个实施例中,可以如下来计算第一映射值的权重C1: 其中N表示在每个像素周围的指定范围内的像素的数量,例如,在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的所有像素的情况下,N可以等于所有像素的数量,而在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的一部分像素的情况下,N可以等于一部分像素的数量。Ccur表示在每个像素周围的指定范围内的像素的灰度值等于该每个像素的灰度值的像素的数量。在其它实施例中,也可以采用基于Ccur的任何其它合适的形式来计算C1。
[0068] 在一个实施例中,方法200还包括:基于在每个像素周围的指定范围内的像素的灰度值小于该每个像素的灰度值的像素的数量,来确定第二映射值的权重。在这个实施例中,可以如下来计算第二映射值的权重C2: 其中N表示在每个像素周围的指定范围内的像素的数量,例如,在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的所有像素的情况下,N可以等于所有像素的数量,而在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的一部分像素的情况下,N可以等于一部分像素的数量。Cprev表示在每个像素周围的指定范围内的像素的灰度值小于该每个像素的灰度值的像素的数量。在其它实施例中,也可以采用基于Cprev的任何其它合适的形式来计算C2。
[0069] 在一个实施例中,方法200还包括:基于在每个像素周围的指定范围内的像素的灰度值大于该每个像素的灰度值的像素的数量,来确定第三映射值的权重。在这个实施例中,可以如下来计算第三映射值的权重C3: 其中N表示在每个像素周围的指定范围内的像素的数量,例如,在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的所有像素的情况下,N可以等于所有像素的数量,而在每个像素周围的指定范围内的像素包括在每个像素周围的指定范围内的一部分像素的情况下,N可以等于一部分像素的数量。Cnext表示在每个像素周围的指定范围内的像素的灰度值大于该每个像素的灰度值的像素的数量。在其它实施例中,也可以采用基于Cnext的任何其它合适的形式来计算C3。
[0070] 在一个实施例中,在确定了权重C1、C2和C3后,可以通过如下公式来计算输出像素的灰度值:
[0071]
[0072] 其中Vcur、Vprev和Vnext分别表示第一映射值、第二映射值和第三映射值。
[0073] 可以通过如下伪代码来描述方法200:
[0074]
[0075] 其中,在上述伪代码中,第一预设值和第二预设值被设置为等于1。
[0076] 基于与上述方法相同的发明构思,本公开还提供了一种图像灰度值调整装置。图4示意性地示出了根据本公开的实施例的装置400。装置400可以包括用于执行上述方法200的步骤的模块。针对与前述实施例相同的部分,适当地省略它们的描述。
[0077] 在一个实施例中,装置400包括,模块402,其通过直方图均衡化映射函数,计算所述图像中的每个像素的灰度值的第一映射值;模块404,其通过所述直方图均衡化映射函数,计算所述每个像素的灰度值减去第一预设值后的第二映射值,如果该灰度值减去第一预设值后超过预设灰度值范围,选取所述预设灰度值范围的最小值来计算所述第二映射值;模块406,其通过所述直方图均衡化映射函数,计算所述每个像素的灰度值加上第二预设值后的第三映射值,如果该灰度值加上第二预设值后超过所述预设灰度值范围,选取所述预设灰度值范围的最大值来计算所述第三映射值;模块408,其基于所述第一映射值、所述第二映射值和所述第三映射值和各自的权重来计算所述每个像素的输出灰度值。
[0078] 在一个实施例中,所述第一预设值与所述第二预设值相同。
[0079] 在一个实施例中,所述第一预设值和所述第二预设值都等于1。
[0080] 在一个实施例中,所述装置还包括用于基于与所述每个像素周围的指定范围内的像素来计算所述权重的模块(未示出)。
[0081] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括至少3个邻近像素。
[0082] 在一个实施例中,在所述每个像素周围的指定范围内的像素包括在所述每个像素周围的指定范围内的所有像素或一部分像素。
[0083] 在一个实施例中,装置400还包括:用于基于在所述每个像素周围的指定范围内的像素的灰度值等于所述每个像素的灰度值的像素的数量,来确定所述第一映射值的权重的模块(未示出);用于基于在所述每个像素周围的指定范围内的像素的灰度值小于所述每个像素的灰度值的像素的数量,来确定所述第二映射值的权重的模块(未示出);用于基于在所述每个像素周围的指定范围内的像素的灰度值大于所述每个像素的灰度值的像素的数量,来确定所述第三映射值的权重的模块(未示出)。
[0084] 图5(a)至图5(f)示出了根据本公开的实施例的方法和图像均衡化的方法对图像灰度值进行调整的结果。图5(a)表示原始图像;图5(b)表示通过直方图均衡化对图5(a)的图像进行处理的结果;图5(c)表示根据本公开的实施例的方法的结果;以及图5(d)-(f)分别为图5(a)-(c)的图像的灰度直方图和CDF图。其中原始图像为256x256大小的图像,在根据本公开的实施例的方法中,每个像素周围的指定范围被设置为8x8像素,第一预设值和第二预设值被设置为等于1。从图5(e)可以看出,尽管直方图均衡化的方法能够使得像素的灰度值均匀地分布在更大的范围中,但是在直方图中存在较大的间隙,并且CDF图中存在显著的变化,而这种间隙的存在或CDF图中的显著变化导致了图5(b)的图像中的色带和颗粒状噪声。从图5(f)可以看出,根据本公开的实施例的方法能够填充直方图中的空隙,并且CDF图近似为一条直线而没有显著的变化,从图5(c)可以看出,根据本公开的实施例的方法处理的图像中的色带已经被软化,并且图像中的颗粒状噪声也得到了降低。
[0085] 根据本公开的实施例的方法具有至少以下优点:
[0086] 1)由于本公开的实施例的方法使用直方图均衡化映射函数,因此不会移除图像中的细节。
[0087] 2)能够填充灰度直方图中的空隙,降低灰度CDF图中显著的变化。
[0088] 3)由于采用权重,因此本公开的实施例的方法对每个像素周围的指定范围的大小以及像素的数量并不敏感。一般而言,指定范围中包括至少3个像素就足以使得本公开的实施例能够产生期望的效果。
[0089] 4)由于本公开的实施例的方法可以选择每个像素周围的指定范围内的一部分像素,从而能够降低方法的复杂度,进而节省计算和/或存储资源,使得能够在计算/存储资源受限的设备上使用本公开的方法。另外,由于根据本公开的实施例的方法的复杂度的降低,相应地能够提高图像的处理速度,使得能够快速地处理高分辨率的图像,或促进在诸如FPGA的硬件设备中实现本公开的实施例的方法。
[0090] 根据本公开的实施例的方法与诸如中值滤波器或低通滤波器的其它方法的区别在于:本公开的实施例的方法使用了三个映射值(即,第一映射值、第二映射值和第三映射值)的加权。由于三个映射值的计算基于直方图均衡化映射函数,因此如果在映射值之间的间隙是0(如这种情况可以发生在具有许多细节的区域中),则输出的像素将不会显著的变化。当映射值之间的间隙较大(如这种情况可以发生在具有颗粒状噪声或色带的区域中)时,输出像素的灰度值将被软化,从而可以减轻或避免色带和/或颗粒状噪声。
[0091] 注意的是,以上描述的装置的组件中的任何组件可以被实现为硬件、软件模块或其组合。在软件模块的情况下,可以将它们包含在有形的计算机可读可记录存储介质上。所有软件模块(或其任何子集)可以在相同的介质上,或每个软件模块可以在不同的介质上。软件模块可以运行在硬件处理器上。使用运行在硬件处理器上的不同的软件模块来执行方法步骤。
[0092] 另外,本公开的一个方面可以使用在通用计算机或工作站上运行的软件。此类实现方式可以使用例如处理器、存储器和例如由显示器和键盘形成的输入/输出接口。如本文中使用的词语“处理器”旨在包含任何处理设备,诸如处理器包含CPU(中央处理器)和/或其它形式的处理电路。此外,词语“处理器”可以指不只一个处理器。词语“存储器”旨在包含与处理器或CPU相关联的存储器,诸如RAM(随机访问存储器)、ROM(只读存储器)、固定存储器(例如,硬盘)、可移动存储设备(例如,磁盘)、闪速存储器等。处理器、存储器和输入/输出接口(诸如显示器和键盘)可以例如经由总线互连。
[0093] 因此,计算机软件(其包含用于执行如本文所描述的本公开方法的指令和代码)可以存储在相关联的存储器设备中的一个或多个相关联的存储器设备中,并且当准备好被使用时,被部分地或全部地加载(例如加载到RAM中)并由CPU执行。此类软件可以包括但不限于固件、驻留软件、微码、以及诸如此类。计算机软件可以是使用任何编程语言编写而成的计算机软件,以及可以是以源代码、目标代码或在源代码和目标代码之间的中间代码的形式,诸如以部分编译的形式,或以任何其它期望的形式。
[0094] 本公开的实施例可以采用包含在计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有在其上包含的计算机可读程序代码。此外,可以使用任何组合的计算机可读介质。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是但不限于电、磁、电磁、光或其它存储介质,以及可以是可移动的介质或被固定地安装在装置和设备中的介质。此类计算机可读介质的非限制性示例是RAM、ROM、硬盘、光盘、光纤等。计算机可读介质可以例如是有形的介质,例如,有形的存储介质。
[0095] 本文所使用的词语仅是出于描述特定实施例的目的,并且不是意在限制实施例。如本文所使用的,单数形式“一个”、“一种”和“所述”意味着也包含复数形式,除非上下文中清楚地另外指明。还应当理解的是,当在本文使用时,词语“包括”、“具有”、“包含”和/或“含有”指存在所阐明的特征、数字、步骤、操作、元素和/或组件,但是不排除存在或附加一个或多个其它特征、数字、步骤、操作、元素、组件和/或其组合。
[0096] 还应当注意的是,在一些可替代实现方式中,所阐明的功能/动作可以不按附图中所阐明的顺序发生。如果需要,可以以不同的顺序和/或彼此并发地执行本公开中所描述的不同功能。此外,如果需要,上述功能中的一个或多个功能可以是非必须的或可以被组合。
[0097] 尽管以上参照附图描述了本公开的实施例,但是本领域的技术人员可以理解以上描述仅为示例,而不是对本公开的限制。可以对本公开的实施例进行各种修改和变型,而仍落入本公开的精神和范围之内,本公开的范围仅由所附权利要求书确定。