CN108027963A - 抖动引导lut输出值内插 - Google Patents
抖动引导lut输出值内插 Download PDFInfo
- Publication number
- CN108027963A CN108027963A CN201680052314.3A CN201680052314A CN108027963A CN 108027963 A CN108027963 A CN 108027963A CN 201680052314 A CN201680052314 A CN 201680052314A CN 108027963 A CN108027963 A CN 108027963A
- Authority
- CN
- China
- Prior art keywords
- lut
- input values
- output valves
- value
- processing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims description 324
- 238000013507 mapping Methods 0.000 claims description 47
- 230000015654 memory Effects 0.000 claims description 44
- 238000005516 engineering process Methods 0.000 description 64
- 238000012937 correction Methods 0.000 description 26
- 239000011159 matrix material Substances 0.000 description 19
- 230000008859 change Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000003068 static effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 206010044565 Tremor Diseases 0.000 description 5
- 238000013139 quantization Methods 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008030 elimination Effects 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 230000002708 enhancing effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000001965 increasing effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/90—Dynamic range modification of images or parts thereof
- G06T5/92—Dynamic range modification of images or parts thereof based on global image properties
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/46—Colour picture communication systems
- H04N1/56—Processing of colour picture signals
- H04N1/60—Colour correction or control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Image Processing (AREA)
Abstract
在实例中,一种用于图像处理的方法可包含将对应于图像的第一像素的第一像素值输入到LUT中。所述LUT可将一或多个LUT输入值映射到一或多个LUT输出值。所述第一像素值可对应于映射到所述LUT中的第一LUT输出值的第一LUT输入值。所述第一像素可包含一或多个像素值。所述方法可包含生成所述第一LUT输入值的噪声值。所述方法可包含基于所述噪声值生成所述第一LUT输入值的第一经内插LUT输出值。所述方法可包含使用所述第一经内插LUT输出值将所述图像转变成经转变图像。
Description
本申请要求于2015年9月14日提交的第62/218,333号美国临时专利申请的权益,所述临时专利申请的全文通过引用并入本文中。
技术领域
本揭示涉及图像和/或视频处理。
背景技术
图像和/或视频处理可能会在输出图像和/或视频中引入处理伪影。然而,由于处理伪影使经处理图像和/或视频呈现不自然的或变形的外观,因此它们可能是所不希望的。
发明内容
一般来说,本揭示描述用于图像和/或视频处理的技术,且更具体地说描述用于减少、消除和/或防止一或多个轮廓伪影(有时被称为假轮廓、色带化(banding)或多色调分色(posterization)伪影)的技术。
在一个实例中,本揭示描述一种方法,包括:通过处理单元将对应于图像的第一像素的第一像素值输入到查找表(LUT)中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到LUT中的第一LUT输出值的第一LUT输入值;通过处理单元生成第一LUT输入值的噪声值;通过处理单元基于噪声值生成第一LUT输入值的第一经内插LUT输出值;和通过处理单元使用第一经内插LUT输出值将图像转变成经转变图像。
在另一实例中,本揭示描述一种装置,包括:存储器,其用于存储图像;和一或多个处理器,其被配置成:将对应于图像的第一像素的第一像素值输入到查找表(LUT)中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到LUT中的第一LUT输出值的第一LUT输入值;生成第一LUT输入值的噪声值;基于噪声值生成第一LUT输入值的第一经内插LUT输出值;和使用第一经内插LUT输出值将图像转变成经转变图像。
在另一实例中,本揭示描述一种设备,包括:用于将对应于图像的第一像素的第一像素值输入到查找表(LUT)中的装置,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到LUT中的第一LUT输出值的第一LUT输入值;用于生成第一LUT输入值的噪声值的装置;用于基于噪声值生成第一LUT输入值的第一经内插LUT输出值的装置;和用于使用第一经内插LUT输出值将图像转变成经转变图像的装置。
在另一实例中,本揭示描述一种上面存储有指令的非暂时性计算机可读存储媒体,所述指令在被执行时使计算装置的一或多个处理器来:将对应于图像的第一像素的第一像素值输入到查找表(LUT)中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到LUT中的第一LUT输出值的第一LUT输入值;生成第一LUT输入值的噪声值;基于噪声值生成第一LUT输入值的第一经内插LUT输出值;和使用第一经内插LUT输出值将图像转变成经转变图像。
在附图和以下描述中阐述本揭示的一或多个实例的细节。本揭示的其它特征、目标和优势将从所述描述和图式以及从权利要求书中显而易见。
附图说明
图1是示出被配置成使用本揭示的技术的实例处理单元的框图。
图2示出具有输出间隙的LUT映射的一个实例。
图3以表形式示出图2中所描绘的LUT的一个实例。
图4是示出被配置成使用本揭示的技术的实例处理单元的框图。
图5是示出被配置成使用本揭示的技术的实例计算装置的框图。
图6示出根据本文中所描述的一或多种技术的减少或消除轮廓伪影的一个实例。
图7示出根据低侧内插的一个实例的LUT输出值内插的一个实例。
图8示出根据高侧内插的一个实例的LUT输出值内插的一个实例。
图9示出本文中所描述的NOISE_TABLE的示范性计算。
图10是示出本揭示的实例方法的流程图。
图11是示出本揭示的实例方法的流程图。
图12是示出本揭示的实例方法的流程图。
图13是示出本揭示的实例方法的流程图。
图14是示出本揭示的实例方法的流程图。
具体实施方式
一般来说,本揭示的技术涉及用于图像和/或视频处理的技术,且更具体地说,涉及用于减少、消除和/或防止图像中的一或多个轮廓伪影(有时被称为假轮廓、色带化或多色调分色伪影)的技术。
如本文中所使用,术语“图像处理”意味着“图像和/或视频处理”。图像处理可理解为使用一或多种图像处理技术将图像转变成经转变图像。图像处理的一些实例包含正伽马校正(GC)、逆伽马校正、伽马校正、对比度增强、对比度校正、色彩校正、色彩转变、色调映射、逆色调映射、任何图像处理技术或其任何组合。
本文中所描述的技术在应用到视频帧或静态图像时可减少、消除和/或防止在处理一或多个图像和/或视频帧时的一或多个轮廓伪影。本文中所描述的技术在应用到图像和/或视频帧时可减少、消除和/或防止在处理图像时的一或多个轮廓伪影。视频的单一图像或者一或多个图像可以图像的一或多个子部分、例如一或多个瓦片进行处理。可使用任何色彩格式进行本文中所描述的图像处理。因此,虽然可具体识别RGB或任何其它色彩格式,但是本揭示不限于仅具体提及的色彩格式。
如本文中所使用,术语“图像”可是指单一图像、一或多个图像、对应于视频的多个图像当中的一或多个图像、未对应于视频的多个图像当中的一或多个图像、对应于视频的多个图像(例如,对应于视频的所有图像或不到所有的对应于视频的图像)、单一图像的子部分、单一图像的多个子部分、对应于多个图像的多个子部分、一或多个图形基元、图像数据、图形数据等。在此方面,如本文中所描述,对图像应用本文中所描述的技术可是指对以下各项应用本文中所描述的技术:单一图像、一或多个图像、对应于视频的多个图像当中的一或多个图像、未对应于视频的多个图像当中的一或多个图像、对应于视频的多个图像(例如,对应于视频的所有图像或不到所有的对应于视频的图像)、单一图像的子部分、单一图像的多个子部分、对应于多个图像的多个子部分、一或多个图形基元、图像数据、图形数据等。图像的子部分可是指小于整体图像的一或多个瓦片或其它更小部分或部分组合。如本文中所使用,视频可以是可按序列呈现的多个图像。
如本文中所使用,术语“图像处理”可更广泛地是指“像素处理”,这意味着本文中关于图像处理所描述的技术可同等地适用于像素处理。举例来说,虽然“图像处理”和“像素处理”可取决于情境而互换使用,但是本文中所描述的技术可用于在其中此类术语可能无法互换使用的实例中处理像素。举例来说,本文中所描述的技术可应用于甚至在一或多个像素与图像解除关联时的一或多个像素的处理。
图1是说明可被配置成实施本揭示的一或多个方面的实例处理单元的框图。如图1中所示出,处理单元1可包含内部存储器5。处理单元1外部的存储器,例如所描绘的系统存储器10可以是对于处理单元1可存取。举例来说,处理单元1可在总线上以通信方式耦合到系统存储器10。在一些实例中,处理单元1可经由例如总线9等通信媒体以通信方式直接耦合到系统存储器10。在其它实例中,处理单元1可经由例如总线等通信媒体以通信方式间接耦合到系统存储器10。举例来说,处理单元1可以通信方式直接耦合到另一组件(例如,不同处理单元),所述另一组件经由例如总线等通信媒体以通信方式直接耦合到系统存储器10。
内部存储器5可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
系统存储器10根据一些实例可以是非暂时性存储媒体。术语“非暂时性”可指示存储媒体未体现于载波或传播信号中。然而,术语“非暂时性”不应解释为意味着系统存储器10为非可移动的或其内容为静态的。作为一个实例,系统存储器10可从计算装置2移除并移动到另一装置。作为另一实例,大体上类似于系统存储器10的存储器可插入到计算装置2中。在某些实例中,非暂时性存储媒体可存储可随时间而改变的数据(例如,存储于RAM中)。
处理单元1可以是中央处理单元(CPU)、图形处理单元(GPU)、显示处理单元、数字信号处理单元(DSP)或任何其它处理单元。处理单元1集成到计算装置的母板中。在一些实例中,处理单元1可存在于图形卡上,所述图形卡安装在计算装置的主板中的端口中或可以其它方式并入被配置成与计算装置交互操作的外围装置内。在一些实例中,处理单元1可与CPU一起在芯片上,例如在片上系统(SOC)中。处理单元1可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其它等效的集成或离散逻辑电路或其任何组合。处理单元1还可包含一或多个处理器核心,从而使得处理单元1可被称为多核处理器。在一些实例中,处理单元1可以是专用硬件,所述专用硬件包含向处理单元1提供适合于图形处理的大规模并行处理能力的集成和/或离散逻辑电路。
举例来说,虽然下文更详细地论述了图5,但是处理单元1可以是图5中所描绘的计算装置2的CPU 6、GPU 12、数字信号处理器(DSP)11、显示处理器14、视频编解码器7或另一组件(无论是否描绘)。作为另一实例,处理单元1可以是被配置成进行图像处理或任何像素处理的任何处理单元。作为另一实例,处理单元1可以是被配置成使用查找表(LUT)进行图像处理或任何像素处理的任何处理单元。
在一些实例中,处理单元1可被配置成接收、发射和/或生成数据(例如,如本文中所定义的图像),可对所述数据进行本文中所描述的一或多种图像处理技术。举例来说,处理单元1可被配置成从另一处理单元(例如,另一处理单元1)或任何其它来源(例如,任何其它处理单元或存储媒体,如系统存储器10、内部存储器5或任何其它存储空间)接收数据,可对所述数据进行本文中所描述的一或多种图像处理技术。作为另一实例,处理单元1可以是被配置成接收、发射和/或生成数据的GPU(例如,GPU 12),可对所述数据进行本文中所描述的一或多种图像处理技术。此类数据可包含从例如CPU(例如,CPU 6)或任何其它来源接收的图形数据,和/或发射到例如显示处理器(例如,显示处理器14)的图形数据。在其它实例中,处理单元1可以是被配置成接收、发射和/或生成数据的显示处理单元(例如,显示处理器14),可对所述数据进行本文中所描述的一或多种图像处理技术。此类数据可包含从例如CPU(例如,CPU 6)、GPU(例如,GPU 12)或任何其它来源接收的图形数据。在其它实例中,处理单元1可以是被配置成接收、发射和/或生成数据的CPU(例如,CPU 6),可对所述数据进行本文中所描述的一或多种图像处理技术。此类数据可包含从例如另一CPU、GPU(例如,GPU12)或任何其它来源接收的图形数据。在其它实例中,处理单元1可以是被配置成接收、发射和/或生成数据的数字信号处理器(例如,DSP 11),可对所述数据进行本文中所描述的一或多种图像处理技术。
本文中所描述的一或多种技术可在硬件、软件、固件或其任何组合中实施。举例来说,在本文中所描述的一或多种技术在硬件中实施的情况下,处理单元1可以是被配置成一起操作以进行本文中所描述的一或多种技术的此类硬件或多个硬件组件中的一件硬件组件。在此类实例中,硬件可或可不被配置成执行软件或固件,所述软件或固件在被执行时可进行本文中所描述的一或多种技术。任何软件和/或固件可存储于非暂时性存储媒体、硬件的此类片上存储器(例如,处理单元1的内部存储器5)上或存储于任何硬件外部的存储器(例如,系统存储器10)上。
处理单元1可被配置成使用一或多个查找表(LUT)进行图像处理。举例来说,一或多个LUT可经由LUT的输入-输出映射将图像转变成经转变图像。LUT的输入-输出可被称为LUT映射或LUT映射配置。LUT映射可将n位输入值(例如,输入像素值)映射到n位或m位输出值(例如,输出像素值),其中n和m可以是任何整数且n不同于m。举例来说,LUT可将8位输入像素值映射到16位输出像素值。在这种实例中,LUT可包含对应于每个可能的输入像素值的256个LUT输入值(例如,0到255),且LUT可将每个LUT输入值映射到一或多个16位LUT输出值(例如,在0到65、535范围内的一或多个像素值)。
LUT映射可对应于或实现正伽马校正(GC)、逆伽马校正、伽马校正、对比度增强、对比度校正、色彩校正、色彩转变、色调映射、逆色调映射、任何图像处理技术或其任何组合。处理单元1可被配置成进行图像处理,例如正伽马校正(GC)、逆伽马校正、伽马校正、对比度增强、对比度校正、色彩校正、色彩转变、色调映射、逆色调映射、任何图像处理技术或其任何组合。术语“图像处理”可因此理解为将图像转变成经转变图像。
本文中所描述的技术可包含基于LUT的映射架构,所述基于LUT的映射架构保持传统LUT的完全柔性和易用性,同时减少或防止在图像处理期间引入轮廓伪影,或同时消除在图像处理期间的轮廓伪影。举例来说,处理单元1可被配置成线性地或非线性地内插在邻近LUT输入值(或在一些实例中,非邻近LUT输入值)之间。作为一个实例,通过线性地内插在邻近表条目之间,处理单元1可被配置成在输出处生成邻近条目之间的一或多个值(例如,所有值)。以此方式,举例来说,处理单元1可被配置成输出未映射LUT输出值,而不管其并未映射到LUT中的特定LUT输入值。通过这样做,处理单元1可被配置成消除LUT输出值的映射中的间隙。处理单元1可被配置成实施本文中所描述的一或多种技术,而不会增加本文中所描述的一或多种技术可应用到的任何LUT的尺寸,这意味着与涉及扩大LUT尺寸的技术相比,处理单元1可被配置成利用更少存储空间来存储LUT。而且,从用户的视角来看,由于用于处理单元1的编程模型与用于基本LUT的编程模型保持相同,因此处理单元1可易于编程。
当基于LUT处理时,对LUT的输入是输入像素值且来自LUT的输出是输出像素值。在一些实例中,术语“输入像素值”及其等效物可与术语“LUT输入值”及其等效物同义或可互换。LUT可将一或多个输入像素值映射到一或多个输出像素值。像素可由一或多个像素值定义。举例来说,像素可包含一或多个色彩分量,其中每个色彩分量可具有对应像素值。作为实例,RGB色彩格式化像素包含三个像素值:红色像素值、绿色像素值和蓝色像素值。像素值可由一或多个位定义。举例来说,输入像素值可以是一或多个位且输出像素值可以是一或多个位。基于LUT的图像处理可引入图像处理伪影,例如轮廓伪影。轮廓伪影可能由例如具有值间隙的LUT中的邻近表条目所致,这可能发生在非线性映射中。作为一个实例,一个LUT映射配置可映射如下:0到0、1到1、2到3、3到4和4到5。根据此实例,输入序列[0,1,2,3,4]变得映射到[0,1,3,4,5]。在输出中从1到3的跳跃是间隙的实例。由于输出以间隙2从1跳跃到3,因此此间隙可被称为步长不连续性。在此实例中,值2将永远不会出现在输出中。这种间隙可能会特别是在例如梯度斜坡图像上导致可见色带化。导致轮廓伪影的间隙可能由采用非线性映射的任何LUT、且在一些实例中甚至由采用线性映射的LUT所致。
本文中所描述的图像处理技术包含可减少或防止向输入图像引入轮廓伪影(例如,色带化或多色调分色)的抖动(或随机化)技术。本文中所描述的图像处理技术包含可从输入图像减少或消除现有轮廓伪影(例如,色带化或多色调分色)的抖动技术。举例来说,处理单元1可被配置成使用可减少或防止向输入图像引入轮廓伪影(例如,色带化或多色调分色)的抖动技术。作为另一实例,处理单元1可被配置成使用可从输入图像减少或消除现有轮廓伪影(例如,色带化或多色调分色)的抖动技术。
图2示出具有输出间隙的LUT映射的一个实例。图2中所示出的LUT映射是非线性映射的一个实例。虽然图2中的LUT映射是以图形方式表示的,但是应理解,可使用简易表、阵列组合或传达一或多个输入值到一或多个输出值的映射的任何其它表示来示出LUT映射。处理单元1可被配置成在LUT不是图形形式的情况下导出任何LUT的图形表示(例如图2中所示出的图形表示)。举例来说,图3以表形式示出图2中所描绘的LUT的一个实例。在一些实例中,贯穿此揭示,LUT的图形表示本质上是概念性的且处理单元1可被配置成脱离表、阵列组合或传达一或多个输入值到一或多个输出值的映射的任何其它表示而进行本文中所描述的一或多种技术。
在图2的实例中,LUT输出值[0,4,16,24,28]是分别映射到每个LUT输入值的经映射LUT输出值的实例。举例来说,LUT输入值0映射到LUT输出值0,LUT输入1映射到LUT输出值0,LUT输入2映射到LUT输出值4,LUT输入3映射到LUT输出值16,LUT输入4映射到LUT输出值24,LUT输入5映射到LUT输出值28,LUT输入6映射到LUT输出值28,LUT输入7映射到LUT输出值28。LUT输出值[1,2,3,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,25,26,27,29,30,31]是并不分别映射到每个LUT输入值的非映射LUT输出值的实例。
如果输入是从0到7的平滑梯度,那么在输出中可能会注意到突然跳跃,其中输入从2变换为3,且在更小的程度上从3变换为4。举例来说,输入序列[0,1,2,3,4,5,6,7]变得映射到[0,0,4,16,24,28,28,28]。在输出中从4到16的跳跃是间隙的实例,且在输出中从16到24的跳跃是间隙的另一实例。处理单元1可被配置成使用可减少或防止引入此类间隙的抖动技术,从而可使得减少或防止引入轮廓伪影(例如,色带化)。举例来说,处理单元1可在LUT的输入处引入随机或非随机变化。
应理解,在LUT的输入处引入变化(例如,本文中所描述的一或多种技术)不同于对LUT的输入引入变化(例如,抖动输入像素值输入并使用经抖动像素值输入作为到LUT中的输入值)。举例来说,处理单元1可被配置成将对应于像素位置(x,y)的像素值输入到LUT中,其中(x,y)对应于图像中的任何像素位置。作为一个实例,图像中的(3,4)位置处的像素可包含三个像素值。三个像素值中的一个可表示为8位值。处理单元1可被配置成使用8位值作为对LUT的输入并在LUT的输入处应用变化(例如,抖动),而非例如抖动输入像素值自身(例如,将8位值抖动为n位值,其中n大于、小于或等于8)并使用经抖动输入像素值作为对LUT的输入。
举例来说,处理单元1可被配置成使用抖动来产生在对应表条目(即,对应于键入LUT的像素值的LUT输入值)与其在LUT中的邻近和/或非邻近相邻表条目之间变化的输出。在将像素值输入到LUT中之前抖动所述值在一些实例中可被视为所不希望的。然而,在其它实例中,处理单元1可被配置成首先抖动像素值,使用经抖动像素值作为对LUT的输入并接着抖动如本文中所描述的LUT输入值。因此,虽然LUT输入值可在本文中被描述为与输入像素值同义,但是这是由于处理单元1可被配置成使用对LUT的像素值输入作为LUT输入值所致。然而,抖动LUT输入值不同于将像素值输入抖动到LUT中。举例来说,像素值在抖动之前可对应于第一LUT输入值。在抖动像素值之后,经抖动像素值可对应于第二LUT输入值而非第一LUT输入值。通过在键入LUT之前抖动像素值,会碰到损坏。处理单元1可被配置成抖动LUT输入值而非实际像素值以避免损坏输入到LUT中的数据。因此,应理解,术语像素值和LUT输入值在本文中的其中处理单元1可被配置成使用输入像素值作为LUT输入值的实例中可互换使用。还应理解,抖动像素值不同于抖动对应于像素值的LUT输入值。举例来说,如果像素值被抖动,那么术语像素值和LUT输入值在本文中可能不可互换使用。实际上,在此实例中,术语经抖动像素值和LUT输入值可互换使用。
处理单元1可被配置成在LUT的输入处引入的随机或非随机噪声可通过本文中所描述的一或多种技术变换成在LUT的输出处的变化,使得生成通常会存在间隙或丢失输出值(例如,非映射输出值)的中间值。作为一个实例,参考图2中所示出的实例,一或多个非映射LUT输出值(例如,未映射到输入像素值的一或多个输出像素值)可能使用本文中所描述的一或多种技术而出现在输出中,而不管LUT未明确地将输入像素值映射到此类一或多个非映射LUT输出值(例如,图2中所示出的实例中的输出像素值5到15等)。
在一些实例中,处理单元1可被配置成进行本文中所描述的一或多种技术以及将输入抖动到LUT和/或抖动LUT的输出值。抖动LUT的输出应区别于内插LUT输出值。举例来说,在图像中的位置(4,7)处的像素可包含三个像素值。三个像素值中的一个可表示为8位值。处理单元1可被配置成使用8位值作为对LUT的输入。LUT输入值可映射到LUT输出值。而非输出经映射LUT输出值(在一些实例中),处理单元1可被配置成根据本文中所描述的一或多种技术针对LUT输入值内插LUT输出值。针对LUT输入值内插的LUT输出值可不同于映射到正处理的LUT输入值的LUT输出值。接下来,处理单元1可被配置成接着抖动(例如,应用变化)经内插LUT输出值。
图4示出处理单元1的一个实例。在图4中所示出的实例中,处理单元1被配置成进行图像处理。举例来说,图4描绘如被配置成进行本文中所描述的用于任何图像处理的一或多种技术的处理单元1。举例来说,处理单元1可被配置成进行图像处理,例如正伽马校正(GC)、逆伽马校正、伽马校正、对比度增强、对比度校正、色彩校正、色彩转变、色调映射、逆色调映射、任何图像处理技术或其任何组合。在一些实例、例如所示出的实例中,处理单元1可被配置成根据本文中所描述的一或多种技术在R'G'B'通道上进行逆伽马校正同时抖动(IGCD)。此处所引用的抖动是指本揭示的一或多种技术。举例来说,如所示出,处理单元1可被配置成进行IGCD,使得根据本文中所描述的一或多种技术使用查找表(LUT)将10位R'G'B'伽马校正输入转换为12位RGB(线性光)输出。在一些实例中,IGCD可由软件编程,使得在由处理单元1执行时,处理单元1被配置成匹配用于编码源内容的光电传递函数。举例来说,可进行IGCD以将伽马校正的R'G'B'输入转换成线性光RGB输出。
在一些实例中,查找表(LUT)可由软件和/或硬件限制为单调递增。然而,邻近LUT条目之间的值的差值可能会变化。举例来说,从一个LUT条目到下一个LUT条目的值的增大可能会变化。由此,可存在大于其它间隙的一些间隙。这些更大间隙可在输出中引入在使用一或多个LUT的图像处理技术显示的图像中可视觉上识别的间隙。来自图像处理的输出中的此类视觉上可识别的间隙可导致(或另外被称为)图像处理伪影,例如轮廓伪影(例如,色带化)。举例来说,当源内容(例如,输入内容,如输入图像)包含平滑梯度时,LUT间隙可导致视觉伪影,例如轮廓伪影(例如,色带化伪影)。本文中所描述的图像处理技术包含可减少或防止向输入图像引入轮廓伪影的抖动技术。本文中所描述的图像处理技术包含可从输入图像减少或消除现有轮廓伪影的抖动技术。
图4中所示出的实例恰好是与本文中所描述的一或多种抖动技术一起实施以减少或防止在图像处理(在此实例中为逆伽马校正)期间引入轮廓伪影的图像处理技术(例如,逆伽马校正)的一个实例。
本揭示的一或多种技术可应用于其中输入图像的像素尺寸(例如,每像素位或bpp)取决于正进行的图像处理而增大、减小或保持相同的实例。举例来说,如图4的实例中所示出,可使用一或多个LUT使对应于图像的10位像素值或表示(例如,每像素10位或10bpp)增大到12位像素值或表示。一或多个不同LUT可对应于一或多个像素值。举例来说,参考RGB实例,一或多个LUT可对应于R通道,一或多个LUT可对应于G通道,且一或多个LUT可对应于B通道。在一些实例中,分别对应于R、G和B通道的一或多个LUT可相同或不同。举例来说,可实施简化方式,其中相同的一或多个LUT可用于每个通道。
图5是说明可被配置成实施本揭示的一或多个方面的实例计算装置的框图。如图5中所示出,计算装置2可以是例如个人计算机、桌上型计算机、膝上型计算机、平板计算机、计算机工作站、视频游戏平台或控制台、移动电话(例如,蜂窝式电话或卫星电话)、陆线电话、因特网电话、数字相机、手持式装置(例如,便携式视频游戏装置或个人数字助理(PDA))、可穿戴计算装置、个人音乐播放器、视频播放器、显示器(例如,显示装置)、电视、电视机顶盒、服务器、中间网络装置、主机计算机任何移动装置或处理和/或显示图形数据的任何其它类型的装置。在图5的实例中,计算装置2可包含中央处理单元(CPU)6、系统存储器10和图形处理单元(GPU)12。CPU 6可被配置成根据本文中所描述的一或多种技术进行图像处理。GPU 12可被配置成根据本文中所描述的一或多种技术进行图像处理。
计算装置2还可包含显示处理器14、收发器3、用户接口4、视频编解码器7和显示器8。在一些实例中,视频编解码器7可以是软件应用程序,例如被配置成由CPU 6或计算装置2的其它组件处理的一或多个软件应用程序18当中的软件应用程序。在其它实例中,视频编解码器7可以是不同于CPU 6的硬件组件、在不同于CPU 6的组件上运行的软件应用程序或硬件与软件的组合。虽然一或多个软件应用程序18在概念上示出为在CPU 6内部,但是应理解,所述一或多个软件应用程序18可存储于系统存储器10、可在计算装置2外部但对于其可存取的存储器或其组合中。外部存储器可例如是连续间歇地对于计算装置2可存取。
显示处理器14可被配置成根据本文中所描述的一或多种技术进行图像处理。显示处理器14可包括可实施本文中所描述的一或多种技术的像素处理单元。显示处理器14可例如利用基于瓦片的架构或基于线的架构。在一些实例中,瓦片是包括高度和宽度的像素的面积表示,其中高度是一或多个像素且宽度是一或多个像素。在此类实例中,瓦片实质上可以是矩形或正方形。在其它实例中,瓦片可以是不同于正方形或矩形的形状。
显示处理器14可从至少一个存储器提取多个图像层(例如,前景和背景)。举例来说,显示处理器14可从帧缓冲器提取图像层,GPU将呈像素表示和/或另一存储器形式的图形数据输出到所述帧缓冲器。作为另一实例,显示处理器14可从视频编解码器7的片上存储器、GPU 12的片上存储器、输出缓冲器16、输出缓冲器17、系统存储器10或任何其它源或存储空间提取图像层。多个图像层可包含前景层和/或背景层。
显示处理器14可处理来自多个层的像素。可由显示处理器14进行的实例像素处理可包含上采样、下采样、缩放、旋转和其它像素处理。举例来说,显示处理器14可处理与前景图像层和/或背景图象层相关联的像素。显示处理器14可共混来自多个层的像素,并将经共混像素以瓦片格式写回到存储器中。接着,可以光栅格式从存储器读取经共混像素,并将其发送到显示器8用于呈现。
视频编解码器7可接收经编码视频数据。计算装置2可从例如存储媒体、网络服务器或源装置(例如,对数据进行编码或以其它方式将经编码视频数据发射到计算装置2的装置,例如服务器)接收经编码视频数据。在其它实例中,计算装置2自身可生成经编码视频数据。举例来说,计算装置2可包含用于捕获静态图像或视频的相机。经捕获数据(例如,视频数据)可由视频编解码器7编码。经编码视频数据可包含由视频编码器生成以供例如视频编解码器7等视频解码器在对视频数据解码时使用的多种语法元素
虽然视频编解码器7在本文中描述为是视频编码器和视频解码器两个,但是应理解,视频编解码器7在其它实例中可以是不具有编码功能性的视频解码器。视频编解码器7可被配置成根据本文中所描述的一或多种技术进行图像处理。由视频编解码器7解码和/或处理的视频数据可发送到任何目的地。举例来说,经解码视频数据可直接发送到显示处理器14,可直接发送到显示器8,或可发送到对于显示处理器14或GPU 12可存取的存储器,例如系统存储器10、输出缓冲器16或输出缓冲器17。在所示出的实例中,视频编解码器7连接到显示处理器14,这意味着经解码视频数据直接发送到显示处理器14和/或存储于对于显示处理器14可存取的存储器中。在这种实例中,显示处理器14可发布一或多个存储器请求以从存储器获得经解码视频数据,其方式与发布一或多个存储器请求以从与GPU 12相关联的存储器(例如,输出缓冲器16)获得图形(静态图像或视频)数据时类似。
视频编解码器7可根据视频压缩标准操作,所述视频压缩标准例如ITU-T H.264、高级视频编码(AVC)或ITU-T H.265、高效视频编码(HEVC)标准。然而,本揭示的技术不限于任何特定编码标准。
收发器3、视频编解码器7和显示处理器14可以是与CPU 6和/或GPU 12相同的集成电路(IC)的部分,可在包含CPU 6和/或GPU 12的一或多个IC的外部,或可形成于在包含CPU6和/或GPU 12的IC外部的IC中。举例来说,视频编解码器7可实施为任何多种合适的编码器电路,例如一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、离散逻辑、软件、硬件、固件或其任何组合。
计算装置2可包含出于清楚起见而在图5中未示出的额外模块或处理单元。举例来说,计算装置2可在其中计算装置2为移动无线电话的实例中包含扬声器和麦克风(两者均未在图5中示出)来实现电话通信,或在计算装置2为媒体播放器的情况下包含扬声器。计算装置2还可包含相机。此外,计算装置2中所示出的各个模块和单元在计算装置2的每一实例中可能不是必需的。举例来说,在其中计算装置2为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口4和显示器8可在计算装置2的外部。
用户接口4的实例包含但不限于轨迹球、鼠标、键盘和其它类型的输入装置。用户接口4还可以是触摸屏且可并入作为显示器8的一部分。收发器3可包含电路以允许计算装置2与另一装置或网络之间的无线或有线通信。收发器3可包含调制器、解调器、放大器和其它用于有线或无线通信的此类电路。在一些实例中,收发器3可与CPU 6集成。
CPU 6可以是被配置成处理用于执行的计算机程序的指令的微处理器,例如中央处理单元(CPU)。CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可向计算装置2提供输入,以使CPU 6执行一或多个软件应用程序,例如一或多个软件应用程序18。在CPU 6上(或在计算装置2的一或多个其它组件上)执行的一或多个软件应用程序18可包含例如操作系统、文字处理器应用程序、电子邮件应用程序、电子表格应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序、或使用针对2D或3D图形的图形数据的另一类型的软件应用程序。如本文中所描述,处理单元1可以是例如关于图5所描述的一或多个组件。因此,举例来说应理解,处理单元1可被配置成执行一或多个软件应用程序(例如,一或多个软件应用程序18)。关于图5的任何组件的任何描述可同等地描述处理单元1的一或多个实例。
CPU 6可被配置成执行用于控制GPU 12的操作的GPU驱动程序22。用户可经由一或多个输入装置(未示出)将输入提供给计算装置2,所述一或多个输入装置例如键盘、鼠标、麦克风、触摸垫或经由用户接口4耦合到计算装置2的另一输入装置。
在例如CPU 6上执行的一或多个软件应用程序18可包含一或多个图形渲染指令,其发指令给CPU 6以使图形数据渲染到显示器8。所述指令可包含处理3D图形的指令以及处理2D图形的指令。在一些实例中,软件指令可符合图形应用程序编程接口(API)。图形API可以是例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3DAPI、X3D API、RenderMan API、WebGL API开放式计算语言(OpenCLTM)、并行计算平台和由NVIDIA公司建立的例如CUDA(即,统一计算装置架构)等API模型、或任何其它公用或专有标准GPU计算API。为了处理在CPU 6上执行的一或多个软件应用程序18的图形渲染指令,在一或多个软件应用程序18的执行期间,CPU 6可向GPU 12(例如,通过GPU驱动程序22)发布一或多个图形渲染命令以使GPU 12进行图形数据的渲染中的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带等图形基元的列表。
一或多个软件应用程序18可以是利用GPU 12的任何功能性或不利用GPU 12的任何功能性的任何应用程序。举例来说,一或多个应用程序18可以是其中CPU 6的执行使(或不会使)一或多个命令分担给GPU 12用于处理的任何应用程序。一或多个应用程序18的实例可包含使CPU 6使3D渲染命令分担给GPU 12的应用程序(例如,视频游戏应用程序)、使CPU 6将2D渲染命令分担给GPU 12的应用程序(例如,用户接口应用程序),或使CPU 6使一般计算任务分担给GPU 12的应用程序(例如,GPGPU应用程序)。作为另一实例,一或多个应用程序18可包含驻留在计算装置2的任何组件上的固件,所述组件例如CPU 6、GPU 12、显示处理器14或任何其它组件。固件可或可不利用或调用GPU 12的功能性。
一或多个软件应用程序18可包含发指令给GPU 12以渲染图形用户接口(GUI)、图形场景、图形数据或其它图形相关数据的一或多个绘制指令。举例来说,绘制指令可包含定义将由GPU 12渲染的一或多个图形基元的集合的指令。在一些实例中,绘制指令可共同地界定用于GUI中的多个开窗表面的全部或部分。在额外实例中,绘制指令可共同地界定图形场景的全部或部分,所述图形场景包含在由应用程序界定的模型空间或世界空间内的一或多个图形对象。
一或多个软件应用程序18可经由图形API调用GPU驱动程序22,以将一或多个命令发布到GPU 12以供将一或多个图形基元渲染为可显示图形图像。举例来说,一或多个软件应用程序18可经由图形API调用GPU驱动程序22以将基元定义提供给GPU 12。在一些情况下,基元定义可以绘制基元列表的形式提供给GPU 12,所述形式例如三角形、矩形、三角形扇、三角形带等。基元定义可包含指定与待渲染的基元相关联的一或多个顶点的顶点规格。
GPU 12可被配置成进行图形操作,从而将一或多个图形基元渲染到显示器8。因此,当在处理器CPU 6上执行的一或多个软件应用程序18需要图形处理时,CPU 6可将图形渲染命令连同图形数据提供给GPU 12,以便渲染到显示器8。图形数据可包含例如绘制命令、状态信息、基元信息、纹理信息等。在一些情况下,GPU 12可利用高度并行结构建构,所述结构提供比CPU 6更加有效的复杂的图形相关操作的处理。举例来说,GPU 12可包含被配置成通过并行方式在多个顶点或像素上操作的多个处理元件,例如着色器单元。在一些情况下,GPU 12的高度并行性质允许GPU 12比使用CPU 6直接将场景绘制到显示器8更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器8上。
一或多个软件应用程序18可调用GPU驱动程序22,以将一或多个命令发布到GPU12以供将一或多个图形基元渲染为可显示图形图像(例如,可显示图形数据)。举例来说,一或多个软件应用程序18在被执行时可调用GPU驱动程序22以将基元定义提供给GPU 12。在一些情况下,基元定义可以绘制基元列表的形式提供给GPU 12,所述形式例如三角形、矩形、三角形扇、三角形带等。基元定义可包含指定与待渲染的基元相关联的一或多个顶点的顶点规格。所述顶点规格可包含每个顶点的位置坐标,且在一些情况下包含与顶点相关联的其它属性,例如色彩坐标、法向量和纹理坐标。基元定义还可包含基元类型信息(例如,三角形、矩形、三角形扇、三角形带等)、缩放信息、旋转信息等。
基于由一或多个软件应用程序18发布到GPU驱动程序22的指令,GPU驱动程序22可调配指定供GPU 12进行的一或多个操作以便渲染基元的一或多个命令。当GPU 12从CPU 6接收到命令时,图形处理管线可在GPU 12的着色器处理器上执行,以对所述命令解码并配置图形处理管线以进行所述命令中所指定的操作。例如,图形处理管线中的输入汇编程序可读取基元数据,并将数据汇编成供图形处理管线中的其它图形管线级使用的基元。在进行指定操作之后,图形处理管线将经渲染数据输出到对于显示处理器14可存取的输出缓冲器16。在一些实例中,图形处理管线可包含固定功能逻辑,和/或在可编程着色器核心上执行。
输出缓冲器16存储GPU 12的目的地像素。每个目的地像素可与唯一屏幕像素位置相关联。类似地,取决于实例,输出缓冲器17可为视频编解码器7存储目的地像素。输出缓冲器17可被视为与视频编解码器7相关联的帧缓冲器。在一些实例中,输出缓冲器16和/或输出缓冲器17可存储每个目的地像素的色彩分量和目的地阿尔法值。举例来说,输出缓冲器16和/或输出缓冲器17可根据任何格式而存储像素数据。举例来说,输出缓冲器16和/或输出缓冲器17可存储每个像素的红绿蓝阿尔法(RGBA)分量,其中“RGB”分量对应于色彩值且“A”分量对应于目的地阿尔法值。作为另一实例,输出缓冲器16和/或输出缓冲器17可根据YCbCr色彩格式、YUV色彩格式、RGB色彩格式或根据任何其它色彩格式而存储像素数据。尽管输出缓冲器16和系统存储器10被说明为单独的存储器单元,但在其它实例中,输出缓冲器16可以是系统存储器10的部分。举例来说,可在系统存储器10中为输出缓冲器16分配存储空间。输出缓冲器16可构成帧缓冲器。此外,如上文所论述,输出缓冲器16还可能够存储不同于像素的任何合适的数据。
类似地,尽管输出缓冲器17和系统存储器10被说明为单独的存储器单元,但在其它实例中,输出缓冲器17可以是系统存储器10的部分。举例来说,可在系统存储器10中为输出缓冲器17分配存储空间。输出缓冲器17可构成视频编解码器缓冲器或帧缓冲器。此外,如上文所论述,输出缓冲器17还可能够存储不同于像素的任何合适的数据。在一些实例中,尽管输出缓冲器16和输出缓冲器17被说明为单独的存储器单元,但输出缓冲器16和输出缓冲器17可以是相同缓冲器或相同缓冲器的不同部分。
在一些情况下,GPU 12可集成到计算装置2的母板中。在其它情况下,GPU 12可存在于安装在计算装置2的母板中的端口中的图形卡上或可以其它方式并入在被配置成与计算装置2交互操作的外围装置内。在一些实例中,GPU 12可与CPU 6一起在芯片上,例如在片上系统(SOC)中。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其它等效的集成或离散逻辑电路或其任何组合。GPU 12还可包含一或多个处理器核心,从而使得GPU 12可被称为多核处理器。在一些实例中,GPU 12可以是包含集成和/或离散逻辑电路的专用硬件,所述电路为GPU 12提供适合于图形处理的大规模并行处理能力。在一些情况下,GPU 12还可包含通用处理能力,并在实施通用处理任务(例如,所谓的“计算”任务)时可被称为通用GPU(GPGPU)。
在一些实例中,图形存储器20可以是GPU 12的部分。举例来说,图形存储器20可以是片上存储器或物理上集成到GPU 12的集成电路芯片中的存储器。如果图形存储器20是在芯片上,那么与经由系统总线从系统存储器10读取值或将值写入到系统存储器10相比,GPU12可能够更快速地从图形存储器20读取值或将值写入到图形存储器20。因此,GPU 12可在不使用总线的情况下从图形存储器20读取数据并将数据写入到图形存储器20。换句话说,GPU 12可使用本地存储装置而非片外存储器在本地处理数据。此类图形存储器20可被称为片上存储器。这允许GPU 12通过消除对GPU 12经由总线读取和写入数据的需要来以更有效方式操作,经由总线读取和写入数据可经历较重的总线业务以及相关联的对带宽的争用。然而,在一些情况下,GPU 12可能不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器20可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
在一些实例中,GPU 12可在系统存储器10中存储完全成形的图像。显示处理器14可从系统存储器10和/或输出缓冲器16检索所述图像,并输出使显示器8的像素照亮以显示所述图像的值。在一些实例中,显示处理器14可被配置成对待显示的数据进行2D操作,包含缩放、旋转、混合和合成。显示器8可以是显示由GPU 12生成的图像内容的计算装置2的显示器。显示器8可以是液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。在一些实例中,显示器8可集成在计算装置2内。举例来说,显示器8可以是移动电话的屏幕。在其它实例中,显示器8可以是经由有线或无线通信链路耦合到计算装置2的独立装置。举例来说,显示器8可以是经由电缆或无线链路连接到计算装置(例如,个人计算机、移动计算机、平板电脑、移动电话等)的计算机监视器或平板显示器。
CPU 6处理用于在计算装置2内执行的指令。CPU 6可使用驱动程序(例如,可实施于由CPU 6执行的软件中的GPU驱动程序22)来生成用于由GPU 12执行的命令流。也就是说,CPU 6可生成定义待由GPU 12执行的一组操作的命令流。
CPU 6可生成待由GPU 12执行的命令流,其使可检视内容在显示器8上显示。举例来说,CPU 6可生成命令流,其为GPU 12提供渲染可存储于输出缓冲器16中以在显示器8处显示的图形数据的指令。在此实例中,CPU 6可生成由图形渲染管线执行的命令流。
另外或替代地,CPU 6可生成待由GPU 12执行的命令流,其使GPU 12进行其它操作。举例来说,在一些情况下,CPU 6可以是生成命令流以供GPU 12用作通用图形处理单元(GPGPU)的主机处理器。以此方式,GPU 12可充当CPU 6的次级处理器。举例来说,GPU 12可实行传统上由CPU 6实行的多种通用计算功能。实例包含多种图像处理功能,包含视频解码和后处理(例如,去块、降噪、色彩校正等)以及其它应用程序特定的图像处理功能(例如,面部检测/辨识、图案辨识、小波转变等)。
在一些实例中,GPU 12可与CPU 6合作来执行此类GPGPU应用程序。举例来说,CPU6可通过向GPU 12提供命令流以供GPU 12执行,来将某些功能分担给GPU 12。在此实例中,CPU 6可以是主机处理器,且GPU 12可以是次级处理器。CPU 6可与GPU 12通信,来指导GPU12经由GPU驱动程序22执行GPGPU应用程序。
GPU驱动程序22可将可由GPU 12的着色器单元执行的一或多个命令流传达给GPU12。GPU 12可包含可从GPU驱动程序22接收一或多个命令流的命令处理器24。命令处理器24可以是被配置成接收并处理一或多个命令流的硬件与软件的任何组合。由此,命令处理器24是流处理器。在一些实例中,代替命令处理器24,可使用任何其它合适的流处理器,代替命令处理器24来接收并处理一或多个命令流且进行本文中所揭示的技术。在一个实例中,命令处理器24可以是硬件处理器。在图5中所示出的实例中,命令处理器24可包含在GPU 12中。在其它实例中,命令处理器24可以是与CPU 6和GPU 12分离的单元。命令处理器24还可被称为流处理器、命令/流处理器等以指示其可以是被配置成接收命令流和/或操作流的任何处理器。
命令处理器24可处理一或多个命令流,其包含包含于由GPU 12执行的一或多个命令流中的调度操作。具体地说,命令处理器24可处理一或多个命令流,并调度所述一或多个命令流中的操作,以由着色器单元46执行。在操作中,GPU驱动程序22向命令处理器24发送包括待由GPU 12执行的一系列操作的命令流。命令处理器24可接收包括所述命令流的操作流,并可基于所述操作在所述命令流中的次序而循序地处理命令流的操作,并可调度所述命令流中的操作,以用于由GPU 12的着色器单元的着色器处理器执行。
图6示出根据本文中所描述的一或多种技术的减少或消除轮廓伪影的一个实例。具体地说,图6说明在LUT输入处(与在LUT输入上相反或与LUT输入相反)增加变化(例如,抖动噪声)的概念以及这可变换成LUT输出的方式。在所示出的实例中,LUT输入是具有值3(或以二进制计数法为011)的3位输入。处理单元1可被配置成对一或多个LUT输入值应用具有加上和/或减去A(例如,+/-A,其中A可以是处于或高于零的任何值)的幅值的抖动噪声。取决于实例,变量A可被称为幅值、抖动强度幅值、抖动幅值、抖动强度、噪声值、抖动噪声、抖动噪声幅值等。
在一些实例中,A可等于以下等式的最大值和最小值:C*NOISE_TABLE[m],其中C是任何值或任何等式的结果。
在其它实例中,A可等于以下等式的最大值和最小值:(B^(N-Z))*(NOISE_TABLE[m]),其中NOISE_TABLE可以是包含多个不同条目的阵列,且m是整数并指向NOISE_TABLE中的阵列位置。NOISE_TABLE条目可以是任何整数值或非整数值。在一些实例中,NOISE_TABLE可以是RxR阵列或SxR阵列,其中R和S是正整数值且R不等于S。在一些实例中,NOISE_TABLE的所有条目(即,元素)的算术平均值可以是-0.5。由于-0.5接近零,因此抖动噪声可能不会在输出图像中引起明显的DC频移。在其它实例中,NOISE_TABLE的所有条目(即,元素)的算术平均值可以是不同于-0.5的值(例如,大于或小于-0.5,也就是说接近0,从而可能不会在输出图像中引起明显的DC频移)。
举例来说,如果NOISE_TABLE=[-2,-1,1,0],那么NOISE_TABLE[0]=-2,NOISE_TABLE[1]=-1,NOISE_TABLE[2]=1,且NOISE_TABLE[3]=0。在此类实例中,B可以是电源底座的变量。在一些实例中,B的值可以是任何正整数值。N可被视为可编程抖动强度变量且Z可以是任何正或负整数值或非整数值。变量N同样可以是任何正或负整数值或非整数值。由于这些变量中的每一个的值可改变等式B^(N-Z)的结果,因此各自可被称为可编程抖动强度变量。在其中NOISE_TABLE=[-2,-1,1,0]的实例中,幅值可在(B^(N-Z))*(-2)到(B^(N-Z))*(1)的范围内。举例来说,假设B=2、N=0且Z=4。在此特定实例中,A可在-0.125到0.0625的范围内,其中具有两个中间值-0.0625和0。
在一些实例中,处理单元1可配置有B和Z的默认值。举例来说,B的默认值可以是值2且Z的默认值可以是值4。在此实例中,A可等于2^(N-4),其中N是可编程抖动强度变量。然而,处理单元1可被配置成调整任何默认值。举例来说,处理单元1可被配置成将Z从默认值调整为另一值,例如值3或5。在此实例中,A可分别等于2^(N-3)或2^(N-5)。作为另一实例,处理单元1可被配置成将B从默认值调整为另一值,例如值3。在此实例中,A可等于3^(N-4)。一或多个变量B、N和Z在一些实例中可基于正处理的内容(例如,图像)的位深度特性和/或处理管线的位深度。
在一些实例中,只可应用负的经抖动噪声,因此所述抖动噪声具有加上和/或减去A的幅值。在其它实例中,只可应用正的抖动噪声,因此所述抖动噪声具有加上和/或减去A的幅值。举例来说,如果A是0.1,那么处理单元1可被配置成应用具有从-0.1到0.1的幅值的抖动噪声。作为另一实例,如果A是2,那么处理单元1可被配置成应用具有从-2到2的幅值的抖动噪声。作为另一实例,如果A是4,那么处理单元1可被配置成在其中处理单元1被配置成仅在正或负方向上应用抖动噪声的实例中应用具有从0到4或从-4到0的幅值的抖动噪声。虽然A已描述为针对最小值和最大值均为相同值(例如,如果A=5,那么幅值可从-0.5到0.5),但是术语+/-A还可是指其中最小值和最大值为不同值的实例。举例来说,幅值可在-0.5到0.4375、-0.4375到0.5等的范围内。
在图6中所示出的实例中,A具有值0.5,这由从2.5延伸到3.5的竖直阴影区基于LUT输入3而描绘(即,3减去A(在此描绘的实例中为0.5)等于2.5,且3加上A(在此描绘的实例中为0.5)等于3.5。从2.5到3.5的范围可被称为输入变化范围、经抖动输入变化范围、经抖动LUT输入范围、LUT输入范围等。经抖动输入变化范围可被描述为[LUT输入值-A,LUT输入值+A]。在其中仅使用正幅值的实例中,经抖动输入变化范围可被描述为[LUT输入值,LUT输入值+A]。在其中仅使用负幅值的实例中,经抖动输入变化范围可被描述为[LUT输入值-A,LUT输入值]。在抖动LUT输入值后,LUT输入值可被称为经抖动输入LUT值。
在一些实例中,A的值(或噪声值的生成)可基于量化器的量化误差。在此类实例中,量化误差可是指模/数转换器(A/D转换器)的量化误差,所述模/数转换器是量化器的一个实例。举例来说,如果A/D转换器具有+/-0.5伏的量化误差,那么处理单元1可使用值0.5,从而使得在LUT的输入处应用的抖动噪声是+/-0.5。举例来说,在一些实例中,图6可描绘处理单元1基于+/-0.5伏的量化误差在LUT的输入处抖动LUT输入值3。以此方式,本文中所描述的技术可帮助通过有意随机化模拟现实,原因是例如A/D转换器等量化器通过量化信号而掩盖了输入信号的真实值(且因此自然随机化)。因此,虽然应用如本文中所描述的抖动噪声可能不会(且很可能不会)产生等于映射到LUT输入值的LUT输出值的经内插LUT输出值,但是对多个LUT值输入应用如本文中所描述抖动噪声可能产生更加逼真的输出图像。虽然本文中所描述的技术可应用于对应于一或多个像素输入值的一或多个LUT输入值,但是向对应于多个像素输入值的多个LUT输入值应用本文中所描述的技术可提供更加明显的效果,例如减少或防止当在集合中检视到像素输出值(即,LUT输出值)时的轮廓伪影。
在一些实例中,本文中所描述的技术可应用于特意地引入而非消除或防止轮廓伪影。处理单元1可被配置成将抖动强度调整到足够高以在图像处理期间引入轮廓伪影。在一些实例中,轮廓伪影的引入可被视为是可接受的或甚至优选的,原因是此类伪影可被认为是艺术等。处理单元1可被配置成(1)减少或防止在处理期间向图像引入轮廓伪影和/或在图像处理期间消除图像中的轮廓伪影,和/或(2)在图像处理期间增大或引入轮廓伪影。举例来说,处理单元1可被配置成处理包含多个像素的图像的第一区域以消除轮廓伪影,并处理包含多个像素的图像的第二区域以增加轮廓伪影。作为另一实例,处理单元1可被配置成减少或防止在图像处理期间向图像的第一区域引入轮廓伪影,且可被配置成在图像处理期间消除图像的第二区域的轮廓伪影。在此方面,处理单元1可被配置成以一或多种方式处理图像的一或多个区域。举例来说,处理单元1可被配置成确定图像是否包含一或多个轮廓伪影。处理单元1可被配置成识别图像的经确定包含一或多个轮廓伪影的一或多个区域。处理单元1可被配置成在图像处理期间消除图像的经确定包含此类伪影的一或多个区域中的任何轮廓伪影,且可被配置成在图像处理期间减少或防止在图像的剩余部分中引入轮廓伪影。
在一些实例中,处理单元1可被配置成在值范围内内插LUT输出值。所述值范围可是指经抖动映射或其子集,例如图6中所示出的经抖动映射或图7和8中所示出的子集。所述值范围可基于本文中所描述的A的值。举例来说,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:邻近待抖动LUT输入值的LUT输入值;(2)第二值:待抖动LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。在一些实例中,在此实例以及之后任何实例中介于第一与第二值之间的一或多个值可包含一或多个经映射LUT输出值、一或多个非映射LUT输出值、一或多个非整数LUT输出值或其任何组合。
在另一实例中,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:不邻近待抖动LUT输入值的LUT输入值;(2)第二值:待抖动LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。在另一实例中,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:邻近待抖动LUT输入值的第一LUT输入值;(2)第二值:邻近待抖动LUT输入值的第二LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。在另一实例中,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:不邻近且小于待抖动LUT输入值的第一LUT输入值;(2)不邻近且大于待抖动LUT输入值的第二LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。
在另一实例中,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:邻近且小于待抖动LUT输入值的LUT输入值;(2)第二值:不邻近且大于待抖动LUT输入值的LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。在另一实例中,处理单元1可被配置成在值范围内内插LUT输出值,其中所述值范围包含(1)第一值:邻近且大于待抖动LUT输入值的LUT输入值;(2)第二值:不邻近且小于待抖动LUT输入值的LUT输入值;和(3)在此实例中介于第一与第二值之间的一或多个值。
参考图6中所示出的具体实例,图6中所示出的LUT将八个可能的输入LUT值(例如,可输入到LUT的呈3位色彩格式的八个可能的像素值)映射到可能的32个值(即,0到31)当中的八个输出LUT值。图6是将3位像素输入值映射到5位像素输入值的LUT的一个实例。在所描绘的实例中,输出LUT值中的一些映射到多于一个LUT输入值。举例来说,根据图6中所示出的LUT映射,LUT输入值[0,1,2,3,4,5,6,7]分别映射到LUT输出值[0,0,4,16,24,28,28,28]。
经抖动范围[2.5,3.5](即,2.5到3.5)由从x轴延伸的竖直阴影区示出。尽管LUT仅将选定LUT输入值映射到选定LUT输出值,但处理单元1可被配置成使用内插(例如,线性内插)以产生非映射输出LUT值(例如,介于经映射输出LUT值与对应于邻近LUT输入值中的一或两个的输出LUT值之间的中间值)。举例来说,在不抖动LUT输入值的情况下,处理单元1可被配置成处理LUT输入值以产生(例如,输出)LUT输出值16。然而,通过抖动LUT输入值,处理单元可被配置成处理2.5到3.5的LUT输入范围以得到LUT输入值3,从而导致从10到20范围(例如,也表示为[10,20])的输出变化而非恰好单一值16。由于处理单元1使输入从单一输入放大到输入范围(例如,从2.5到3.5),因此可能的输出LUT值的数值已增大LUT输入值3,使得从10到20范围当中的值可输出LUT输入值3而非产生静态输出LUT值16。
在一些实例中,输出值的内插可基于分段线性映射曲线的斜率。举例来说,可根据分段线性映射曲线的斜率应用或以其它方式调制噪声级。图6描绘内插的此实例。LUT输入值2与3之间的点线是一条分段线性映射曲线,且LUT输入值3与4之间的点线是另一条分段线性映射曲线。2.5到3的LUT输入范围的分段线性映射曲线的斜率比3到3.5的LUT输入范围的分段线性映射曲线的斜率更陡。因此,在一些实例中,与更小斜率的分段曲线相比,更陡的斜率可与由处理单元1产生的更多内插值相关。在图6的实例中,这就是在10到16范围内的可能的LUT输出值针对2.5到3的LUT输入范围(具有更大分段斜率)以及在16到20范围内的可能的LUT输出值针对3到3.5LUT输入范围(具有更小分段斜率)的情况。
在一些实例中,如果LUT输入值与邻近LUT输入值之间的间隙较小,那么噪声可被抑制,且对于更大间隙的情况,噪声将被放大。图6示出此情况,其中噪声对于如由在16到20范围内的输出LUT值所示出的3到3.5的LUT输入范围被抑制,且噪声对于如由在10到16范围内的输出LUT值所示出的2.5到3的LUT输入范围被放大。以此方式,处理单元1可被配置成与任何LUT输出值间隙成比例地自动调整抖动噪声级。举例来说,更大间隙可自动接收比更小间隙更多的内插值以“填充”、消除或减少间隙,使得当输出图像被显示时不太察觉到或不可察觉到其中的间隙。作为另一实例,更小间隙可自动接收比更大间隙更少的内插值以“填充”、消除或减少间隙,使得当输出图像被显示时不太察觉到或不可察觉到其中的间隙。
在一些实例中,处理单元1可被配置成内插对应于经抖动LUT输入范围的一或多个输出值。在一个实例中,处理单元1可被配置成生成噪声值ni(例如,上文所描述的变量A的特定值,如A的最小值、A的最大值或介于最小值与最大值之间的A的任何中间值)。噪声值ni可以是随机噪声值或非随机噪声值。噪声值ni可以是在一定可编程范围内生成的随机噪声值或非随机噪声值,所述范围例如+/-k(例如,如上文所描述的变量A的最小值和最大值,如+/-0.5、+/-1、-0.5到0.75、-0.5到0.4375等)。噪声值ni可包含一或多个小数位。如果由处理单元1生成的ni的值为负数,那么处理单元可被配置成进行低侧内插。如果由处理单元1生成的ni的值为正数,那么处理单元可被配置成进行高侧内插。
在一些实例中,处理单元1可被配置成使用有序抖动生成噪声值ni。有序抖动(例如,空间抖动)对于静态输入(例如,关于视频输入中的暂停或重复图像的固定噪声图)可以是静态的。抖动值可取决于像素位置且可能不具有随时间变化的分量,这可防止例如静态视频的闪烁。在其它实例中,处理单元1可被配置成生成噪声值ni,使得噪声值随时间(例如,时间抖动)针对给定像素位置而变化。
参考有序抖动,处理单元1可被配置成基于一或多个LUT输入值与其相关联的像素的位置确定噪声值ni。举例来说,RGB色彩格式化像素将具有与单一像素位置相关联的三个LUT输入值(每个LUT输入值针对每个色彩通道)。
在一些实例中,处理单元1可被配置成基于像素位置计算噪声值。举例来说,处理单元1可被配置成基于在位置(x,y)处的像素计算噪声值ni,如下:ni(x,y)=2N-4(NOISE_TABLE[m]),其中m=4·(y mod 4)+(x mod 4),0≤m≤15,且其中NOISE_TABLE=[7,-1,5,-3,-5,3,-7,1,4,-4,6,-2,-8,0,-6,2]。
此等式是示范性的,在于A=2^(N-4)。举例来说,此等式可简化为ni(x,y)=A*NOISE_TABLE[m],其中A可以是本文中所描述的抖动强度幅值的变量。如本文中所描述,在一些实例中,A可等于B^(N-Z),使得ni(x,y)=(B^(N-Z))*NOISE_TABLE[m])。而且,在其它实例中,NOISE_TABLE值可与阵列中所示出(以上文光栅扫描次序示出)的不同。在其它实例中,处理单元1可被配置成独立于像素位置而计算噪声值。
ni(x,y)等式变换成4x4噪声图矩阵(或阵列),由于由模操作数所致的NOISE_TABLE标引的周期重复,因此所述矩阵变得平铺在正处理的图像上。在其它实例中,可使用一种不同于使用模操作数的技术实施上文等式中的NOISE_TABLE标引的周期重复。在上文等式中,变量N是可编程抖动强度且使得处理单元1能够被配置成放大(或减弱)抖动。在一些实例中,N可基于正处理的内容(例如,图像)的位深度特性和/或处理管线的位深度。在一些实例中,N可以功率2为步长控制A(例如,本文中关于幅值所指的变量A)。举例来说,当N=0、B=2且Z=4时,噪声表(也被称为NOISE_TABLE)中的一或多个条目(例如,所有条目)乘以2^(0-4)而变成2^-4或另外1/(2^4),等于1/16。因此在此实例中,NOISE_TABLE中的一或多个值(例如,所有值)可乘以(1/16),实际上得到在-0.5(例如,最低噪声表条目-8乘以1/16)到0.4375(例如,最高噪声表条目7乘以1/16)范围内的抖动噪声幅值。作为另一实例,当N=1、B=2且Z=4时,噪声表(即,噪声表中的一或多个条目)乘以2^(1-4),从而等于1/8。因此在此实例中,NOISE_TABLE中的一或多个值(例如,所有值)可乘以(1/8),实际上得到在-1.0(例如,最低噪声表条目-8乘以1/8)到0.875(例如,最高噪声表条目7乘以1/16)范围内的抖动噪声幅值。
在空间上,可由处理单元1生成的噪声可以是规则正方形栅极平铺的4x4矩阵图。上文所描绘的实例NOISE_TABLE是光栅扫描线性组织的4x4矩阵。在其它实例中,矩阵可小于或大于4x4矩阵(例如,2x2、8x8等)。
上文等式包含模操作数。以下包含模操作数的实例:0mod 4=0、1mod 4=1、2mod4=2、3mod 4=3、4mod 4=0、5mod 4=1、6mod 4=2、7mod 4=3、8mod 4=0、9mod 4=1、10mod 4=2、11mod 4=3、12mod 4=0、13mod 4=1、14mod 4=2等。举例来说,向(0,0)、(1,0)、(2,0)、(3,0)、(4,0)、(5,0)、(6,0)、(7,0)、(8,0)和(9,0)的示范性像素位置应用(x mod4)操作会分别针对示范性像素位置的x坐标产生0、1、2、3、1、2、3、0和1序列。类似地,向相同示范性像素位置应用(y mod 4)操作会分别针对这些示范性像素位置的y坐标产生0、0、0、0、0、0、0、0、0和0序列。
作为另一实例,向(0,1)、(0,2)、(0,3)、(0,4)、(0,5)、(0,6)、(0,7)、(0,8)、(0,9)的示范性像素位置应用(y mod 4)操作会分别针对示范性像素位置的y坐标产生0、1、2、3、1、2、3、0和1序列。类似地,向此示范性像素位置集应用(x mod 4)操作会分别针对这些示范性像素位置的x坐标产生0、0、0、0、0、0、0、0、0和0序列。
下文描述处理单元1可使用来生成2x2、4x4、8x8或MXM NOISE_TABLE矩阵的种子矩阵(和上文所描述的NOISE_TABLE条目)的导出,其中M是2的任何整数幂。在其它实例中,处理单元1可导出不同于下文所描述的技术的种子矩阵和NOISE_TABLE条目。虽然本揭示描述噪声表(例如,NOISE_TABLE)的使用,但是应理解,处理单元1可被配置成通过使用噪声表进行本揭示的一或多种技术。举例来说,处理单元1可被配置成使用不同数据结构或不同算法以进行本文中所描述的一或多种技术。
NOISE_TABLE的值可由处理单元1根据拜耳(Bayer)的有序抖动矩阵导出。处理单元1可运用以下基本2x2矩阵开始NOISE_TABLE的计算:
2x2矩阵可使用以下递归等式增大到例如4x4矩阵(例如,D4)、8x8矩阵(例如,D8)等(例如,表示为Dn的nxn矩阵):
使用上文等式,处理单元1可产生4x4矩阵D4。在上文等式中,Un是由所有矩阵组成的尺寸nxn的单位矩阵。举例来说,2x2矩阵[5,5,5,5](光栅扫描次序中所示出的值)还可表示为5*U2。在上文等式中,D2(a,b)Un/2意味着(行a,列b)处的值D2乘以单位矩阵Un/2,其中单位矩阵的尺寸以及输出矩阵(即,Dn)的尺寸取决于n的值。因此,为了计算D4,上文等式变成:
上文针对D4的等式简化成:
上文等式接着进一步简化成以下:
运用此等式,D4等于以下4x4矩阵:
处理单元1可通过减去D4的平均值(在此实例中为(120/16),其可四舍五入到值8)来修改D4,从而产生尺寸为4x4的最终矩阵的一个实例,例如:
经调整
举例来说,可从D4矩阵值减去平均值,从而使得平均值变成零或接近零,从而可形成具有[-x/2,x/2]范围而非[0,x]的噪声。在所示出的D4的实例中,D4的所有元素的算术平均值是120除以16,等于7.5。如所描述,经调整D4矩阵是4x4噪声表的一个实例。举例来说,在所示出的实例中,平均值四舍五入达8。然而,在其它实例中,任何Dn矩阵的平均值可舍去而非舍进(例如,在上文实例中,D4的平均值可舍去到7)。在其它实例中,任何Dn矩阵的平均值可任意地或非任意地指定为与平均值自身的值相比邻近或非邻近更低整数以及邻近或非邻近更高整数之间的任何值(例如,D4的平均值可指定为7与8之间的任何值,原因是在上文实例中平均值是7.5)。出于理解的目的,图9示出在常用倍频程(Octave)或矩阵实验室(MATLAB)数值分析软件包中使用上文等式的NOISE_TABLE的计算。应理解,处理单元1可被配置成进行或以其它方式实施贯穿本揭示所描述的任何功能。
虽然处理单元1在本文中已被描述为被配置成生成NOISE_TABLE或者进行或以其它方式计算任何等式,但是在一些实例中,处理单元1可被配置成预载有本文中所描述的NOISE_TABLE或任何其它NOISE_TABLE。类似地,处理单元1可被配置成预载有本文中所描述的任何信息。举例来说,任何预载信息可存储于处理单元1的内部存储器5中。在其它实例中,任何预载信息可存储于对于处理单元1可存取的系统存储器10中。
参考经调整Dn(即,在已从每个元素减去平均值或某一其它值以降低矩阵的平均值之后的Dn矩阵,其也可被称为噪声表),所有元素的算术平均值可以是零或接近0的任何值(例如,介于-1与1之间的任何值)。举例来说,参考上文示范性经调整D4(还有上文所描述的示范性NOISE_TABLE),所有元素的算术平均值是-0.5。由于-0.5接近零,因此抖动噪声可能不会在输出图像中引起否则会导致亮度偏移或其它图像处理伪影的明显的DC频移。在一些实例中,经调整Dn(例如,NOISE_TABLE)的所有列还可具有平均值零或接近0的任何值(例如,介于-1与1之间的任何值)。举例来说,参考上文示范性经调整D4(还有上文所描述的示范性NOISE_TABLE),每列的算术平均值是-0.5,其接近零,这意味着抖动噪声可能不会在输出图像中引起否则会导致亮度偏移的明显的DC频移。
图7示出根据低侧内插的一个实例的LUT输出值内插的一个实例。在低侧内插的一个实例中,处理单元1可被配置成使用与输入像素值相关联的LUT条目连同前一个LUT条目。处理单元1可被配置成使用两个点(即,LUT中的当前LUT输入值和前一个LUT输入值)来计算经抖动输入范围内的一或多个经内插LUT输出值。在图7中所示出的实例中,描绘LUT输入值3的低侧LUT输出值内插。在所描绘的实例中,LUT输入值2是LUT输入值3的前一个LUT条目。除非以其它方式陈述,否则LUT输入值3是点0(P0),且点1(P1)是用于线性内插的LUT中的前一个LUT输入值。连接P0和P1的线说明中间值(例如,经内插LUT输出值)的映射。
在一些实例中,处理单元1可被配置成进行低侧内插,如下:
上文等式中所阐述的值可导出如下:P0=(x0,y0)和P1=(x1,y1),其中y0=LUT(x0)且y1=LUT(x1)。x=输入+ni是抖动噪声,其中x1≤x≤x0且ni≤0。如本文中所描述,变量ni在一些实例中可与变量A相同,而在其它实例中不对应于A。
举例来说,假设处理单元1接收LUT输入值3。通常,LUT输入值3会映射到16。然而实际上,处理单元1可被配置成进行LUT输出值内插。在此实例中,处理单元1可被配置成生成随机噪声值+/-0.5。假设对于此实例,所生成的噪声值是-0.5。由于ni的值为负数,因此处理单元1可被配置成进行低侧内插。在LUT输入值等于3的情况下,P0=(3,16)、P1=(2,4)且x=2.5。使用这些值,处理单元1可被配置成计算经内插LUT输出值10。如图7中所示出,经抖动LUT输入值2.5对应于经内插LUT输出值10。
在另一实例中,假设处理单元1同样接收LUT输入值3。处理单元1可同样被配置成生成随机噪声值+/-0.5。然而,假设对于此特定实例,所生成的噪声值是-0.3,从而触发低侧LUT输出值内插。在LUT输入值等于3的情况下,P0=(3,16)、P1=(2,4)且x=2.7。使用这些值,处理单元1可被配置成计算经内插LUT输出值12.4。然而,LUT输出值12.4是不可用的。因此,处理单元1可被配置成使经内插LUT输出值四舍五入到最接近整数值,其中任何中间值(12.5)可取决于所述实例而舍进(例如,13)或舍去(例如,12)。在这种实例中,经内插LUT输出值12.4可舍去到12。在其它实例中,处理单元1可被配置成截断经内插LUT输出值的任何小数位。举例来说,经内插LUT输出值12.4可截断到12且经内插LUT输出值12.8也可截断到12。
在其它实例中,处理单元1可被配置成增加一或多个最低有效位以表示LUT输出值的分数部分。举例来说,而非四舍五入或截断经内插LUT输出值以产生整数值,处理单元1可被配置成使经内插LUT输出值四舍五入到最接近可用分数精确度或某一分数精确度。作为一个实例,处理单元1可被配置成增加一个最低有效位以按递增0.5的方式增加分数精确度。在这种实例中,处理单元1可被配置成使12.4四舍五入到12.5,从而产生二进制表示011001,其中最低有效位1表示12.5的.5。作为另一实例,处理单元1可被配置成增加两个最低有效位,以按递增0.25(例如,00=0、01=0.25、10=0.5且11=0.75的方式增加分数精确度。在这种实例中,处理单元1可被配置成使12.4四舍五入到12.5,从而产生二进制表示0110010,其中两个最低有效位10表示12.5的.5。在另一实例中,经内插LUT输出值12.7可四舍五入到12.75,从而产生二进制表示0110011,其中两个最低有效位11表示12.75的.75。
在其它实例中,处理单元1可被配置成分别向二进制表示或在二进制表示中增加、不增加、从二进制表示消除、不消除或修改一或多个最低有效位。举例来说,处理单元1可被配置成如此进行以使字长保持在通过在处理期间在某些点处修剪的控制下。
图8示出根据高侧内插的一个实例的LUT输出值内插的一个实例。在高侧内插的一个实例中,处理单元1可被配置成使用与输入像素值相关联的LUT条目连同下一个LUT条目。处理单元1可被配置成使用两个点(即,LUT中的当前LUT输入值和下一个LUT输入值)来计算经抖动输入范围内的一或多个经内插LUT输出值。在图8中所示出的实例中,针对LUT输入值3描绘高侧LUT输出值内插。在所描绘的实例中,LUT输入值4是LUT输入值3的下一个LUT条目。除非以其它方式陈述,否则LUT输入值3是点0(P0),且点2(P2)是用于线性内插的LUT中的下一个LUT输入值。连接P0和P2的线说明中间值(例如,经内插LUT输出值)的映射。
在一些实例中,处理单元1可被配置成进行高侧内插,如下:
上文等式中所阐述的值可导出如下:P0=(x0,y0)和P2=(x2,y2),其中y0=LUT(x0)且y2=LUT(x2)。x=输入+ni是抖动噪声,其中x0≤x≤x2且ni≥0。
举例来说,假设处理单元1接收LUT输入值3。通常,LUT输入值3会映射到16。然而实际上,处理单元1可被配置成进行LUT输出值内插。在此实例中,处理单元1可被配置成生成随机噪声值+/-0.5。假设对于此实例,所生成的噪声值是0.5。由于ni的值为正数,因此处理单元1可被配置成进行高侧内插。在LUT输入值等于3的情况下,P0=(3,16)、P2=(4,24)且x=3.5。使用这些值,处理单元1可被配置成计算经内插LUT输出值20。如图8中所示出,经抖动LUT输入值3.5对应于经内插LUT输出值20。
在另一实例中,假设处理单元1同样接收LUT输入值3。处理单元1可同样被配置成生成随机噪声值+/-0.5。然而,假设对于此特定实例,所生成的噪声值是0.1,从而触发高侧LUT输出值内插。在LUT输入值等于3的情况下,P0=(3,16)、P2=(4,24)且x=3.1。使用这些值,处理单元1可被配置成计算经内插LUT输出值16.8。然而,LUT输出值16.8是不可用的。因此,处理单元1可被配置成使经内插LUT输出值四舍五入到最接近整数值,其中任何中间值(16.5)可取决于所述实例而舍进(例如,17)或舍去(例如,16)。在这种实例中,经内插LUT输出值16.8可舍进达17。在其它实例中,处理单元1可被配置成截断经内插LUT输出值的任何小数位。举例来说,经内插LUT输出值16.8可截断到16。
在其它实例中,处理单元1可被配置成增加一或多个最低有效位以表示LUT输出值的分数部分。举例来说,而非四舍五入或截断经内插LUT输出值以产生整数值,处理单元1可被配置成使经内插LUT输出值四舍五入到最接近可用分数精确度。作为一个实例,处理单元1可被配置成增加一个最低有效位以按递增0.5的方式增加分数精确度。在这种实例中,处理单元1可被配置成使16.8四舍五入到17,从而产生二进制表示10010,其中最低有效位0表示17.0的.0。作为另一实例,处理单元1可被配置成增加两个最低有效位,以按递增0.25(例如,00=0、01=0.25、10=0.5且11=0.75)的方式增加分数精确度。在这种实例中,处理单元1可被配置成使16.8四舍五入到16.75,从而产生二进制表示1000111,其中两个最低有效位11表示16.75的.75。
在另一实例中,假设处理单元1接收LUT输入值4。处理单元1可被配置成生成随机噪声值+/-0.5。然而,假设对于此特定实例,所生成的噪声值是0.0。在这种实例中,处理单元1可被配置成不进行内插。实际上,处理单元1可被配置成使用经映射LUT输出值24而非触发任何内插(例如,低侧或高侧LUT输出值内插或任何其它内插技术)。
参考上文所描述的低侧和高侧内插,可出现两个表查找:一个查找对应于输入像素值的LUT输入值,而第二个查找可邻近对应于输入像素值的LUT输入值的LUT输入值。如本文中所描述,第二个查找可取决于所生成的噪声值为负还是正。在一些实例中,处理单元1可被配置成不并行地进行上文所描述的两个表查找,即使这将减小处理单元1的数据通过量(例如,小于1像素每时钟周期)。举例来说,处理单元1可被配置成使用LUT进行第一个查找,且接着在第一个查找后,处理单元1可被配置成使用LUT进行第二个查找。在其它实例中,处理单元1可被配置成与例如维持处理单元1的数据通过量(例如,1像素每时钟周期)并行地进行上文所描述的两个表查找。举例来说,处理单元1可被配置成在存储器中复制LUT,从而使得相同LUT对于两个不同的查找可并行存取。作为另一实例,处理单元1可被配置成并行地进行上文所描述的两个表查找而不复制LUT。举例来说,处理单元1可被配置成将LUT分成两半,其中LUT的一半可包含所有偶数编号的条目,而LUT的另一半可包含所有奇数编号的条目。通过以此方式使用两个一半尺寸的LUT,处理单元1可被配置成防止使存储相同LUT的两种情况的存储器消耗加倍或以其它方式使表尺寸加倍。
在其它实例中,处理单元1可被配置成根据不同于上文关于图7和/或8所描述的方法计算一或多个经内插LUT输出值。
图10是示出本揭示的实例方法的流程图。图10的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元或其任何组合)实行。图10描绘符合本揭示的一或多种技术的方法。
处理单元1可被配置成将对应于图像的第一像素的第一像素值输入到查找表(LUT)中(100)。LUT可将一或多个LUT输入值映射到一或多个LUT输出值。第一像素值可对应于映射到LUT中的第一LUT输出值的第一LUT输入值。第一像素可包含一或多个像素值。处理单元1可被配置成生成第一LUT输入值的噪声值(102)。处理单元1可被配置成选择第二LUT输入值(104)。第二LUT输入值可映射到第二LUT输出值。在一些实例中,处理单元1可被配置成选择第三LUT输入值,所述第三LUT输入值可映射到第三LUT输出值。
处理单元1可被配置成在第一LUT输入值的值范围内生成第一经内插LUT输出值(106)。在一些实例中,处理单元1可被配置成基于以下中的一或多个在第一LUT输入值的值范围内生成第一经内插LUT输出值:噪声值、第一LUT输入值、第一LUT输出值、第二LUT输入值和第二LUT输出值。第一经内插LUT输出值可以是非映射LUT输出值。在其它实例中,处理单元1可被配置成基于以下中的一或多个在第一LUT输入值的值范围内生成第一经内插LUT输出值:噪声值、第三LUT输入值、第三LUT输出值、第二LUT输入值和第二LUT输出值。在此类实例中,第二LUT输入值和/或第三LUT输入值可或可不邻近第一LUT输入值。处理单元1可被配置成使用第一经内插LUT输出值将图像转变成经转变图像(108)。
图11是示出本揭示的实例方法的流程图。图11的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元或其任何组合)实行。图11描绘符合本揭示的一或多种技术的方法。
处理单元1可被配置成将对应于图像的一或多个像素的多个像素值输入到查找表(LUT)中(120)。LUT可将一或多个LUT输入值映射到LUT中的一或多个LUT输出值。多个像素值中的每一个可分别对应于映射到一或多个LUT输出值中的一个的一或多个LUT输入值中的一个。一或多个像素可包含一或多个像素值。处理单元1可被配置成生成对应于每个像素值的每个LUT输入值的噪声值(122)。处理单元1可被配置成选择每个LUT输入值的第二LUT输入值(124)。第二LUT输入值可映射到第二LUT输出值。在一些实例中,处理单元1可被配置成选择每个LUT输入值的第三LUT输入值。第三LUT输入值映射到第三LUT输出值。
处理单元1可被配置成在值范围内生成对应于输入到LUT中的像素值的每个LUT输入值的经内插LUT输出值(126)。在一些实例中,处理单元1可被配置成基于以下中的一或多个在值范围内生成对应于输入到LUT中的像素值的每个LUT输入值的经内插LUT输出值:分别对应于输入到LUT中的每个像素值的噪声值、第一LUT输入值、第一LUT输出值、第一LUT输入值和第二LUT输出值。至少一个经内插LUT输出值可以是非映射LUT输出值。在其它实例中,处理单元1可被配置成基于以下中的一或多个在值范围内生成对应于输入到LUT中的像素值的每个LUT输入值的经内插LUT输出值:分别对应于输入到LUT中的每个像素值的噪声值、第三LUT输入值、第三LUT输出值、第二LUT输入值和第二LUT输出值。在此类实例中,第二LUT输入值和/或第三LUT输入值可或可不邻近第一LUT输入值。处理单元1可被配置成使用每个经内插LUT输出值将图像转变成经转变图像(128)。
图12是示出本揭示的实例方法的流程图。图12的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元或其任何组合)实行。图12描绘符合本揭示的一或多种技术的方法。
处理单元1可被配置成将对应于图像的第一像素的第一像素值输入到查找表(LUT)中(130)。LUT可将一或多个LUT输入值映射到一或多个LUT输出值。第一像素值可对应于映射到LUT中的第一LUT输出值的第一LUT输入值。第一像素可包含一或多个像素值。处理单元1可被配置成生成第一LUT输入值的噪声值(132)。处理单元1可被配置成选择第二LUT输入值(134)。第二LUT输入值可映射到第二LUT输出值。处理单元1可被配置成选择第三LUT输入值(136)。第三LUT输入值可映射到第二LUT输出值。第二LUT输入值和/或第三LUT输入值可或可不邻近第一LUT输入值。在一些实例中,处理单元1可被配置成基于以下中的一或多个选择第二LUT输入值和/或第三LUT输入值:噪声值、第二或第三LUT输入值与第一LUT输入值的邻近度和第二或第三LUT输入值与第一LUT输入值的非邻近度。
处理单元1可被配置成在第一LUT输入值的值范围内生成第一经内插LUT输出值(138)。在一些实例中,处理单元1可被配置成基于以下中的一或多个在第一LUT输入值的值范围内生成第一经内插LUT输出值:噪声值、第三LUT输入值、第三LUT输出值、第二LUT输入值和第二LUT输出值。第一经内插LUT输出值可以是非映射LUT输出值。在其它实例中,处理单元1可被配置成基于以下中的一或多个在第一LUT输入值的值范围内生成第一经内插LUT输出值:噪声值、第一LUT输入值、第一LUT输出值、第三LUT输入值、第三LUT输出值、第二LUT输入值和第二LUT输出值。处理单元1可被配置成使用第一经内插LUT输出值将图像转变成经转变图像(140)。
图13是示出本揭示的实例方法的流程图。图13的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元或其任何组合)实行。图13描绘符合本揭示的一或多种技术的方法。
处理单元1可被配置成将对应于图像的第一像素的第一像素值输入到查找表(LUT)中(150)。LUT可将一或多个LUT输入值映射到一或多个LUT输出值。第一像素值可对应于映射到LUT中的第一LUT输出值的第一LUT输入值。第一像素可包含一或多个像素值。处理单元1可被配置成生成第一LUT输入值的噪声值(152)。
在一些实例中,LUT可以是从单一LUT导出的两个LUT当中的第一LUT。单一LUT可将多个LUT输入值映射到一或多个LUT输出值。第一LUT可将多个输入值的子集映射到单一LUT的一或多个LUT输出值,且从单一LUT导出的第二LUT可将多个输入值的不同子集映射到单一LUT的一或多个LUT输出值。
处理单元1可被配置成基于噪声值生成第一LUT输入值的第一经内插LUT输出值(154)。在一些实例中,第一经内插LUT输出值可以是非映射LUT输出值。在一些实例中,处理单元1可被配置成选择第二LUT输入值。第二LUT输入值可映射到第二LUT输出值。在一些实例中,处理单元1可被配置成进一步基于第一LUT输入值、第二LUT输入值和第二LUT输出值的至少一个生成第一经内插LUT输出值。
在一些实例中,处理单元1可被配置成选择第二和第三LUT输入值。第二和第三LUT输入值可分别映射到第二和第三LUT输出值。在一些实例中,处理单元1可被配置成进一步基于第一LUT输入值、第二LUT输入值、第二LUT输出值、第三LUT输入值和第三LUT输出值中的至少一个生成第一经内插LUT输出值。在一些实例中,处理单元1可被配置成基于噪声值、第二或第三LUT输入值与第一LUT输入值的邻近度以及第二或第三LUT输入值与第一LUT输入值的非邻近度中的至少一个选择第二LUT输入值或第三LUT输入值。
处理单元1可被配置成使用第一经内插LUT输出值将图像转变成经转变图像(156)。
处理单元1可被配置成将对应于图像的第二像素的第一像素值输入到LUT中。在一些实例中,处理单元1可被配置成以与上文所描述的第一像素的第一像素值相同的方式处理第二像素值的第一像素值。在其它实例中,第二像素的第一像素值输入的LUT可不同于第一像素的第一像素值输入的LUT。举例来说,LUT可以是从单一LUT导出的两个LUT当中的第一LUT。单一LUT可将多个LUT输入值映射到一或多个LUT输出值。第一LUT可将多个输入值的子集映射到单一LUT的一或多个LUT输出值,且从单一LUT导出的第二LUT可将多个输入值的不同子集映射到单一LUT的一或多个LUT输出值。
处理单元1可被配置成将第一像素的第一像素值输入到从单一LUT导出的第一LUT中,并将第二像素的第一像素值输入到从单一LUT导出的第二LUT中。在此类实例中,处理单元1可被配置成以与上文所描述的第一像素的第一像素值相同的方式处理第二像素值的第一像素值,其中一个差别是第一和第二像素的第一像素值输入到其中的LUT。
图14是示出本揭示的实例方法的流程图。图14的方法可由一或多个处理单元1(例如,一或多个CPU、一或多个GPU、一或多个显示处理单元、一或多个其它处理单元或其任何组合)实行。图14描绘符合本揭示的一或多种技术的方法。
处理单元1可被配置成将对应于图像的一或多个像素的多个像素值输入到查找表(LUT)中(160)。LUT可将一或多个LUT输入值映射到LUT中的一或多个LUT输出值。多个像素值中的每一个可分别对应于映射到一或多个LUT输出值中的一个的一或多个LUT输入值中的一个。一或多个像素可包含一或多个像素值。处理单元1可被配置成生成对应于每个像素值的每个LUT输入值的噪声值(162)。
在一些实例中,LUT可以是从单一LUT导出的两个LUT当中的第一LUT,其中所述单一LUT将多个LUT输入值映射到一或多个LUT输出值。第一LUT可将多个输入值的子集映射到单一LUT的一或多个LUT输出值,且从单一LUT导出的第二LUT可将多个输入值的不同子集映射到单一LUT的一或多个LUT输出值。在此类实例中,对应于图像的一或多个像素的一或多个像素值可输入到从单一LUT导出的第一LUT中,且对应于图像的一或多个像素的一或多个像素值可输入到从单一LUT导出的第二LUT中。
处理单元1可被配置成基于分别对应于输入到LUT中的每个像素值的噪声值生成对应于输入到LUT中的每个像素值的每个LUT输入值的经内插LUT输出值(164)。在一些实例中,至少一个经内插LUT输出值可以是非映射LUT输出值。在一些实例中,处理单元1可被配置成选择每个LUT输入值的第二LUT输入值。第二LUT输入值可映射到第二LUT输出值。在一些实例中,处理单元1可被配置成进一步基于分别对应于输入到LUT中的每个像素值的第一LUT输入值、第二LUT输入值和第二LUT输出值中的至少一个生成对应于输入到LUT中的每个像素值的每个LUT输入值的第一经内插LUT输出值。
在一些实例中,处理单元1可被配置成选择每个LUT输入值的第二和第三LUT输入值。第二和第三LUT输入值可分别映射到第二和第三LUT输出值。在一些实例中,处理单元1可被配置成进一步基于分别对应于输入到LUT中的每个像素值的第一LUT输入值、第二LUT输入值、第二LUT输出、第三LUT输入值和第三LUT输出值中的至少一个生成对应于输入到LUT中的每个像素值的每个LUT输入值的第一经内插LUT输出值。在一些实例中,处理单元1可被配置成基于分别对应于输入到LUT中的每个像素值的噪声值、第二或第三LUT输入值与第一LUT输入值的邻近度以及第二或第三LUT输入值与第一LUT输入值的非邻近度中的至少一个选择每个LUT输入值的第二LUT输入值或第三LUT输入值。
处理单元1可被配置成使用每个经内插LUT输出值将图像转变成经转变图像(166)。
根据本揭示,在上下文并无其它指示的情况下,可将术语“或”推断为“和/或”。另外,虽然例如“一或多个”或“至少一个”等短语可能已用于本文所揭示的一些特征而非其它特征;但在上下文并无其它指示的情况下,未针对其使用此类语言的特征可解释为暗含此类含义。
在一或多个实例中,本文中所描述的功能可以硬件、软件、固件或其任何组合来实施。举例来说,尽管已在贯穿本揭示使用了术语“处理单元”,但应理解,此类处理单元可以硬件、软件、固件或其任何组合来实施。如果本文中所描述的任何功能、处理单元、技术或其它模块以软件实施,那么本文中所描述的所述功能、处理单元、技术或其它模块可存储于计算机可读媒体上或作为计算机可读媒体上的一或多个指令或代码发射。计算机可读媒体可包含计算机数据存储媒体或通信媒体,所述通信媒体包含促进计算机程序从一处传递到另一处的任何媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可以是可由一或多个计算机或者一或多个处理器存取以检索用于实施本揭示中所描述的技术的指令、代码和/或数据结构的任何可用媒体。借助于实例而非限制,此类计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。计算机程序产品可包含计算机可读媒体。
代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的集成或离散逻辑电路。因此,如本文中所使用的术语“处理器”可是指上述结构或适用于实施本文中所描述的技术的任何其它结构中的任一个。另外,在一些方面中,本文中所描述的功能性可在被配置成用于图像和/或视频处理的专用硬件和/或软件模块内提供。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本揭示的技术可实施于广泛多种装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本揭示中描述各种组件、模块或单元是为了强调被配置成进行所揭示的技术的装置的功能方面,但未必需要通过不同硬件单元实现。相反地,如上文所描述,各种单元可结合合适的软件和/或固件组合在任何硬件单元中,或通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
描述了各种实例。这些和其它实例在随附权利要求书的范围内。
Claims (30)
1.一种方法,包括:
通过处理单元将对应于图像的第一像素的第一像素值输入到查找表LUT中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到所述LUT中的第一LUT输出值的第一LUT输入值;
通过所述处理单元生成所述第一LUT输入值的噪声值;
通过所述处理单元基于所述噪声值生成所述第一LUT输入值的第一经内插LUT输出值;和
通过所述处理单元使用所述第一经内插LUT输出值将所述图像转变成经转变图像。
2.根据权利要求1所述的方法,其中所述第一经内插LUT输出值是非映射LUT输出值。
3.根据权利要求1所述的方法,进一步包括:
通过所述处理单元选择第二LUT输入值,其中所述第二LUT输入值映射到第二LUT输出值。
4.根据权利要求3所述的方法,进一步包括:
通过所述处理单元进一步基于所述第一LUT输入值、所述第二LUT输入值和所述第二LUT输出值中的至少一个生成所述第一经内插LUT输出值。
5.根据权利要求3所述的方法,其中所述LUT是从单一LUT导出的两个LUT当中的第一LUT,其中所述单一LUT将多个LUT输入值映射到一或多个LUT输出值,
其中所述第一LUT将所述多个输入值的子集映射到所述单一LUT的所述一或多个LUT输出值,且其中从所述单一LUT导出的第二LUT将所述多个输入值的不同子集映射到所述单一LUT的所述一或多个LUT输出值。
6.根据权利要求3所述的方法,进一步包括:
通过所述处理单元选择第三LUT输入值,其中所述第三LUT输入值映射到第三LUT输出值。
7.根据权利要求6所述的方法,进一步包括:
通过所述处理单元进一步基于所述第一LUT输入值、所述第二LUT输入值、所述第二LUT输出值、所述第三LUT输入值和所述第三LUT输出值中的至少一个生成所述第一经内插LUT输出值。
8.根据权利要求6所述的方法,进一步包括:
通过所述处理单元基于所述噪声值、所述第二或第三LUT输入值与所述第一LUT输入值的邻近度,以及所述第二或第三LUT输入值与所述第一LUT输入值的非邻近度中的至少一个选择所述第二LUT输入值或所述第三LUT输入值。
9.一种装置,包括:
存储器,其用于存储图像;和
一或多个处理器,其被配置成:
将对应于所述图像的第一像素的第一像素值输入到查找表LUT中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到所述LUT中的第一LUT输出值的第一LUT输入值;
生成所述第一LUT输入值的噪声值;
基于所述噪声值生成所述第一LUT输入值的第一经内插LUT输出值;和
使用所述第一经内插LUT输出值将所述图像转变成经转变图像。
10.根据权利要求9所述的装置,其中所述第一经内插LUT输出值是非映射LUT输出值。
11.根据权利要求9所述的装置,其中所述一或多个处理器被配置成:
选择第二LUT输入值,其中所述第二LUT输入值映射到第二LUT输出值。
12.根据权利要求11所述的装置,其中所述一或多个处理器被配置成:
进一步基于所述第一LUT输入值、所述第二LUT输入值和所述第二LUT输出值中的至少一个生成所述第一经内插LUT输出值。
13.根据权利要求11所述的装置,其中所述LUT是从单一LUT导出的两个LUT当中的第一LUT,其中所述单一LUT将多个LUT输入值映射到一或多个LUT输出值,其中所述第一LUT将所述多个输入值的子集映射到所述单一LUT的所述一或多个LUT输出值,且其中从所述单一LUT导出的第二LUT将所述多个输入值的不同子集映射到所述单一LUT的所述一或多个LUT输出值。
14.根据权利要求11所述的装置,其中所述一或多个处理器被配置成:
选择第三LUT输入值,其中所述第三LUT输入值映射到第三LUT输出值。
15.根据权利要求14所述的装置,其中所述一或多个处理器被配置成:
进一步基于所述第一LUT输入值、所述第二LUT输入值、所述第二LUT输出值、所述第三LUT输入值和所述第三LUT输出值中的至少一个生成所述第一经内插LUT输出值。
16.根据权利要求14所述的装置,其中所述一或多个处理器被配置成:
基于所述噪声值、所述第二或第三LUT输入值与所述第一LUT输入值的邻近度,以及所述第二或第三LUT输入值与所述第一LUT输入值的非邻近度中的至少一个选择所述第二LUT输入值或所述第三LUT输入值。
17.一种设备,包括:
用于将对应于图像的第一像素的第一像素值输入到查找表LUT中的装置,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到所述LUT中的第一LUT输出值的第一LUT输入值;
用于生成所述第一LUT输入值的噪声值的装置;
用于基于所述噪声值生成所述第一LUT输入值的第一经内插LUT输出值的装置;和
用于使用所述第一经内插LUT输出值将所述图像转变成经转变图像的装置。
18.根据权利要求17所述的设备,其中所述第一经内插LUT输出值是非映射LUT输出值。
19.根据权利要求17所述的设备,进一步包括:
用于选择第二LUT输入值的装置,其中所述第二LUT输入值映射到第二LUT输出值。
20.根据权利要求19所述的设备,进一步包括:
用于进一步基于所述第一LUT输入值、所述第二LUT输入值和所述第二LUT输出值中的至少一个生成所述第一经内插LUT输出值的装置。
21.根据权利要求19所述的设备,其中所述LUT是从单一LUT导出的两个LUT当中的第一LUT,其中所述单一LUT将多个LUT输入值映射到一或多个LUT输出值,其中所述第一LUT将所述多个输入值的子集映射到所述单一LUT的所述一或多个LUT输出值,且其中从所述单一LUT导出的第二LUT将所述多个输入值的不同子集映射到所述单一LUT的所述一或多个LUT输出值。
22.根据权利要求19所述的设备,进一步包括:
用于选择第三LUT输入值的装置,其中所述第三LUT输入值映射到第三LUT输出值。
23.根据权利要求22所述的设备,进一步包括:
用于进一步基于所述第一LUT输入值、所述第二LUT输入值、所述第二LUT输出值、所述第三LUT输入值和所述第三LUT输出值中的至少一个生成所述第一经内插LUT输出值的装置;和
用于基于所述噪声值、所述第二或第三LUT输入值与所述第一LUT输入值的邻近度,以及所述第二或第三LUT输入值与所述第一LUT输入值的非邻近度中的至少一个选择所述第二LUT输入值或所述第三LUT输入值的装置。
24.一种上面存储有指令的非暂时性计算机可读媒体,所述指令在被执行时使计算装置的一或多个处理器:
将对应于图像的第一像素的第一像素值输入到查找表LUT中,其中所述LUT将一或多个LUT输入值映射到一或多个LUT输出值,且其中所述第一像素值对应于映射到所述LUT中的第一LUT输出值的第一LUT输入值;
生成所述第一LUT输入值的噪声值;
基于所述噪声值生成所述第一LUT输入值的第一经内插LUT输出值;和
使用所述第一经内插LUT输出值将所述图像转变成经转变图像。
25.根据权利要求24所述的非暂时性计算机可读媒体,其中所述第一经内插LUT输出值是非映射LUT输出值。
26.根据权利要求24所述的非暂时性计算机可读媒体,进一步包括上面存储的指令,所述指令在被执行时使所述一或多个处理器:
选择第二LUT输入值,其中所述第二LUT输入值映射到第二LUT输出值。
27.根据权利要求26所述的非暂时性计算机可读媒体,进一步包括上面存储的指令,所述指令在被执行时使所述一或多个处理器:
进一步基于所述第一LUT输入值、所述第二LUT输入值和所述第二LUT输出值中的至少一个生成所述第一经内插LUT输出值。
28.根据权利要求26所述的非暂时性计算机可读媒体,其中所述LUT是从单一LUT导出的两个LUT当中的第一LUT,其中所述单一LUT将多个LUT输入值映射到一或多个LUT输出值,其中所述第一LUT将所述多个输入值的子集映射到所述单一LUT的所述一或多个LUT输出值,且其中从所述单一LUT导出的第二LUT将所述多个输入值的不同子集映射到所述单一LUT的所述一或多个LUT输出值。
29.根据权利要求26所述的非暂时性计算机可读媒体,进一步包括上面存储的指令,所述指令在被执行时使所述一或多个处理器:
选择第三LUT输入值,其中所述第三LUT输入值映射到第三LUT输出值。
30.根据权利要求29所述的非暂时性计算机可读媒体,进一步包括上面存储的指令,所述指令在被执行时使所述一或多个处理器:
进一步基于所述第一LUT输入值、所述第二LUT输入值、所述第二LUT输出值、所述第三LUT输入值和所述第三LUT输出值中的至少一个生成所述第一经内插LUT输出值;和
基于所述噪声值、所述第二或第三LUT输入值与所述第一LUT输入值的邻近度,以及所述第二或第三LUT输入值与所述第一LUT输入值的非邻近度中的至少一个选择所述第二LUT输入值或所述第三LUT输入值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562218333P | 2015-09-14 | 2015-09-14 | |
US62/218,333 | 2015-09-14 | ||
US14/939,749 | 2015-11-12 | ||
US14/939,749 US9639920B2 (en) | 2015-09-14 | 2015-11-12 | Dither directed LUT output value interpolation |
PCT/US2016/045345 WO2017048389A1 (en) | 2015-09-14 | 2016-08-03 | Dither directed lut output value interpolation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108027963A true CN108027963A (zh) | 2018-05-11 |
Family
ID=58237000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680052314.3A Pending CN108027963A (zh) | 2015-09-14 | 2016-08-03 | 抖动引导lut输出值内插 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9639920B2 (zh) |
EP (1) | EP3350768A1 (zh) |
JP (1) | JP2018530062A (zh) |
KR (1) | KR20180053715A (zh) |
CN (1) | CN108027963A (zh) |
WO (1) | WO2017048389A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019153799A1 (zh) * | 2018-02-06 | 2019-08-15 | 深圳创维-Rgb电子有限公司 | 色彩失真的补偿方法、装置和电视机 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10321164B2 (en) * | 2015-09-29 | 2019-06-11 | Apple Inc. | System and method for improving graphics and other signal results through signal transformation and application of dithering |
US9848141B2 (en) * | 2016-05-10 | 2017-12-19 | Semiconductor Components Industries, Llc | Image pixels having processed signal storage capabilities |
US10475164B2 (en) | 2017-09-12 | 2019-11-12 | Qualcomm Incorporated | Artifact detection in a contrast enhanced output image |
US11019014B2 (en) * | 2018-12-06 | 2021-05-25 | International Business Machines Corporation | Simultaneous message blocking and delivery |
KR20200084516A (ko) | 2019-01-03 | 2020-07-13 | 삼성전자주식회사 | 디스플레이장치, 영상공급장치, 및 그 제어방법 |
US11153373B2 (en) * | 2019-05-03 | 2021-10-19 | EMC IP Holding Company LLC | Method and system for performance-driven load shifting |
US11183146B1 (en) | 2020-08-26 | 2021-11-23 | Apple Inc. | Curvature interpolation for lookup table |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101018286A (zh) * | 2007-02-09 | 2007-08-15 | 天津大学 | 采用运动检测和自适应加权滤波的去隔行方法 |
CN101533599A (zh) * | 2004-06-10 | 2009-09-16 | 三星电子株式会社 | 在显示器系统中减少量化误差的方法 |
CN101873428A (zh) * | 2009-04-22 | 2010-10-27 | 佳能株式会社 | 图像处理装置及图像处理方法 |
JP2011091595A (ja) * | 2009-10-22 | 2011-05-06 | Kyocera Mita Corp | 画像処理装置、画像処理方法及び画像形成装置 |
US8711249B2 (en) * | 2007-03-29 | 2014-04-29 | Sony Corporation | Method of and apparatus for image denoising |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377041A (en) | 1993-10-27 | 1994-12-27 | Eastman Kodak Company | Method and apparatus employing mean preserving spatial modulation for transforming a digital color image signal |
JP4035176B2 (ja) | 1995-11-06 | 2008-01-16 | キヤノン株式会社 | 画像処理装置及び方法 |
US5905490A (en) | 1996-02-26 | 1999-05-18 | Seiko Epson Corporation | Generating color-correction look-up-table addresses by multi-level half-toning |
US6809740B1 (en) | 2000-07-26 | 2004-10-26 | Lexmark International, Inc. | Dithered quantization using neighborhood mask array to approximate interpolate |
US7397858B2 (en) | 2002-05-29 | 2008-07-08 | Innovation Management Sciences, Llc | Maintaining a plurality of codebooks related to a video signal |
JP4683994B2 (ja) * | 2005-04-28 | 2011-05-18 | オリンパス株式会社 | 画像処理装置、画像処理方法、電子カメラ、スキャナ |
WO2009004863A1 (ja) | 2007-07-04 | 2009-01-08 | Nec Corporation | 画像処理装置、表示装置及び画像処理方法並びにそのプログラム |
EP2618569A4 (en) | 2010-09-17 | 2014-04-23 | Nec Corp | VIDEO IMAGE ENCODING DEVICE AND VIDEO IMAGE DECODING DEVICE |
-
2015
- 2015-11-12 US US14/939,749 patent/US9639920B2/en active Active
-
2016
- 2016-08-03 EP EP16757397.1A patent/EP3350768A1/en not_active Withdrawn
- 2016-08-03 CN CN201680052314.3A patent/CN108027963A/zh active Pending
- 2016-08-03 JP JP2018512891A patent/JP2018530062A/ja active Pending
- 2016-08-03 WO PCT/US2016/045345 patent/WO2017048389A1/en active Application Filing
- 2016-08-03 KR KR1020187010379A patent/KR20180053715A/ko unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533599A (zh) * | 2004-06-10 | 2009-09-16 | 三星电子株式会社 | 在显示器系统中减少量化误差的方法 |
CN101018286A (zh) * | 2007-02-09 | 2007-08-15 | 天津大学 | 采用运动检测和自适应加权滤波的去隔行方法 |
US8711249B2 (en) * | 2007-03-29 | 2014-04-29 | Sony Corporation | Method of and apparatus for image denoising |
CN101873428A (zh) * | 2009-04-22 | 2010-10-27 | 佳能株式会社 | 图像处理装置及图像处理方法 |
JP2011091595A (ja) * | 2009-10-22 | 2011-05-06 | Kyocera Mita Corp | 画像処理装置、画像処理方法及び画像形成装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019153799A1 (zh) * | 2018-02-06 | 2019-08-15 | 深圳创维-Rgb电子有限公司 | 色彩失真的补偿方法、装置和电视机 |
Also Published As
Publication number | Publication date |
---|---|
JP2018530062A (ja) | 2018-10-11 |
KR20180053715A (ko) | 2018-05-23 |
US20170076431A1 (en) | 2017-03-16 |
US9639920B2 (en) | 2017-05-02 |
WO2017048389A1 (en) | 2017-03-23 |
EP3350768A1 (en) | 2018-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027963A (zh) | 抖动引导lut输出值内插 | |
CN107209923B (zh) | 图形处理中的混合渲染 | |
US10244238B2 (en) | Moving picture compression apparatus, image processing apparatus, moving picture compression method, image processing method, and data structure of moving picture compression file | |
KR20100089896A (ko) | 그래픽 시스템에서 2차 프로세서를 이용하기 위한 시스템 및 방법 | |
US20120262493A1 (en) | Pixel value compaction for graphics processing | |
US20130057562A1 (en) | Memory copy engine for graphics processing | |
CN110291562B (zh) | 缓冲器索引格式和压缩 | |
TWI590198B (zh) | 用於有效率的紋理壓縮之方法、處理器及機器可讀媒體 | |
KR20160051154A (ko) | 렌더링 방법, 렌더링 장치 및 전자 장치 | |
US9852536B2 (en) | High order filtering in a graphics processing unit | |
US20190035049A1 (en) | Dithered variable rate shading | |
EP3427229B1 (en) | Visibility information modification | |
EP1980998A2 (en) | Programmable graphics processing element | |
US9646359B2 (en) | Indefinite texture filter size for graphics processing | |
US11715253B2 (en) | Pixelation optimized delta color compression | |
KR20180053725A (ko) | 대역폭-압축된 그래픽스 데이터의 저장 | |
CN106575428B (zh) | 图形处理单元中的高阶滤波 | |
US9111328B2 (en) | Texture compression and decompression | |
CN110383339A (zh) | 用于图像渲染的索引值混合 | |
US10504462B2 (en) | Non-linear processing of two-dimensional data | |
JP6847033B2 (ja) | ハイブリッドブロックベースの圧縮 | |
US20180040095A1 (en) | Dynamic compressed graphics state references |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180511 |
|
WD01 | Invention patent application deemed withdrawn after publication |