首页> 中国专利> 利用新的部分更新图像的子像素着色

利用新的部分更新图像的子像素着色

摘要

本发明涉及利用新的部分更新图像的子像素着色。在图像更新中,显示装置仅接收显示器的图像的新的部分(1110)而不接收图像中剩余的、未变化的部分。该显示装置对新的部分执行子像素着色(SPR)操作(454),而不对整个图像重复执行SPR。提供了有效的技术以在图像的新的部分和其他部分之间的边缘处获得良好的外观。还提供了其他特征。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2014-09-10

    授权

    授权

  • 2013-02-13

    专利申请权的转移 IPC(主分类):G09G3/36 变更前: 变更后: 登记生效日:20130114 申请日:20100823

    专利申请权、专利权的转移

  • 2012-10-10

    实质审查的生效 IPC(主分类):G09G3/36 申请日:20100823

    实质审查的生效

  • 2011-03-30

    公开

    公开

说明书

技术领域

本发明的涉及子像素着色。

背景技术

在如下的权利共有的美国专利和专利申请中公开了新颖的子像素排列以改善图像显示设备的成本/性能曲线,包括:(1)发明名称为“ARRANGEMENTOF COLOR PIXELS FOR FULL COLOR IMAGING DEVICES WITHSIMPLIFIED ADDRESSING”的美国专利No.6,903,754(’754专利);(2)2002年10月22日提交的申请号为10/278,353且发明名称为“IMPROVEMENTS TOCOLOR FLAT PANEL DISPLAY SUB-PIXEL ARRANGEMENTS ANDLAYOUTS FOR SUB-PIXEL RENDERING WITH INCREASEDMODULATION TRANSFER FUNCTION RESPONSE”的美国专利公开No.2003/0128225(’225申请);(3)2002年10月22日提交的申请号为10/278,352且发明名称为“IMPROVEMENTS TO COLOR FLAT PANEL DISPLAYSUB-PIXEL ARRANGEMENTS AND LAYOUTS FOR SUB-PIXELRENDERING WITH SPLIT BLUE SUB-PIXELS”的美国专利公开No.2003/0128179(’179申请);(4)2002年9月13日提交的申请号为10/243,094且发明名称为“IMPROVED FOUR COLOR ARRANGEMENTS ANDEMITTERS FOR SUB-PIXEL RENDERING”的美国专利公开No.2004/0051724(’724申请);(5)2002年10月22日提交的申请号为10/278,328且发明名称为“IMPROVEMENTS TO COLOR FLAT PANEL DISPLAY SUB-PIXELARRANGEMENTS AND LAYOUTS WITH REDUCED BLUE LUMINANCEWELL VISIBILITY”的美国专利公开No.2003/0117423(’423申请);(6)2002年10月22日提交的申请号为10/278,393且发明名称为“COLOR DISPLAYHAVING HORIZONTAL SUB-PIXEL ARRANGEMENTS AND LAYOUTS”的美国专利公开No.2003/0090581(’581申请);以及(7)2003年1月16日提交的申请号为10/347,001且发明名称为“IMPROVED SUB-PIXELARRANGEMENTS FOR STRIPED DISPLAYS AND METHODS ANDSYSTEMS FOR SUB-PIXEL RENDERING SAME”的美国专利公开No.2004/0080479(’479申请)。上述’225、’179、’724、’423、’581和’479公开申请和美国专利No.6,903,754中的每一个都通过参考在这里整体引入。

在如下的权利共有的美国专利文献中公开了对于在水平方向上具有偶数个子像素的特定的子像素重复组,用于实现改善的系统和技术,例如极性反转方案和其他改善方案:(1)申请号为10/456,839且发明名称为“IMAGEDEGRADATION CORRECTION IN NOVEL LIQUID CRYSTAL DISPLAYS”的美国专利公开No.2004/0246280(’280申请);(2)申请号为10/455,925且发明名称为“DISPLAY PANEL HAVING  CROSSOVER  CONNECTIONSEFFECTING DOT INVERSION”的美国专利公开No.2004/0246213(’213申请);(3)申请号为10/455,931且发明名称为“SYSTEM AND METHOD OFPERFORMING DOT INVERSION WITH STANDARD DRIVERS ANDBACKPLANE ON NOVEL DISPLAY PANEL LAYOUTS”的美国专利公开No.2004/0246381(’381申请);(4)申请号为10/455,927且发明名称为“SYSTEMAND METHOD FOR COMPENSATING FOR VISUAL EFFECTS UPONPANELS HAVING FIXED PATTERN NOISE WITH REDUCEDQUANTIZATION ERROR”的美国专利公开No.2004/0246278(’278申请);(5)申请号为10/456,806且发明名称为“DOT INVERSION ON NOVEL DISPLAYPANEL LAYOUTS WITH EXTRA DRIVERS”的美国专利公开No.2004/0246279(’279申请);(6)申请号为10/456,838且发明名称为“LIQUIDCRYSTAL DISPLAY BACKPLANE LAYOUTS AND ADDRESSING FORNON-STANDARD SUBPIXEL ARRANGEMENTS”的美国专利公开No.2004/0246404(’404申请);(7)2003年10月28日提交的申请号为10/696,236且发明名称为“IMAGE DEGRADATION CORRECTION IN NOVEL LIQUIDCRYSTAL DISPLAYS WITH SPLIT BLUE SUBPIXELS”的美国专利公开No.2005/0083277(’277申请);以及,(8)2004年3月23日提交的申请号为10/807,604且发明名称为“IMPROVED TRANSISTOR BACKPLANES FORLIQUID CRYSTAL DISPLAYS COMPRISING DIFFERENI SIZEDSUBPIXELS”的美国专利公开No.2005/0212741(’741申请)。上述’280、’213、’381、’278、’404、’277和’741公开申请中的每一个都通过参考在这里整体引入。

在以上参考的美国专利文献和如下的权利共有的美国专利和专利申请中进一步公开的子像素着色(SPR)系统和方法结合时,上述改善特别显著:(1)2002年1月16日提交的申请号为10/051,612且发明名称为“CONVERSION OFA SUB-PIXEL FORMAT DATA TO ANOTHER SUB-PIXEL DATA FORMAT”的美国专利公开No.2003/0034992(’992申请);(2)2002年5月17日提交的申请号为10/150,355且发明名称为“METHODS AND SYSTEMS FORSUB-PIXEL RENDERING WITH GAMMA ADJUSTMENT”的美国专利公开No.2003/0103058(’058申请);(3)2002年8月8日提交的申请号为10/215,843且发明名称为“METHODS AND SYSTEMS FOR SUB-PIXEL RENDERINGWITH ADAPTIVE FILTERING”的美国专利公开No.2003/0085906(’906申请);(4)2003年3月4日提交的申请号为10/379,767且发明名称为“SYSTEMSAND METHODS FOR TEMPORAL SUB-PIXEL RENDERING OF IMAGEDATA”的美国专利公开No.2004/0196302(’302申请);(5)2003年3月4日提交的申请号为10/379,765且发明名称为“SYSTEMS AND METHODS FORMOTION ADAPTIVE FILTERING”的美国专利公开No.2004/0174380(’380申请);(6)发明名称为“SUB-PIXEL RENDERING SYSTEM AND METHODFOR IMPROVED DISPLAY VIEWING ANGLES”的美国专利No.6,917,368(’368专利);以及,(7)2003年4月7日提交的申请号为10/409,413且发明名称为“IMAGE DATA SET WITH EMBEDDED PRE-SUBPIXEL RENDEREDIMAGE”的美国专利公开No.2004/0196297(’297申请)。上述’992、’058、’906、’302、’380和’297申请和’368专利中的每一个都通过参考在这里整体引入。

在如下的权利共有的美国专利和共同待审的美国专利申请中公开了在色域转换和映射方面的改善:(1)发明名称为“HUE ANGLE CALCULATIONSYSTEM AND METHODS”的美国专利No.6,980,219(’219专利);(2)2003年10月21日提交的申请号为10/691,377且发明名称为“METHOD ANDAPPARATUS FOR CONVERTING FROM SOURCE COLOR SPACE TOTARGET COLOR SPACE”的美国专利公开No.2005/0083341(’341申请);(3)2003年10月21日提交的申请号为10/691,396且发明名称为“METHOD ANDAPPARATUS FOR CONVERTING FROM A SOURCE COLOR TO A TARGETCOLOR SPACE”的美国专利公开No.2005/0083352(’352申请);以及(4)2003年10月21日提交的申请号为10/690,716且发明名称为“GAMUTCONVERSION SYSTEM AND METHODS”的美国专利公开No.2005/0083344(’344申请)。上述’341、’352和’344申请和美国专利’219中的每一个都通过参考在这里整体引入。

在如下的美国专利申请中描述了额外的优点:(1)2003年10月28日提交的申请号为10/696,235且发明名称为“DISPLAY SYSTEM HAVINGIMPROVED MULTIPLE MODES FOR DISPLAYING IMAGE DATA FROMMULTIPLE INPUT SOURCE FORMATS”的美国专利公开No.2005/0099540(’540申请);和(2)2003年10月28日提交的申请号为10/696,026且发明名称为“SYSTEM AND METHOD FOR PERFORMING IMAGERECONSTRUCTION AND SUBPIXEL RENDERING TO EFFECT SCALINGFOR MULTI-MODE DISPLAY”的美国专利公开No.2005/0088385(’385申请)。上述专利申请中的每一个都通过参考在这里整体引入。

此外,如下这些权利共有和共同待审申请中的每一个都通过参考在这里整体引入:(1)申请号为10/821,387且发明名称为“SYSTEM AND METHODFOR IMPROVING SUB-PIXEL RENDERING OF IMAGE DATA INNON-STRIPED DISPLAY SYSTEMS”的美国专利公开No.2005/0225548(’548申请);(2)申请号为10/821,386且发明名称为“SYSTEMS AND METHODSFOR SELECTING A WHITE POINT FOR IMAGE DISPLAYS”的美国专利公开No.2005/0225561(’561申请);(3)申请号分别为10/821,353和10/961,506且发明名称同为“NOVEL SUBPIXEL LAYOUTS AND ARRANGEMENTSFOR HIGH BRIGHTNESS DISPLAYS”的美国专利公开No.2005/0225574(’574申请)和美国专利公开No.2005/0225575(’575申请);(4)申请号为10/821,306且发明名称为“SYSTEM AND METHOD FOR IMPROVED GAMUTMAPPING FROM ONE IMAGE DATA SET TO ANOTHER”的美国专利公开No.2005/0225562(’562申请);(5)申请号为10/821,388且发明名称为“IMPROVED SUBPIXEL RENDERING FILTERS FOR HIGH BRIGHTNESSSUBPIXEL LAYOUTS”的美国专利公开No.2005/0225563(’563申请);以及(6)申请号为10/866,447且发明名称为“INCREASING GAMMA ACCURACYIN QUANTIZED DISPLAY SYSTEMS”的美国专利公开No.2005/0276502(’502申请)。

在如下的申请中描述了对显示系统及其操作方法的额外的改进和实施例:(1)2006年4月4日提交的发明名称为“EFFICIENT MEMORY STRUCTUREFOR DISPLAY SYSTEM WITH NOVEL SUBPIXEL STRUCTURES”的专利合作条约(PCT)申请No.PCT/US 06/12768;(2)2006年4月4日提交的发明名称为“SYSTEMS AND METHODS FOR IMPLEMENTING LOW-COSTGAMUT MAPPING ALGORITHMS”的专利合作条约(PCT)申请No.PCT/US06/12766;(3)2006年4月4日提交的发明名称为“SYSTEMS AND METHODSFOR IMPLEMENTING IMPROVED GAMUT MAPPING ALGORITHMS”的美国专利申请号No.11/278,675,其还以美国专利申请公开2006/0244686公开;(4)2006年4月4日提交的发明名称为“PRE-SUBPIXEL RENDERED IMAGEPROCESSING IN DISPLAY SYSTEMS”的专利合作条约(PCT)申请No.PCT/US 06/12521;以及(5)2006年5月19日提交的发明名称为“MULTIPRIMARY COLOR SUBPIXEL RENDERING WITH METAMERICFILTERING”的专利合作条约(PCT)申请No.PCT/US 06/19657。上述这些权利共有的申请中的每一个也通过参考在这里整体引入。

如上面提及的一些专利申请中描述的一样,通过大量被称为像素的区域106(图1)代表图像104(图1)。各像素106都与必须由显示器110中的一组子像素来显示的颜色相关联。各子像素显示“基”色,即各子像素都与某种色调和饱和度相关联。通过混合基色获得其他颜色。各像素106被映射到将要用来显示像素的颜色的一组子像素,这组子像素包含一个或多个的子像素。

在某些显示器中,每一组子像素都包括每种基色的子像素。子像素很小,并且相互间隔很近,以提供期望的分辨率。然而这样的结构是不经济的,因为它不匹配人眼视觉的分辨率。相比色度差,人类对于亮度(luminance)差的感知更明显。因此,某些显示器将输入像素106映射到不包括每种基色的子像素的子像素组。尽管色度分辨率降低,但是可将亮度分辨率保持很高。

如图1所示,并且在2006年11月30日公开为No.WO 2006/127555A2的PCT申请和2006年11月2日公开为No.US 2006/0244686A1(美国专利申请号11/278,675)当中描述了一种这样的显示器110。显示器110是RGBW类型的,具有红色子像素120R、蓝色子像素120B、绿色子像素120G和白色子像素120W。所有这些子像素120面积上都是相同的。每一组子像素由在同一行上两个相邻的子像素组成。这些组124在下文中被称为“对”。每个对124由红色子像素120R和绿色子像素120G组成(这样的对在下文中被称为“RG对”),或是每个对由蓝色子像素120B和白色子像素120W组成(“BW对”)。在每个RG对中,红色子像素位于绿色子像素的左侧。在每个BW对中,蓝色子像素处在左侧。在每行和每列中RG对和BW对交替。

图像中的第x列第y行上的各像素106(下文中称为像素“106x,y”)被映射到第x列第y行上的子像素对124(下文中的“124x,y”)。在显示器110中,连续的指数x和y表示连续的对,但不是连续的子像素。各个对124仅有两个子像素,并提供在亮度上而非色度上的高范围和高分辨率。因此,如图2所示,并且如在前述的某些专利申请中所述的“子像素着色操作(SPR)”中,一部分输入像素的亮度可能必须偏移至邻近的对124。

图2示出了对于红色和绿色子像素的SPR操作。可以相似的方式来处理蓝色和白色子像素。SPR操作以线性方式计算分别定义了红色、绿色、蓝色和白色子像素的亮度的值RW、GW、BW、WW,即亮度是子像素值的线性函数(对于不同的基色可使用不同的函数)。值RW、GW、BW、WW随后被用来确定对子像素提供的电信号以获得期望的亮度。

图2示出了在每个子像素对124上叠加的像素106。蓝色和白色子像素没有示出。显示区域被细分成以每个RG对124为中心的“采样”区域250。可以不同的方式来定义采样区域250,并且在图2中选择了菱形区域250。除了显示器的边缘位置外,区域250彼此之间是全等的(congruent)。

在线性RGBW色坐标系统下表示各像素106的颜色。对于每个RG对124x,y红色子像素的RW值被确定为与以RG对124x,y为中心的采样区域250重叠的所有像素106的R坐标的加权总和。权重被选择为总和为1,并与采样区域250和各像素106重叠的区域呈比例。特别的,如果子像素对124x,y不位于显示器的边缘位置,则红色值RW为:

RW=1/2*Rx,y+1/8*Rx-1,y+1/8*Rx+1,y+1/8*Rx,y-1+1/8*Rx,y+1    (1)

换句话说,通过利用如下的滤波器内核对像素106的各个R坐标应用3×3菱形滤波器来着色红色子像素120R:

01/801/81/21/801/80---(2)

还可对绿色、蓝色和白色子像素(除了边缘之外)使用相同的滤波器内核。还可使用其他的滤波器内核。参见例如前面提到的美国专利公开No.2005/0225563。

期望提供一种子像素着色技术,其在计算上成本低,不需要投入过多的资金,并且在功率消耗方面效率高。

发明内容

这部分总结了本发明的一些特征。在随后的部分中还描述了其他的特征。本发明是由所附的权利要求限定的,其通过参考被引入在这部分当中。

本发明的某些实施例提供了子像素着色技术,其在运算方面节约成本,不需要花费大量的金钱并且在功率消耗方面是高效的。然而,本发明并不局限于这些实施例。

在传统的显示器中,是以帧显示数据。一帧是显示整个图像104所需的时间间隔。即使部分图像是未变化的,仍对整个图像的各帧都执行子像素着色。对于图像的未变化部分执行SPR在运算上是不高效的且在功率方面也是浪费的。因此,本发明的某些实施例不对图像的未变化部分再执行SPR。

还期望的是实现“位块图像传送”(bit blit)操作,其中显示器仅接收图像的新的部分的像素数据106。(如这里所使用的,“新的部分”表示显示器接收的用于更新图像的部分;“新的部分”不一定都是全新的,即它还可包括图像的未变化的部分;事实上,如果整个图像是未变化的,则所有的新的部分表示表图像的未变化部分。)由于诸如(1)和(2)等SPR操作从多个像素(其中一些像素不是新的部分)确定子像素值,因此仅对图像的新的部分执行SPR是有问题的。例如,必须利用不是新的部分的像素的RGBW坐标确定新的部分的边缘处子像素值。某些实施例保存整个图像的RGBW数据以实现新的部分边缘处的SPR。其他实施例根本不保存RGBW数据以降低存储器的需求。因此,在某些实施例中,在SPR之后立即丢弃RGBW数据。因此,当正在显示新的部分时,在新的部分的边缘处会发生图像的降级。然而,某些实施例提供了用于降低这样的降级的有效技术。

本发明并不局限于RGBW显示器或是上面讨论过的其他特征,除由所附的权利要求书中限定的之外。

附图说明

图1示出了将像素构成的图像映射到具有子像素的显示器的现有技术;

图2是根据现有技术的子像素着色操作的几何示意图;

图3是根据本发明某些实施例的显示设备的方框图;

图4示出了图3的显示设备的某些实施例中的数据路径;

图5示出了具有对角线的图像;

图6示出了图3的显示设备的某些实施例中的数据路径;

图7A、图7B示出了在图5的图像处理的不同阶段中的可能的子像素值;

图8是根据本发明某些实施例的子像素着色的流程图;

图9是根据本发明某些实施例的色域钳位(gamut clamping)的流程图;

图10是图3的显示设备的一部分的前视图,以描绘图9的色域钳位操作的某些方面;

图11至图13示出了在图像部分的更新中的像素区域;

图14示出了本发明的某些实施例中的像素、子像素和帧缓冲器中的子像素数据排列。

具体实施方式

在本部分中描述的实施例阐述但其不用来限定本发明。本发明是由所附的权利要求来限定。

现在将会描述适用于位块图像传送(bit-blit)和非位块图像传送(nonbit-blit)的图像处理的一些SPR技术。

子像素着色中执行的亮度偏移可能不利地导致诸如模糊或局部对比度损失等图像降级。可通过应用锐化滤波器(例如DOG,即高斯差分)来改善图像。见例如前面提到的PCT申请WO 2006/127555。关于图像质量的其他额外的改善也是期望的。

进一步,如上所述的一些操作会导致某些子像素值处在色域外,特别是在对色域限制明亮度(brightness)以降低功率消耗时。强迫子像素值进入可利用的色域可能引起图像变形,例如降低局部对比度,因此这样的变形必须被最小化。期望改善色域映射操作,特别是在低明亮度环境中。

图3示出了与本发明的某些实施例一起使用的显示装置的方框图。例如,这可以是液晶显示器(LCD)。显示单元110可以如图1所示。由背光单元310发射的光经过显示器110的子像素到达观察者314。以数字形式将图像数据104提供给用于执行如图2所示的子像素着色和其他一些可能的操作的图像处理电路320,并向显示器110提供子像素值R、G、B、W。通过适当的修改(例如,在显示单元110提供的亮度是显示单元接收到的子像素值的非线性函数的情形下的伽马转换)从SPR处理中生成的RW、GW、BW、WW值获得上述这些子像素值。向显示单元110提供的各子像素值定义了为获得期望的图像必须由相应的子像素透射多少光。图像处理电路320还向背光单元310提供用于指定背光单元的输出功率的控制信号BL。为了降低功率消耗,输出功率BL应该仅与图像中的最高的子像素值所需的功率一样高。因此,可基于子像素值动态地控制输出功率BL。这称作动态背光控制(DBLC)。电路320调节子像素值RGBW以便在BL较低时子像素更能透射。在特别强调功率的环境下(例如,在诸如移动电话等电池操作系统中),BL值比最高的子像素值所需的值较低。这称为“侵略性DBLC”(“aggressive DBLC”)。侵略性DBLC可能导致对比度方面的损失。

图4示出了电路320的某些实施例中的数据路径。方框410将图像104(各像素106的颜色)转换到线性色彩空间,例如线性RGB。方框420将图像从线性RGB空间转换到线性RGBW表示。方框430使用线性RGBW数据以确定对于DBLC或侵略性DBLC操作而言背光单元的输出功率信号BL,并将信号BL提供给背光单元310。方框420还向方框444提供关于信号BL的信息。方框444使用该信息来缩放RGBW坐标以调节背光单元的输出功率BL。缩放操作会驱使某些颜色到显示器110的色域外,特别是对于侵略性DBLC而言。方框450执行色域钳位(色域映射)操作以用色域内的颜色替代色域外的颜色。

方框454对于方框450的输出执行子像素着色(例如,如图2所示)。此外,还可以应用锐化滤波器。在前面提及的PCT申请WO 2006/127555和2006年11月2日公开的美国专利申请公开2006/0244686中描述了称为“meta luma”锐化的示例,这两份专利文件都通过参考引入到这里。更具体的,方框420中从RGB到RGBW的转换不是唯一的,这是因为相同的颜色具有不同的RGBW表示。这样的表示在一些文献中被称为“条件等色(metamer)”。(其他文献使用术语“条件等色”来表示有不同光谱功率分布但被感知为相同颜色的电磁波,但是不同的RGBW表示不必然意味着不同的光谱功率分布。)metaluma锐化基于像素106相对于周边的相对明亮度来选择每个像素106的条件等色。假设像素106与紧上方、紧下方、紧左侧、紧右侧的周边像素相比更明亮。如果将明亮的像素106映射到BW对124,则期望选择具有较大W坐标的条件等色以提高BW对的亮度。如果将明亮的像素106映射到RG对,则期望选择具有较大R和G坐标的条件等色,因此得到较小的W坐标。

锐化的另一示例是高斯差分。还可应用其他类型的锐化。

所得到的子像素值被提供给显示器110(如果显示器110中的子像素亮度不是子像素值的线性函数,则可能在伽马转换之后)。图4不是可执行的全部操作的全部表示。例如,还可追加抖动和其他操作。此外,操作不必独立地执行或是按照如上所述的顺序执行。

图1所示的显示器110对于某些特征而言可比其他特征更佳地(更锐利地)显示。例如,由于各行子像素120都包括全部基色(红色、绿色、蓝色和白色)的子像素,因此水平线可以作成相当锐利。出于相似的缘故,垂直线也是锐利的。然而,由于子像素对124的各个对角线都仅包括RW对或仅包括RG对,因此较难使得对角线变得锐利。如果图像104具有映射到RW对124的对角线或BW对的对角线的对角线,则该对角线将会变得模糊,这是由于SPR操作中执行的亮度偏移造成的。例如,假设将红色对角线D(图5)映射到BW像素对124上。SPR操作将会等量地偏移红色能量至邻近的对角线A、B(映射到RG对),由此对角线D会变得模糊。

在本发明的某些实施例中,将SPR操作修改为,使得邻近的对角线A和B中的一条与对角线A和B中的另一条相比较,从D偏移更多的能量。结果,对角线D将会变得更加锐利。

进而,在传统的LCD显示器中,以帧的方式来显示数据。帧是显示整个图像104所需的时间间隔。即使图像不改变,仍对每个帧执行图4的数据处理(例如,每秒60或者更多帧)。这在许多方面都是低效率的,包括功率消耗、数据处理资源的使用(例如,电路320中的微处理器资源)、显示图像中的变化所需的时间等。因此,对于每个新的帧,期望最小化对未变化的图像部分的处理。特别地,期望避免对未变化的图像部分再做SPR处理(方框454)。然而,这在图4的实施例中是很困难,因为即使图像中很小的变化都可能影响方框420生成的RGBW坐标的最大值并且因此可能影响方框430生成的BL值。如果BL值发生变化,则不得不对于整个图像再做缩放和色域钳位操作(444、450)。

图6示出了可选实施例,其中在SPR之后执行缩放(444)、色域钳位(450)和确定BL值(430)。这里,将SPR输出保存在帧缓冲器610当中,并在每一帧中,仅对图像中变化的部分(可在操作410前确定变化的部分)执行操作410、420、454。该实施例减少了对未变化的图像部分的重复处理。然而,色域钳位(450)可能导致如上所述的局部对比度的损失,该损失不会被与SPR结合执行的锐化操作所校正。因此,在本发明的某些实施例中,由方框450执行其他类型的锐化,尤其是针对对角线。例如,假设对角线D(图5)是由明亮的饱和色所包围的暗线。明亮的饱和色很可能出现在色域外,这是因为它们的亮度不能完全地被白色子像素所共享。暗线D将可能出现在色域内。传统的色域钳位操作将会降低周边子像素的亮度以降低和线D的对比度,并使得线D几乎不可见。在某些实施例中,色域钳位检测明亮的饱和周边上的暗的对角线并降低暗的对角线的亮度以提高局部对比度。

本发明包括以相对低的成本提高图像质量的实施例。更具体的,电路320可构造成细致地分析图像104并对任何种类的图像都提供最佳的图像质量,这样的电路也处在本发明的范围之内,但是这样的电路可能是大的和/或复杂的和/或慢的。在某些实施例中,可以简化图像分析来以合理的成本对多数图像提供高的图像质量。

除了所附的权利要求所限定的特征和优点之外,本发明并不局限于如上所述的特征和优点。例如,本发明并不局限于图1所示的显示器110、RGBW显示器、或是对角线相比水平或垂直线承载了较少色度信息的显示器。某些实施例锐化非对角线特征。

下面将会针对图1和图3的显示单元110的示例描述本发明的某些实施例。数据处理将被假设为如图4或图6中一样。

转换到RGBW(步骤420)。出于说明的目的,假设方框410对于每个像素106输出线性RGB色彩空间下的色坐标r、g、b。r、g、b坐标中的每一个是允许从0到某个最大数MAXCOL闭区间之间变化的整数。例如,如果r、g和b表示为8比特,则MAXCOL=255。在某些实施例中,以更多的比特来保存色坐标以避免精度的损失。例如,如果开始时以每个坐标为8比特值将像素颜色表示在非线性色彩空间(例如,sRGB)中,则转换到线性RGB色彩空间(“伽马转换”)可能对r、g和b产生分数数值。为了减小量化误差,将r、g、b中的每一个表示为11比特,具有MAXCOL=2047。

颜色r=g=b=0是全黑色,而颜色r=g=b=MAXCOL是可能的最明亮的白色。假设RGBW是R、G、B、W中的每一个都是从0至MAXCOL闭区间之间变化的整数的线性表达。最明亮的RGB白色被转换为最明亮的RGBW白色,其坐标是R=G=B=W=MAXCOL。这些假设是非限制性的。对于不同的坐标(r,g,b,R,G,B,W),MAXCOL可以是不同的,其他的变化也是可能的。

公知的,在这些假设下,可执行如下的转换以满足如下等式:

r=M0R+M1W                       (3)

g=M0G+M1W

b=M0B+M1W

其中,M0和M1是如下的对应于像素120的亮度特性的常数:

M0=(Yr+Yg+Yb)/(Yr+Yg+Yb+Yw)     (4)

M1=Yw/(Yr+Yg+Yb+Yw)

其中,Yr、Yg、Yb、Yw定义如下。Yr是当背光单元310在某个参考输出功率(例如,最大功率)下运行,所有的红色子像素120R具有最大的透射并且所有的剩余的子像素都具有最小的透射时显示器110的亮度。对于绿色、蓝色和白色子像素都以相似的方式来定义值Yg、Yb、Yw

如果W坐标是已知的,则可从(3)计算R、G和B坐标。等式(3)清楚地要求,如果r、g或b是零,则W必须是零。如果r=g=b=MAXCOL,则W=MAXCOL。然而,对于许多颜色,可以多种方式来选择W(以定义一个或多个条件等色)。为了使得R、G、B、W中的每一个都处在0到MAXCOL的范围内,W必须处在如下的范围内:

minW≤W≤maxW               (5)

其中

minW=[max(r,g,b)-M0*MAXCOL]/M1

maxW=min(r,g,b)/M1

为了以最小的输出功率BL提供高的图像质量,每个像素106中的R、G、B和W坐标优选地应该彼此接近。在某些实施例中,将W设定为max(r,g,b)。对于W,其他选择也是可能的。参见上面提到的美国专利申请2006/0244686(Higgins等人)。例如,可以将W设定为亮度的表达,例如,如下面给出的附录A(权利要求书之前)中的等式(A1)中一样。在如上所述的计算之后,可将W值硬钳位(hard-clamp)至minW到maxW之间的范围。(如这里所使用的,将一数值“硬钳位”至某个数A到数B之间的范围内是指,如果该数值小于A,则将该数设定为下限A;而如果该数大于B,则将该数设定为上限B。)

等式(3)可能要求值R、G、B超出MAXCOL,并与MAXCOL/M0一样大。例如,如果b=0,则W=0;如果r=g=MAXCOL,则R=G=MAXCOL/M0。出于说明的目的,假设M0=M1=1/2,即白色子像素与红色、绿色和蓝色子像素一样明亮。在这种情况下,R、G和B值可与2*MAXCOL一样大。显示器110仅接受线性RGBW坐标不超出MAXCOL的颜色。为了显示其他颜色,可使背光单元的功率BL乘以1/M0(即,当M0=1/2时,则两倍),并使RGBW坐标乘以M0(除以2)。然而,为了节约电能,某些实施例不增大背光单元的功率或是通过乘以小于1/M0的倍数来使增大背光单元的功率。所产生的对比度损失可能与图7A所示的一样严重。图7A示出了在图6所示的处理的不同阶段对于对角线D(图5)、处于D之上的邻近对角线A和AA、以及处于D之下的邻近对角线B和BB的示例性最大子像素值。假设对角线D是暗的(例如,全黑色),而对角线A、AA、B、BB都是明亮的饱和红色(即,坐标r靠近MAXCOL,而g和b接近0)。在这种情况(见图7A的部分I)下,方框420会在所有的对角线上将W设定为接近0。在对角线D上,值R、G、B同样将接近0。在剩余的对角线上,R将会接近2*MAXCOL,而G和B将会接近0。

假设将对角线D映射到RG对。图7A的部分II示出了SPR步骤454之后的子像素值。菱形滤波器(1)和(2)利用权重1/2将红色亮度从对角线A和B偏移至对角线D上的红色子像素。因此,对角线D上的红色子像素的值变得靠近MAXCOL。对角线A和B被映射到BW对,因此相当暗。对角线AA和BB保持明亮的饱和红色(红色子像素的值接近2*MAXCOL)。即使增大背光单元功率(例如,加倍),仍存在对比度损失,因为与部分I(SPR之前)相比,对角线D和邻近对角线A、AA、B、BB之间的对比度被降低。

进一步,假设不增大背光单元功率,即将其维持为仅对于不超出MAXCOL的像素值而言充分的等级。这样,对角线AA和BB将会处在色域外。图7A的部分III示出了色域钳位450之后的子像素值。对角线AA和BB上的最大子像素值被降低到大约MAXCOL,并且对角线D上的最大子像素值也略微降低但仍维持靠近MAXCOL。因此,几乎完全地丧失了原始图像中对角线D和周围像素之间的高对比度。

Meta luma锐化操作加重了对比度损失,因为在对角线D上,条件等色将会被选择为具有较小的W值、以及因此较大的R和G值,因此可能会提高对角线上的亮度。

在本发明的某些实施例中,在图6的步骤444(缩放)和450(色域钳位),对于“黑洞”(即,类似于图7A的部分II中的特征)进行核对。如果检测到黑洞,则与没有检测到黑洞的情形相比较,使得黑洞内部(对角线D上)的子像素值降低更大的量。下面将会结合图9-10对其更加详细地描述。

如果对角线D是被映射到BW对的明亮的饱和红色并且周围的像素106是暗的,则也可能发生对比度的损失。参见图7B的部分I。SPR操作将红色亮度从对角线D偏移到A和B。参见图7B的部分II。红色线D将会变得更宽并且因此可能会模糊。在本发明的某些实施例中,菱形滤波器和meta luma锐化在对角线或接近对角线的位置被抑制,并且所有或几乎所有的亮度从D偏移到A和B中的一个而非两者(例如,在图7B的示例部分II′中的对角线B)。例如,出于上述目的,可使用非对称的箱式滤波器。

图8示出了本发明的某些实施例的子像素着色操作454的流程图。对于每个像素106x,y,在步骤810中运行测试以确定该像素是否处在饱和的色彩区域内。特别地,在某些实施例中,该测试可确定像素106x,y或紧左、紧右、紧上或紧下的任意像素是否包含饱和的颜色。如果回答是“否”,则在步骤820执行常规的处理,例如对像素106x,y应用菱形滤波器(1)和(2)并执行meta luma锐化。值得注意的是,可利用相同的滤波器,并将超出该边缘的不存在的像素的坐标设定为一些预定值,例如零处理显示器的边缘处的像素106。可选地,可通过镜像边缘处的像素来定义超出边缘的不存在的像素106。例如,如果将左边缘定义为x=0并且将右边缘定义为x=xmax,则可将超出左边缘和右边缘的不存在的像素定义为106-1,y=1060,y和如果y从0变化为ymax,则106-1,y=1060,y和此外,如果需要(例如,对于DOG滤波器),可将不存在的角落像素定义为106-1,-1=1060,0并以相似的方式镜像其他三个角落处的像素。通过这里提及的其他滤波操作可执行对边缘和角落的相似处理(利用镜像值或预定值)。

如果回答为“是”,则进行像素106x,y是否处在对角线上或接近对角线的核对(步骤830)。如果回答是“否”,则应用菱形滤波器(1)和(2)(步骤840)。然而,由于对于饱和的颜色W靠近零,因此不执行meta luma锐化,这造成条件等色的选择很有限,以至于meta luma锐化的益处很小。相反地,例如,利用相同的色彩锐化以其他方式来锐化图像。某些实施例利用DOG(高斯差分)滤波器执行相同的色彩锐化。如下给出DOG滤光器的一种示例性滤波器内核:

-1/160-1/1601/40-1/160-1/16---(6)

对于相应的色彩平面,像素对124x,y的每个子像素120应用该滤波器。例如,如果像素对124x,y是RG对,则通过菱形滤波器(1)和(2)与DOG滤波器(6)的输出求和来着色R子像素。两种滤波器都在红色平面上操作,即对于方框420输出的R坐标操作。相似地着色绿色子像素。对于RW对的处理是相似的。

在其他的实施例中,在步骤840执行meta luma锐化和/或在步骤820应用DOG滤波器(6)。在上述两个步骤中还可使用其他类型的锐化。

如果在步骤830中回答为“是”,则执行箱式滤波以将像素能量偏移至邻近对角线中的一个而非两者。一种示例性滤波器内核如下:

(0,1/2,1/2)         (7)

下面的表1示出了针对图6的SPR操作454的一个实施例的仿真代码。使用公知的编程语言LUA来编写上述仿真代码。该语言类似于C语言。这是一种简单的、低成本的实现方式,其无需实现如上所述的所有特征。表2示出了该实施例的伪代码。

在表1中,“spr.band”是按位与函数(bitwise-AND function),“spr.bor”是按位或函数,而“spr.bxor”是按位异或函数。

在该实现方式中,蓝色平面被向左或向右偏移一个像素106。这种相位偏移意味着按照BW对124x,y中的蓝色子像素处在邻接RG对124x-1,y或RG对124x+1,y的中心来对其进行处理。例如,在向左偏移的情形下,菱形滤波器(1)和(2)计算对124x,y的蓝色子像素值作为像素106x-1,y和四个邻近的像素的B坐标的加权后的总和。这被认为是对一些图像提供了更真实的色调显示。如果FLIP_LEFT=0则偏移的方向向左(见表1中的行Spr5),而如果FLIP_LEFT=1则偏移的方向向右。在这部分下面的具体实施方式中,出于简化假设蓝色偏移方向向左。权利要求书不局限于向左偏移,除非是特别指出。

在上述实现方式中,步骤830核对通过如下所示的3×3矩阵定义的图案(pattern):

D1=000010000D2=010000000D3=000001000

D4=000000010D5=000100000D6=100010001

D7=001010100D8=000100010D9=010100000

D10=010001000D11=000001010D12=000010001

D13=000010100D14=100010000D15=001010000

对于每个像素106x,y,可对各像素的R、G和B坐标、以及还可能的对W坐标独立地核对上述图案D1至D15中每一个。在某些实施例中,如果将像素映射到RG对,则对R、G和B坐标核对图案D1至D15,如果将像素映射到BW对,则对W坐标核对图案。可以如下方式执行该核对。利用某个阈值“BOBits”对各坐标R、G、B、W进行“阈值化”(“thresholded”)。见表1中的第F22-F26行。在某些实施例中,MAXCOL=2047且BOBits介于128至1920闭区间之间,例如256。例如,利用rth、gth、bth和wth分别表示红色、绿色、蓝色和白色坐标的阈值。如果R≥BOBits,则将阈值“rth”设定为1,否则将rth设定为0。可以相同的方式获得G、B和W坐标的阈值gth、bth、wth。随后对每个坐标的阈值使用滤波器D1至D15。例如,对于任意的i和j,使rthi,j表示像素106i,j的rth阈值。如果下面的条件(T1)和(T2)中的一个为“真”则对于像素106x,y而言滤波器D7的输出是1(即,在红色平面识别D7图案):

(T1):rthx,y=rthx+1,y-1=rthx-1,y+1=1和

rthx-1,y-1=rthx-1,y=rthx,y-1=rthx,y+1=rthx+1,y=rthx+1,y+1=0

(T2):rthx,y=rthx+1,y-1=rthx-1,y+1=0和

rthx-1,y-1=rthx-1,y=rthx,y-1=rthx,y+1=rthx+1,y=rthx+1,y+1=1

否则,滤波器输出是0,即在红色平面中无法识别D7图案。

图案D1-D5对应于单个的点。在点图案中会发生对比度的损失,因此要像对对角线那样处理这些图案。图案D8-D11表示像素106x,y接近对角线。图案D12-D15表示像素位于对角线的端部。

在该实现方式中,利用如下的滤波器执行步骤810:

Ortho=010111010

利用OR操作对饱和阈值平面应用该滤波器。更特别地,对于每个像素106x,y,计算标记(flag)“sat”,如果饱和度高,则标记“sat”等于1,否则标记“sat”等于0。下面说明可行的“sat”计算。一旦计算出sat值,即对像素106x,y应用Ortho滤波器。如果对于像素及其四个邻近(向上、向下、向左、向右)的像素而言sat=0,则滤波器输出“ortho”为零。否则,ortho=1。在某些实施例中,如果四个对角邻近的像素(即,106x-1,y-1、106x-1,y+1、106x+1,y-1、106x+1,y+1)中的两个像素中存在饱和的像素(sat=1),则同样将ortho设定为1。见表1中的行Spr23-Spr30和Spr73-Spr80;表2中的行Ps2、Ps9、Ps10。

可如下计算sat值。在某些实施例中,对于每个像素106x,y,如果如下的值“sinv”(饱和度倒数)高于某个阈值,则将值sat设定为0:

sinv=floor[min(r,g,b)/max(l,r,g,b)]      (8)

其中,r、g、b是输入rgb坐标。在其他实施例中,通过max(r,g,b)的高位比特(upper bits)(例如,四个高位比特)形成的数字乘以某个“饱和度阈值”“STH”(例如,0,1,2或更大),并且取该乘积的四个高位有效位(mostsignificant bits)。如果它们形成了大于min(r,g,b)的数值,则将sat设定为1,否则设定为零。

在其他的实施例中,通过步骤420生成的RGBW坐标计算“sat”。一个示例性计算如下所示。如果R、G或B大于MAXCOL,则将sat设定为1。如果不是,对于R、G和B中的每一个提取MAXCOL中高位的四个高位有效位(例如,如果MAXCOL=2047,则取比特[10:7])。这些四比特值的最大值乘以STH。该乘积的四个高位有效位形成了一个数。如果该数大于由W的高位的四个高位有效位[10:7]形成的数,则将“sat”设定为1,否则,设定为0。见表1中的行F37-F45(利用SATBITS=4来实现上面的示例)。本发明并不局限于比特数或其他特殊情形。

在表1中,在行Spr6中计算“ortho”。此外,对于BW对,计算“bortho”作为对左侧的邻近像素的Ortho滤波器输出,并将其用于确定蓝色子像素值(行Spr59、Spr89-Spr91)。

在步骤810,如果Ortho滤波器的输出“ortho”为零,则回答为“是”,否则,回答为“否”。见表1中的行Spr34(对于RG对)和Spr108(对于BW对)。在处理蓝色子像素的过程中,以相似的方式使用“bortho”(行Spr96)。

如果将像素106x,y映射到RG对,则在表1中的行Spr9-Spr53和表2中的行PS1-PS7中描述像素的处理。可同时处理右侧的邻近的蓝色子像素。更特别地,如果ortho是0(表1中的行Spr34、表2中的行PS3),则将R、G和B子像素值(RW、GW、BW)设定为对角线滤波器(2)的输出加上在权利要求书前面的附录A中描述的meta luma锐化值“α”。见图8中的步骤820。在表1的实施例中,可简化meta luma锐化为:不对meta luma锐化操作的RGBW输出(附录A中的等式(A2))应用菱形滤波器,而是当RGBW坐标经历metaluma锐化操作之前对其应用菱形滤波器,并对菱形滤波器的输出追加metaluma锐化值“α”。这样做会加快SPR并降低存储需求(通过消除meta luma滤波器的RGBW输出所需的长期存储器)。

在表1的行Spr39,表2的行PS5中,当且仅当在像素106x,y的R和G坐标的至少一个当中识别出图案D1-D15中的至少一个时,将值“diag”设定为1。在这种情形下,执行步骤850。特别地,将R和G子像素值设定为箱式滤波器(7)的输出。

如果diag不是1,则执行步骤840(表1的行Spr44-Spr45,表2的行PS6)。将R和G子像素值设定为对角线滤波器(2)和DOG滤波器(6)的输出的总和。

在表1的行Spr47,表2的行PS7中,当且仅当在像素106x,y的B坐标当中识别出图案D1-D15中的至少一个时,将值“bdiag”设定为1。在这种情形(表1的行Spr48,表2的行PS7)下,在步骤850中,将B子像素值设定为箱式滤波器(7)的输出。

如果bdiag不是1,则在步骤840(行Spr51、PS7)中,将B子像素值设定为对角线滤波器(2)和DOG滤波器(6)的输出的总和。

如果将像素106x,y映射到BW对,则按照表1中的起始行Spr54,表2中的行PS8所示对其进行处理。在这种情形下,如上所述地对左侧的(即,带有蓝色偏移的)邻近像素计算蓝色子像素值。因此,蓝色子像素处理有些重复(尽管不完全是这样的),在某些实施例中可将其省略。可选地,(对于RG对)省略了行Spr9-Spr53中的蓝色子像素处理。在表1的仿真代码中,执行蓝色子像素处理两次,并在存储器保存(行Spr162)蓝色子像素的两次结果。随后的处理可使用上述两次结果中的任一个。

如上所述的方式确定标记“ortho”和“bortho”。

在表1的行Spr96,表2的行PS11中,如果对于左侧的邻近像素而言Ortho滤波器输出bortho是0,则将B子像素值设定为菱形滤波器(2)的输出和meta锐化滤波器值α(附录A)的总和。对于像素106x-1,y计算上述两个滤波器。见行Spr97。此外,如表1的行Spr120-Spr141,表2的行PS19所示,如果像素106x,y靠近屏幕的左侧或右侧边缘,则将标记“doedge”设定为1以执行特殊的处理。如果在屏幕边缘处图像包含垂直白线,则执行该处理以提高色调。更特别地,如果如表1所示保持特定的条件,则将蓝色和白色子像素中的每一个计算为菱形滤波器(2)和DOG滤波器(6)的总和。见行Spr137-Spr138。对于106x,y计算该滤波器。

如果bortho不是零,则对于蓝色平面(表1的行Spr70、Spr100,表2的行PS13)核对diag(步骤830)。如果diag是1,则应用箱式滤波器(7)(行Spr101)(步骤850)。对于像素106x-1,y计算箱式滤波器以输出像素106x,y和106x-1,y的B坐标的平均值。因此,如果像素106x,y的bortho是1,像素106x-1,y的ortho是1,而像素106x-1,y和106x,y的diag是1,则应用箱式滤波器以使对应的子像素120R、120G、120B的每一个的值是像素106x-1,y和106x,y的对应的颜色坐标R、G、B的平均值。在某些实施例中,对应的子像素120W的值也是像素106x-1,y和106x,y的W坐标的平均值。然而,在表1和表2中,如下所述,以不同的方式来计算W子像素值。

如果在行Spr101和PS13中diag不是1,则将B子像素值计算为都应用于像素106x-1,y的菱形滤波器(2)和DOG滤波器(6)的输出的总和(步骤840,行Spr103和PS14)。(在表1中,如果在此处讨论中假设蓝色偏移是向左,则将变量blueshift设定为1,或是蓝色偏移是向右,则设定为-1。)此外,还将doedge设定为1以执行如上所述的对于边缘像素的边缘处理。

从行Spr108、PS15开始示出了如何计算W值。如果对于像素106x,y而言Ortho滤波器输出ortho是0,则将W子像素值设定为菱形滤波器(2)的输出和meta锐化滤波器值αx,y(即,值α)(附录A)的总和。对于像素106x,y计算这两个滤波器。见行Spr109。

如果ortho不是零,则对于白色平面核对diag(行Spr111、Spr112、PS17)(步骤830)。如果diag是1,则应用箱式滤波器(7)(行Spr113)(步骤850)。对于像素106x,y计算箱式滤波器以输出像素106x,y和像素106x+1,y的W值的平均值。

如果diag不是1,则将W子像素值计算为菱形滤波器(2)和DOG滤波器(6)的输出的总和(步骤840,行Spr115,PS18)。对于白色平面中的像素106x,y应用这两个滤波器。

对于所有的像素,即对映射到RG对的像素和对映射到BW对的像素执行从行Spr143、PS19开始的处理。在行Spr147-155中,红色、绿色和蓝色子像素的子像素值被硬钳位至0至MAXOOG的最大范围,其中MAXOOG=2*MAXCOL+1是当M0=1/2时可能的最大RGBW值(参见等式(3))。白色子像素值被硬钳位至0至MAXCOL的范围。

在行Spr126-Spr134和其他一些段落中,值HS和VS表示在仅更新屏幕的一部分时的起始的水平和垂直坐标。表1的仿真代码假设HS=VS=0。此外,变量xsiz和ysiz包含正在被更新的屏幕部分的宽度和高度。

表1-SPR、LUA代码

D1:--*************************************************

D2:--请见表1后面给出的备注1*****

D3:BOBplane=0-测试不同的平面

D4:function BOBtest(x,y,tab,plane)-测试一个平面

D5:local i,j

D6:local rite,rong=0,0-正确的和错误的比特的个数

D7:BOBplane=plane-复制到全局

D8:for j=0,2do

D9:    for i=0,2do

D10:    local bit=spr.fetch(″bin″,x+i-1,y+j-1,BOBplane)

D11:    ifbit  ==tab[i+j*3+1]then rite=rite+1 else rong=rong+1 end

D12:    end

D13:end

D14:ifrite==9 or rong==9 then

D15:   return 1

D16:end

D17:return 0

D18:end

F1:function dplane(x,y,plane)--核对对角线和点

F2:   if BOBtest(x,y,{

F3:       0,0,0,         --以及点

F4:       0,1,0,

F5:       0,0,0},plane)==1 then return 1

F6:  elseif BOBtest(x,y,{

F7:       0,1,0,

F8:       0,0,0,

F9:       0,0,0},plane)==1 then return 1

F10:  elseif--...参见表1后面给出的备注2

F11: end

F12:  return 0

F13:end-函数dplane

F14:

F15:--*******************************************

F16:--用于计算二进制阈值比特的独立通道

F17:--(在硬件的SPR模块中完成)

F18:   spr.create(″bin″,xsiz,ysiz,4,1)

F19:   ifDEBUG_IMAGE==1 then spr.create(″BIN″,xsiz,ysiz,3,1)end

F20:   spr.loop(xsiz,ysiz,1,1,function(x,y))

F21:   local r,g,b,w=spr.fetch(pipeline,x,y) --取GMA后的数据

F22:   ifr<=BOBits then r=0 else r=1 end --将各平面阈值化为单个比特

F23:   if g<=BOBits then g=0 else g=1 end

F24:   if b<=BOBits then b=0 else b=1 end

F25:    if w<=BOBits then w=0 else w=1 end

F26:      spr.store(″bin″,x,y,r,g,b,w) --构建二进制阈值化的图像

F27:      ifDEBUG_IMAGE==1 then

    spr.store(″BIN″,x,y,b*127+w*127,g*127+w*127,r*127+w*127)    end--

    DIAGNOSTIC:制作可视化版本用于最后观看)

F28:--************************************

F29:--用于计算饱和度阈值的独立通道

F30:  spr.create(″sinv″,xsiz,ysiz,1,2)--SPR的饱和比特图像

F31:if DEBUG_IMAGE==1 then spr.create(″SINV″,xsiz,ysiz,3,1)end

--诊断图像

F32:  spr.loop(xsiz,ysiz,1,1,function(x,y))

F33:  local sat=0      --假设退饱和

F34:  local Rw,Gw,Bw,Ww,Lw,Ow=spr.fetch(″gma″,x,y)--取GMA后的值

F35:  Lw=math.floor((Rw*2+Gw*5+Bw+Ww*8)/16)--重新计算亮度

F36:  spr.store(″gma″,x,y,Rw,Gw,Bw,Ww,Lw,Ow)--且将其写出

F37:   SATBITS=SATBITS or 2048  --在饱和度计算中的2^个比特

F38:  local R=math.floor(SATBITS*Rw/(MAXCOL+1))--使它们向右偏移12个比特

F39:  local G=math.floor(SATBITS*Gw/(MAXCOL+1))

F40:  local B=math.floor(SATBITS*Bw/(MAXCOL+1))

F41:  local W=math.floor(SATBITS*Ww/(MAXCOL+1))

F42:  if(math.floor(STH*math.max(R,G,B)/16))>W then

F43:    sat=1

F44:  end

F45:  spr.store(″sinv″,x,y,sat)    --将它保存用于SPR模块

F46:  ifDEBUG_IMAGE==1 then

F47:    sat=sat*255   --转换为白色像素

F48:    spr.store(″SINV″,x,y,sat,sat,sat)  --对于诊断图像而言

F49:   end

F50: end)

F51:  --滤波器

F52:diamond=  --常规的对角线滤波器

F53:{

F54:  xsize=3,ysize=3,

F55:   0,32,0,

F56:  32,128,32,

F57:   0,32,0

F58:}

F59:metasharp=  --条件等色锐化滤波器

F60:{

F61: xsize=3,ysize=3,

F62:  0,-32,0,

F63: -32,128,-32,

F64:  0,-32,0

F65:}

F66:--selfsharp=  --自我锐化滤波器

F67:--{

F68:--  xsize=3,ysize=3,

F69:--  -32,0,-32,

F70:--   0,128,0,

F71:--  -32,0,-32,

F72:--}

F73:fullsharp=  --完全锐化滤波器

F74:{

F75:   xsize=3,ysize=3,

F76:  -16,0,-16,

F77:   0,64,0,

F78:  -16,0,-16

F79:}

F80:

F81:xfullsharp=  --完全锐化滤波器,两倍

F82:{

F83:   xsize=3,ysize=3,

F84:  -32,0,-32,

F85:   0,128,0,

F86:  -32,0,-32,

F87:}

F88:

F89:Ortho=  --检测任何正交标记存在的滤波器

F90:{

F91: xsize=3,ysize=3,

F92:    0,1,0,

F93:    1,1,1,

F94:   0,1,0

F95:}

F96:

F97:boxflt=  --用于对角线的箱式滤波器

F98:{

F99:  xsize=3,ysize=1,

F100:  0,128,128

F101:}

F102:Ltcorner=  --检测中心标记存在的滤波器

F103:{

F104:  xsize=3,ysize=3,

F105:   1,0,0,

F106:   0,0,0,

F107:   0,0,0

F108:}

F109: Lbcorner=  --用于检测中心标记存在的滤波器

F110:{

F111:  xsize=3,ysize=3,

F112:   0,0,0,

F113:   0,0,0,

F114:   1,0,0

F115:}

F116: Rtcorner=  --用于检测中心标记存在的滤波器

F117:{

F118:  xsize=3,ysize=3,

F119:   0,0,1,

F120:   0,0,0,

F121:   0,0,0

F122:}

F123: Rbcorner=  --用于检测中心标记存在的滤波器

F124:{

F125:  xsize=3,ysize=3,

F126:   0,0,0,

F127:   0,0,0,

F128:   0,0,1

F129:}

Spr1:    --*******************************

Spr2:function dospr(x,y)  --用于执行SPR滤波的程序

Spr3:local lft,rgt,ext   --在SPR期间的值

Spr4:local R,G,B,W,L=0,1,2,3,4  --对GMA缓冲器中的位置给出名称

Spr5:  local evenodd=

 spr.bxor(spr.band(x+HS,1),spr.band(y+VS,1),FLIP_UP,FLIP_LEFT)  --棋盘位置

Spr6: local ortho=spr.sample(″sinv″,x,y,0,Ortho)--当没有sat比特时为0

Spr7:

Spr8:  if evenodd==0 then  --RG逻辑像素

Spr9:    local meta=spr.sample(pipeline,x,y,L,metasharp)  --meta对于R和G是相同的

Spr10:     local redss=spr.sample(pipeline,x,y,R,fullsharp)

Spr11:     1ocal grnss=spr.sample(pipeline,x,y,G,fullsharp)

Spr12:     local redbx=spr.sample(pipeline,x,y,R,boxflt)

Spr13:     local grnbx=spr.sample(pipeline,x,y,G,boxflt)

Spr14:     local bluss=spr.sample(pipeline,x,y,B,fullsharp) --蓝色自我锐化结果

Spr15:     local blubx=spr.sample(pipeline,x,y,B,boxflt)

Spr16:     local blueshift=1-2*FLIP_LEFT--左翻转使蓝色偏移的方向变反(flip left reverses direction of blue shift)

Spr17:     1ft=spr.sample(pipeline,x,y,R,diamond)  --红色子像素

Spr18:   rgt=spr.sample(pipeline,x,y,G,diamond)--绿色子像素

Spr19:   ext=spr.sample(pipeline,x,y,B,diamond)--蓝色子像素

Spr20:

Spr21:   if ortho_mod==1 then

Spr22:   --ortho超驰(override)

Spr23:   local ltcorner=spr.sample(″sinv″,x,y,0,Ltcorner)--如果在左上角邻位中没有sat比特,则为0

Spr24:   local lbcorner=spr.sample(″sinv″,x,y,0,Lbcorner)--如果在左下角邻位中没有sat比特,则为0

Spr25:   local rtcorner=spr.sample(″sinv″,x,y,0,Rtcorner)--如果在右上角邻位中没有sat比特,则为0

Spr26:   local rbcorner=spr.sample(″sinv″,x,y,0,Rbcorner)--如果在右下角邻位中没有sat比特,则为0

Spr27:

Spr28:   if(ltcorner==1 and lbcorner==1)or(rtcorner==1 andrbcorner==1)or

Spr29:           (ltcorner==1 and rtcorner==1)or(lbcorner==1and rbcorner==1)then

Spr30:           ortho=1   --ortho超驰

Spr31:         end

Spr32:      end

Spr33:

Spr34:     if ortho==0 then     --如果附近没有饱和颜色

Spr35:            lft=lft+meta   --则使用meta luma滤波

Spr36:            rgt=rgt+meta

Spr37:            ext=ext+meta

Spr38:     else

Spr39:        local diag=spr.bor(dplane(x,y,R),dplane(x,y,G))  --或一起测试红色和绿色

Spr40:   ifdiag==1 then     --如果在饱和区域中和靠近对角线

Spr41:      lft=redbx        --使用箱式滤波器

Spr42:      rgt=grnbx

Spr43:   else                 --否则使用自我颜色锐化

Spr44:         lft=lft+redss

Spr45:         rgt=rgt+grnss

Spr46:   end

Spr47:  local bdiag=dplane(x,y,B)

Spr48:  ifbdiag==1 then      --因为和原代码兼容,故独立测试蓝色

Spr49:    ext=blubx

Spr50:   else                  --否则使用自我颜色锐化

Spr51:    ext=ext+bluss

Spr52:   end

Spr53: end          --结束MIX_BOB对角线的材料(stuff)

Spr54:else       --BW逻辑像素

Spr55:           --蓝色子像素*******************************

Spr56:local blueshift=1-2*FLIP_LEFT  --左翻转使蓝色偏移的方向变反

Spr57:local bluss=spr.sample(pipeline,x-blueshift,y,B,fullsharp)  --蓝色自我锐化结果

Spr58:local blums=spr.sample(pipeline,x-blueshift,y,L,metasharp)

       --蓝色meta锐化结果

Spr59:local bortho=spr.sample(″sinv″,x-blueshift,y,0,Ortho)

       --如果没有sat比特则为0

Spr60:local blubx=spr.sample(pipeline,x-blueshift,y,B,boxflt)

Spr61:         --白色子像素

************************************

Spr62:local whtss=spr.sample(pipeline,x,y,W,fullsharp)--白色自我锐化

Spr63:local whtms=spr.sample(pipeline,x,y,L,metasharp)--白色meta锐化

Spr64:local whtbx=spr.sample(pipeline,x,y,W,boxflt)

Spr65:local doedge=0   --如果==1,则边缘处理是必要的

Spr66:lft  =spr.sample(pipeline,x-blueshift,y,B,diamond)

     --锐化前的蓝色

Spr67:rgt=spr.sample(pipeline,x,y,W,diamond)

     --锐化前的白色

Spr68: ext=0

Spr69:             --***********************

Spr70:local diag=dplane(x-blueshift,y,B)--计算最后一秒的蓝色对角线测试比特

Spr71:ifortho_mod==1 then

Spr72:      --ortho超驰

Spr73:local ltcorner=spr.sample(″sinv″,x,y,0,Ltcorner)--如果在左上角没有sat比特,则为0

Spr74:local lbcorner=spr.sample(″sinv″,x,y,0,Lbcorner)--如果在左下角没有sat比特,则为0

Spr75:local rtcorner=spr.sample(″sinv″,x,y,0,Rtcorner)--如果在右上角没有sat比特,则为0

Spr76:local rbcorner=spr.sample(″sinv″,x,y,0,Rbcorner)--如果在右下角没有sat比特,则为0

Spr77:

Spr78:    if(ltcorner==1 and lbcorner==1)or(rtcorner==l andrbcorner==1)or

Spr79:     (ltcorner==1 and rtcorner==1)or(lbcorner==1 and rbcorner==1)then

Spr80:      ortho=1    --ortho超驰

Spr81:    end

Spr82:

Spr83:--bortho超驰

Spr84:local ltbcorner=spr.sample(″sinv″,x-blueshift,y,0,Ltcorner)--如果在蓝色偏移后的左上角没有sat比特,则为0

Spr85:local lbbcorner=spr.sample(″sinv″,x-blueshift,y,0,Lbcorner)--如果在蓝色偏移后的左下角没有sat比特,则为0

Spr86:local rtbcorner=spr.sample(″sinv″,x-blueshift,y,0,Rtcorner)--如果在蓝色偏移后的右上角没有sat比特,则为0

Spr87:local rbbcorner=spr.sample(″sinv″,x-blueshift,y,0,Rbcorner)--如果在蓝色偏移后的右下角没有sat比特,则为0

Spr88:

Spr89:if(ltbcorner==1 and lbbcorner==1)or(rtbcorner==1 andrbbcorner==1)or

Spr90:    (ltbcorner==1 and rtbcorner==1)or(lbbcorner==1 andrbbcorner==1)then

Spr91:       bortho=1   --bortho超越

Spr92:    end

Spr93: end

Spr94:

Spr95:   --蓝色子像素使用不同的偏移量

Spr96:ifbortho==0 then    --如果附近没有饱和的像素

Spr97:  lft=lft+blums--使用meta-luma锐化

Spr98:       doedge=1

Spr99:else       --如果靠近饱和的像素

Spr100:   ifdiag==1 then    --新方式对蓝色作出处理

Spr101:     lft=blubx

Spr102:   else

Spr103:     lft=lft+bluss--使用自我锐化

Spr104:     doedge=1

Spr105:    end

Spr106: end

Spr107:         --白色子像素

Spr108:ifortho==0 then    --如果附近没有饱和的像素

Spr109:  rgt=rgt+whtms --使用meta-luma锐化

Spr110:else       --如果靠近饱和的像素

Spr111:   local diag=dplane(x,y,W)

Spr112:    ifdiag==1 then        --并靠近对角线

Spr113:      rgt=whtbx            --则使用箱式滤波器

Spr114:    else

Spr115:      rgt=rgt+whtss        --否则使用自我锐化

Spr116:    end

Spr117: end

Spr118:               --***************************

Spr119:

Spr120:ifEDGE==1 and doedge==1 then  --对混合的饱和度执行边缘处理

Spr121:  local r2,g2,blue_sh   =spr.fetch(pipeline,x-blueshift,y)

Spr122:  local r3,g3,blue_nosh=spr.fetch(pipeline,x,y)

Spr123:  local edgelogic=false

Spr124: ifNSE==0 then    --以仅对屏幕的边缘执行边缘处理开始

Spr125:   edgelogic=

Spr126:         (((x+HS)==1)         and(FLIP_LEFT==0)and(blue_sh>=blue_nosh))or

Spr127:         (((x+HS)==0)         and(FLIP_LEFT==1)and(blue_sh<=blue_nosh))or

Spr128:         (((x+HS)==(fxsiz-1)) and(FLIP_LEFT==0)and(blue_nosh>=blue_sh))or

Spr129:         (((x+HS)==(fxsiz-2)) and(FLIP_LEFT==1)and(blue_nosh<=blue_sh))

Spr130:       elseifNSE==1 then-仅对屏幕的边缘右侧执行边缘处理

Spr131:          edgelogic=

Spr132:             (((x+HS)==(fxsiz-1))  and(FLIP_LEFT==0)and(blue_nosh>=blue_sh))or

Spr133:             (((x+HS)==(fxsiz-2))  and(FLIP_LEFT==1)and(blue_nosh<=blue_sh))

Spr134:

Spr135:          end

Spr136:        if edgelogic then

Spr137       :    lft    =        spr.sample(pipeline,x,y,B,diamond)  +spr.sample(pipeline,x,y,B,fullsharp)

Spr138       :    rgt    =        spr.sample(pipeline,x,y,W,diamond)  +spr.sample(pipeline,x,y,W,fullsharp)

Spr139:          end

Spr140:        end          --边缘处理

Spr141:      end--BW逻辑像素

Spr142:

Spr143:      lft=math.floor((lft+128)/256)--滤波器是实际值乘以256

Spr144:      rgt=math.floor((rgt+128)/256)

Spr145:      ext=math.floor((ext+128)/256)

Spr146:

Spr147:      lft=math.max(0,lft)  --锐化滤波器可造成上溢或下溢

Spr148:      rgt=math.max(0,rgt)  --不得不将它钳位至最大范围内

Spr149:      ext=math.max(0,ext)

Spr150:      lft=math.min(MAXOOG,lft)

Spr151:      rgt=math.min(MAXOOG,rgt)

Spr152:      ext=math.min(MAXOOG,ext)

Spr153:

Spr154:      if evenodd==1 then     --如果这是BW对,

Spr155:         rgt=math.min(rgt,MAXCOL)  --必须将白色限制在11个比特

Spr156:end

Spr157:

Spr158:ifFLIP_LEFT==1 then

Spr159:  lft,rgt=rgt,lft--这是在Lua中使用!交换这两个值!

Spr160:end

Spr161:

Spr162:spr.store(frameB,x,y,lft,rgt,ext)

Spr163:end--函数dospr

结束表1

对于表1中的代码的备注:

备注1:blackjack类型测试的brute force软件实现方式;需要使用在行D10、F18、F26中的以bin命名的独立的帧缓冲器,对每个像素将RGBW坐标阈值化为0或1;如果为图案匹配或图案匹配的反转,则返回1;硬件利用9比特的比特图案测试实现这。

备注2:对于所有的图案D1-D15执行该测试。省略了对于剩余图案的代码。

表2-SPR的伪代码

PS1. RG pair:

PS2. If saturated bit in diagonal corners,then oftho=1.

PS3. If ortho=0,then Rw,Gw=diamond+meta,

    Ext=diamond+meta

PS4. If ortho=1 then

PS5.     Ifdiag in R and G planes,then

             Rw,Gw=box filter

PS6.     Else Rw,Gw=diamond plus DOG.

PS7.     Ifbdiag(diag in B plane),then

            ext=box filter

            else ext=diamond plus DOG

PS8. BW pair:

PS9. If sat bit in diagonal corners,then ortho=1.

PS10.If sat bit in blue-shifted diagonal corners,then bortho=1.

PS11.If bortho=0,then Bw=diamond+meta with blue shift,

          doedge=1

PS12.Else:

PS13.   If diagonal in B plane with blue shift then

                Bw=box(with blue shft)

PS14.   Else Bw=diamond+DOG with blue shift,doedge=1.

PS15.If ortho=0,then Ww=diamond+meta

PS16.Else:

PS17.Ifdiagonal in W plane then

          Ww=box

PS18.    Else Ww=diamond+DOG

PS19.If edge processing conditions hold,then

              Bw,Ww=diamond+DOG without blue shift

PS20.End of BW pair.

PS21.Clamping

结束表2

缩放和色域钳位

如上所述,在图6的步骤444(缩放)和450(色域钳位)中,某些实施例核对“黑洞”(即,类似于图7A的部分II中的特征),并执行对黑洞内部(“在对角线D上”)的子像素值的额外缩减。这将有助于恢复局部对比度。

黑洞的存在依赖于背光单元的输出功率BL。更特别地,假设输入rgb数据定义了当背光单元生成某个输出功率BL=BL0时的图像。如从等式(3)所看到的,SPR方框454产生的R、G和B子像素值处在0至(MAXCOL/M0)闭区间的范围内。W值Ww可以达到MAXCOL/M1,但是典型地将其选择为不超出max(r,g,b),并因此不超出MAXCOL。因此,Ww不超出MAXCOL/M0。SPR方框454产生的RwGwBwWw值定义了当背光单元的输出功率是BL0时所期望的子像素亮度。然而,为了提供输入到显示器110的值,子像素值必须不超出MAXCOL。如果将子像素值乘以M0以适用于0至MAXCOL闭区间的范围,则背光单元的输出功率BL0需要除以M0,即设定为

BL=BL0/M0

实际上,如果最大的子像素值Pmax=max(Rw,Gw,Bw,Ww)小于MAXCOL/M0,则较小的BL值可能是足够的。更特别地,给定最大值Pmax,为了不变形地显示所有的子像素所必须满足的最小BL值BLmin是

BLmin=BL0*Pmax/MAXCOL。

可能期望将输出功率BL设定为小于BLmin的值。在任何情况下,将输出功率BL表示为BL0的百分比有时是方便的,即

BL=(1/INVy)*BL0

其中INVy是用于(在缩放444中)乘以对应于BL0的子像素值以对应于BL的系数。例如,如果BL=BLmin,则INVy=MAXCOL/Pmax。如果BL=BL0,则INVy=1。

如果BL小于BLmin(即INVy>MAXCOL/Pmax),则某些子像素值大于MAXCOL,因此可能需要缩放/色域钳位。下面在附录B中说明了方框430中用于确定BL的一些方法。

图9示出了图6的步骤444、450(缩放/色域钳位)的示例性流程图。图9示出了对于由在一行中两个邻近对124x,y和124x+1,y构成的四方联(quad)1010(图10)的处理。其中一对是RG,而另一对是BW。

下面更加详细地说明图9。简要地,在步骤940计算可相乘的增益因子XSC_gain作为0至1闭区间之间的值,并在步骤950将四方联1010中的RwGwBwWw子像素值乘以上述增益因子以使得在不改变色调和饱和度的前提下将色彩带入色域内。增益XSC_gain是“常规”增益XS_gain和“黑洞”增益blk_gain的乘积。见步骤940。常规增益XS_gain依赖于BL,从而不超出INVy(以便实现缩放444)。如果四方联1010处在黑洞中(如在步骤910所核对的),则黑洞增益blk_gain可小于1。否则,将黑洞增益设定为1。

现在,假设四方联1010对应于同一行中对角线D、B上两个邻近像素(图5和图7A)。则四方联1020对应于对角线A、AA,而四方联1030对应于对角线BB和右侧的下一个对角线。图7A的部分II的四方联1010中的最大子像素值将会处在黑洞中。因此,blk_gain很可能小于1,从而XSC_gain将会减少blk_gain。

当处理对角线AA、A上的像素时(即,当四方联1010对应于对角线AA、A上的两个像素时),blk_gain将会是1,因为对角线AA、A上的像素不在黑洞中。然而,在下述的某些实施例中,常规的增益XS_gain是两个像素的最大rgb坐标的递减函数(见等式(3))。因此,对角线AA、A的XS_gain可能小于对角线D、B的XS_gain。这将会导致在不使用黑洞增益时对比度的损失。对于对角线D、B将黑洞增益设定为小于1的值起到了减小这两个对角线的子像素值的作用以恢复对比度损失。

下面的表3示出了用于仿真图9所示的方法的流程“dopost”的仿真代码。以LUA写出该仿真代码。该处理使用了稍后被除以256的增益因子XS_gain、blk_gain的整数算法(定点算法)。图9的方法对于每个四方联执行一次。因此,在图9的方法的每次迭代中x增加2,而y增加1。在实际的实现方式中,并行地或是以其他某种顺序来处理所有的四方联。

图10示出了四方联1010的紧左的子像素四方联1020和四方联1010的紧右的另一四方联1030。表3中的实施例可简化成:当核对黑洞时(图9的步骤910),该实施例仅核对在邻近的四方联1020、1030中的色域外的色彩。该实施例不核对四方联1010的上方和下方的四方联。这是一种较简单的实现方式,其允许降低电路320的成本。其他的实施例可核对上方和/或下方的四方联。

在表3的行Sc46-Sc61中实现步骤910。以Rw,Gw,Bw,Ww表示四方联1010的初始(预先钳位的)子像素值。步骤910的测试如下:如果在四方联1010中max(Rw,Gw,Bw,Ww)不超出MAXCOL并且四方联1020、1030的每一个中的最大子像素值超出MAXCOL,则检测到黑洞。也可以使用其他测试。例如,黑洞可包括额外需求,即,四方联1020、1030的每一个的最大子像素值与MAXCOL相比超出某个因子(例如,至少1.1*MAXCOL)和/或与四方联1010中的最大子像素值相比超出某个因子。进一步,该测试可以核对四方联1020、1030的亮度大于四方联1010的亮度或大于某个值,或核对四方联1010的亮度小于某个值。还可使用其他测试。

值得注意的是,在这个实施例中,测试不依赖于INVy。因此,即便INVy=M0,仍可检测出黑洞并将blk_gain设定为小于1的值。如通过比较图7A的部分I和部分II所看到的,尽管INVy=M0,仍可对对角线D降低局部对比度,并且将blk_gain设定为小于1的值有助于恢复局部对比度。在其他的实施例中,测试依赖于INVy,例如可通过将子像素值和INVy的乘积与MAXCOL相比较来执行该测试。

如果测试失败(即,没有检测到任何黑洞),则将blk_gain设定为1(图9中的步骤914;表3中的行Sc4)。值得注意的是,行Sc4中的值256对应于1,因为黑色增益将会随后除以256。

如果测试通过,则如下将blk_gain计算作为表3的行Sc62-Sc64中的8比特值(见图9的步骤920):

blk_gain=2*MAXCOL-1-(四方联1020,1030中的最大子像素值)(9)

在这个实施例中,MAXCOL=2047,且M0=M1=1/2。在行Sc61中,GAMBITS=11。可选地,还可使用如下的等式:

blk_gain=ceiling[1/M0*MAXCOL]-1-(四方联1020,1030中的最大子像素值)

随后(行Sc65),使blk_gain增加Ww/16。如果Ww值是大的(即,黑洞实际上是白洞),则通过上述操作来增大黑洞增益。随后将blk_gain硬钳位至最大值256(即,在行Sc111中除以256之后为1)。

在步骤930中,如行Sc72-Sc109所示确定“常规”增益XS_gain。本发明并不局限于用于确定XS_gain的特定方式。在其他一些实施例中,可不使用常规增益(或是,等效地将常规增益设定为1)。在2007年12月6日公开的美国专利申请公开No.2007/0279372A1中给出了一些适用于XS_gain确定的色域钳位实例,该专利申请是由Brown Elliott等人提交的,发明名称是“MULTIPRIMARY COLOR DISPLAY WITH DYNAMIC GAMUTMAPPING”,通过参考引入于此。

在表3的特定实例中,XS_gain依赖于饱和度和由等式(3)定义的r、g、b值的最大值。更特别地,如表2的行Sc91所示,将XS_gain计算作为基于饱和度的增益sat_gain和值“n1_off”的总和。该总和被硬钳位至从方框430接收到的INVy的最大值。

在行Sc72-Sc84中确定值sat_gain作为某些预定参数GMIN和GMAX闭区间之间的值。在某些实施例中,GMAX=1(即在除以256之前为256)且GMIN=1/2。值sat_gain是饱和度的函数,并更特别地,以如下方式定义饱和度倒数sinv:

sinv=Ww/max(1,Rw,Gw,Bw)

见行Sc74-Sc83。如果饱和度最多是某个的预定的阈值(例如50%),即如果sinv至少是某个阈值,则将sat_gain设定为大约GMAX。在行Sc84中,由REG_SLOPE定义该阈值(REG_SLOPE是对应于1的整数值)。如果sinv是零,则将sat_gain设定为大约GMIN。如果sinv处于零至其阈值之间,则按照线性插值函数获得sat_gain,其中sat_gain在sinv=0时等于大约GMIN,而在sinv处于该阈值时等于大约GMAX。此外,将sat_gain硬钳位至最大值1(在行Sc85中为256)。

基于如等式(3)中的r、g、b的max(r,g,b),在行Sc87-Sc90中计算项n1_off(“非线性偏移量”)。等式(3)表示max(r,g,b)=M0*max(R,G,B)+M1*W。出于简化的目的,在表3中假设RGBW值是子像素值Rw,Gw,Bw,Ww。按照线性插值函数计算值n1_off,n1_off在max(r,g,b)=MAXCOL时等于0,并且在max(r,g,b)=0时等于大约N*INVy,其中N是0至256闭区间之间的预定参数。

如上所述,XS_gain是被硬钳位至INVy的sat_gain和n1_gain的总和。然后进一步调节值XS_gain以确保在乘以XS_gain之后,子像素值Rw,Gw,Bw,Ww不超出MAXCOL(行Sc97-Sc109)。

在行Sc111执行步骤940。

在步骤950,Rw,Gw,Bw,Ww值乘以XSC_gain(行Sc115-Sc119)。

随后,在行Sc122-Sc128,进一步调节Ww值以使dopost处理不会改变四方联1010的亮度。更特别地,可如下在缩放和色域钳位之前和之后计算亮度Lw:

Lw=(2*Rw+5*Gw+B2+8*Ww)/16(见行Sc44、Sc119)。

可以调节Ww值以使得缩放后和缩放前的亮度相一致。

最后,将值Rw,Gw,Bw,Ww硬钳位至0至MAXCOL闭区间的范围(行Sc129-Sc137)。

表3-缩放和色域钳位

Sc1:local Rw,Gw,Bw,Ww--静态变量,用于进行对dopost的连续调用

Sc2:--*******dopost进行饱和度-缩放、变量-缩放和色域钳位

Sc3:function dopost(x,y)

Sc4:  local blk_gain=256  --通过计算黑洞增益开始

Sc5:  local scale_clamp=0     --表示钳位已完成的标记

Sc6:  rd,gd,bd=0,0,0  --用于诊断图像

Sc7:

Sc8:ify==78 and x==25 then

Sc9:  glob=1

Sc10:end

Sc11:     --在4个组中进行后缩放,如此始终读取2个逻辑像素

Sc12:

Sc13:  local evenodd=

    spr.bxor(spr.band(x,1),spr.band(y,1),FLIP_UP,FLIP_LEFT)--棋盘位置

Sc14:  ifFLIP_LEFT==0 then     --如果SID==0 or 2

Sc15:    ifevenodd==0 then

Sc16:      Rw,Gw=spr.fetch(pipeline,x,y)--取帧缓冲后的值

Sc17:      ifx==xsiz-1 then             --如果这是行中的最后一个RG

Sc18:      Bw,Ww=0,0         --永远不会达到BW,再运行一个时钟

Sc19:   else

Sc20:      return      --否则等待BW到来

Sc21:    end

Sc22: else

Sc23:      Bw,Ww=spr.fetch(pipeline,x,y)--取帧缓冲后的值

Sc24:    ifx==0 then                   --如果这是行中的第一个BW

Sc25:      Rw,Gw=0,0      --没有伴随这一个的RG,则将它们设为零

Sc26:      end                        --并至少处理该数据

Sc27:    end

Sc28:  else            --否则SID==1 or 3

Sc29:     ifevenodd = =0 then

Sc30:          Gw,Rw=spr.fetch(pipeline,x,y)

Sc31:          if x==0 then

Sc32:             Ww,Bw=0,0 --对于第一GR,强迫WB为零

Sc33:           end

Sc34:     else

Sc35:        Ww,Bw=spr.fetch(pipeline,x,y)

Sc36:        ifx==xsiz-1 then --对于最后的WB,

Sc37:          Gw,Rw=0,0  --不再存在GR,再运行一个时钟

Sc38:        else

Sc39:        return       --不是最后一个,等待GR到来

Sc40:        end

Sc41:      end

Sc42:    end

Sc43:          --需要从SPR后的数据中近似亮度和饱和度

Sc44:    local Lw=math.floor((2*Rw+5*Gw+Bw+8*Ww)/16)

Sc45:

Sc46:    ifBEE==1 then    --黑线加强

Sc47:        if DEBUG_IMAGE then

Sc48:           spr.store(″BE Ef,x,y,0,0,128)

Sc49:          spr.store(″BEE″,x-1,y,0,0,128)

Sc50:         end

Sc51:     local r,g=spr.fetch(pipeline,x-3,y)--取左侧的RGBW

Sc52:     local b,w=spr.fetch(pipeline,x-2,y)

Sc53:     local rgbw1=spr.bor(r,g,b,w)--只进行高位比特的或操作

Sc54:     local oog=math.max(r,g,b,w)

Sc55:     r,g=spr.fetch(pipeline,x+1,y)    --右侧的RGBW

Sc56:     b,w=spr.fetch(pipeline,x+2,y)

Sc57:     local rgbw3=spr.bor(r,g,b,w)

Sc58:     oog=math.max(oog,r,g,b,w)

Sc59:     local rgbw2=spr.bor(Rw,Gw,Bw,Ww)

Sc60:     if(rgbw2<=MAXCOL)and--(Ww<(MAXCOL+1)/16)and--如果中心是在色域内并是饱和的(忽略白洞)

Sc61:  ((rgbw1>MAXCOL)and(rgbw3>MAXCOL))theh--被OOG包围

Sc62:       oog=math.floor(spr.band(oog,MAXCOL)/(2^(GAMBITS-7)))--丢弃OOG比特并保存接下来的7个比特

Sc63:       oog=(127-oog)+128  --取逆并设定比特8

Sc64:       blk_gain=oog           --降低增益值使该像素变暗Sc65:blk_gain=math.min(256,(blk_gain+math.floor(Ww/16)))--″白洞忽略″中的特征

Sc66:       if DEBUG_IMAGE then

Sc67:          spr.store(″BEE″,x,y,blk_gain,blk_gain,blk_gain)

Sc68:            spr.store(″BEE″,x-1,y,blk_gain,blk_gain,blk_gain)

Sc69:        end

Sc70:      end

Sc71:    end     --结束黑洞检测器

Sc72:         --执行饱和度-缩放增益计算

Sc73:    local gmin=GMIN+1      --默认为固定的GMIN

Sc74:    local max_rgb =       math.floor((math.floor(M0_reg/256*math.max(Rw,Gw,Bw)*2)+math.floor(M1_reg/256*Ww*2))/2)

Sc75:       --12比特的项+11比特的项将会得到13比特的结果,随后将除以2以得到12比特的结果

Sc76:       --随后钳位至MAXCOL以得到11比特的结果(防止从交叉影响(cross-pollinated)的像素对溢出)

Sc77:  max_rgb=math.min(MAXCOL,max_rgb)

Sc78:  max_rgb=math.max(1,maxrgb)    --防止除以0

Sc79:  local inv_max_rgb_lut=math.floor((plus4bit/max_rgb)+0.5)

        --硬件版本的LUT

Sc80:  local min_rgb=math.floor((math.floor(M0_reg/256*

math.min(Rw,Gw,Bw)*2)+math.floor(M1_reg/256*Ww*2))/2)

Sc81:      --12比特的项加上11比特的项将会得到13比特的结果,随后除以2以得到12比特的结果

Sc82:  min_rgb=math.min(MAXCOL,min_rgb)--随后钳位至MAXCOL以得到11比特的结果(防止从交叉影响的像素对溢出)

Sc83:  local sinv=math.floor(inv_max_rgb_lut*min_rgb)

Sc84:  local sat_gain=math.floor(REG_SLOPE*sinv/plus4bit+gmin)

Sc85:  sat_gain=math.min(256,sat_gain,GMAX+1)

Sc86:

Sc87:        --计算转换到RwGwBwWw空间的非线性增益项

Sc88:  local nl_index_11bits=max_rgb

Sc89:

Sc90:  local nl_off=math.floor((N*16+16)*INVy/256*(MAXCOL-

        nl_index_11bits)/(MAXCOL+1))

Sc91:  local nl_gain=math.min(INVy,sat_gain+nl_off)

Sc92:  gd=OutGamma((256-sat_gain)*MAXCOL*2/256)--诊断代码用于将饱和增益显示成绿色

Sc93:

Sc94:  XS_gain=nl_gain  --将其保存用于钳位增益计算

Sc95:

Sc96:     --始终计算色域钳位增益并在其他算法留下颜色OOG时使用

Sc97: local maxp=math.max(Rw,Gw,B w,Ww)  --发现最大的基色

Sc98: maxp=math.floor(maxp*XS_gain/256)     --预测OOG在sat和X/XL之后多远

Sc99: local clamp_gain=256       --默认为1.0,无钳位

Sc100:  ifmaxp>MAXCOL then              --如果该颜色进行OOG

Sc101:   local Ow=spr.band(maxp,MAXCOL)   --计算在LUT指数中使用的距离OOG

Sc102:   clamp_gain=math.floor((256*(MAXCOL+1))/(maxp+1))  --为伽马钳位的INV LUT的结果

Sc103:   rd=OutGamma((256-clamp_gain)*MAXCOL*2/256)

Sc104:   if clamp_gain<256 then

Sc105:      scale_clamp=1      --如果仍需要增益,则设定标记比特

Sc106:    end

Sc107:  end-色域外的颜色

Sc108:

Sc109:  XSC_gain=math.floor(XS_gain*clamp_gain/256)  --组合X/XL和sat,并钳位至一个常数

Sc110:

Sc111:  XSC_gain=math.floor(XSC_gain*blk_gain/256)--并和黑洞增益进行组合

Sc112:

Sc113:  --INVy X/X1缩放值可大于1.0,所以现在缩放值是9比特

Sc114:  --具有大于二进制点而小于8的一个比特

Sc115:Rw=math.floor((Rw*XSC_gain+128)/256)  --12*9=12比特乘法

Sc116:Gw=math.floor((Gw*XSC_gain+128)/256)  --(仅需要12*9=11,但是必须测试

Sc117:Bw=math.floor((Bw*XSC_gain+128)/256)  --溢出并硬钳位至小于MAXCOL)

Sc118:Ww=math.floor((Ww*XSC_gain+128)/256)--钳位至W的黑色值

Sc119:Lw=math.floor((Lw*XS_gain+128)/256)--单独对L执行X/X1处理

Sc120:

Sc121:   --********************************

Sc122:   --钳位诊断选项

Sc123:if CLE==1 and scale clamp==1 then

Sc124:   local W1 --计算产生正确的亮度的W

Sc125:   W1=math.floor((Lw*M1_inv-

math.floor((2*Rw+5*Gw+Bw)*M2_inv/8))/32)

Sc126:   W1=math.min(W1,MAXCOL)   --不超出最大值!

Sc127:   Ww=math.floor((W1*(2^(DIAG+4))+Ww*(128-

(2^(DIAG+4))))/128)-将两者混合在一起

Sc128:  end-钳位diag

Sc129:  Rw=math.min(Rw,MAXCOL)       --硬钳位

Sc130:  Gw=math.min(Gw,MAXCOL)       --(如果WR>1.0,则发生)

Sc131:  Bw=math.min(Bw,MAXCOL)       --来自LUT中的量化误差

Sc132:  Ww=math.min(Ww,MAXCOL)

Sc133:  Lw=math.min(Lw,MAXCOL)

Sc134:  Rw=math.max(Rw,0)            --在MIPI指令中是负数(-1)

Sc135:  Gw=math.max(Gw,0)

Sc136:  Bw=math.max(Bw,0)

Sc137:  Ww=math.max(Ww,0)

Sc138:  Lw=math.max(Lw,0)

Sc139:

Sc140:  Ww=math.floor(Ww*(WG+1)/256)  --这里,白色增益可降低白色

Sc141:

Sc142:--  spr.store(″post″,x+odd,y,Rw,Gw)--将它们保存在后缓冲器中

Sc143:--  spr.store(″post″,x-odd+1,y,Bw,Ww)

Sc144:  ifFLIP_LEFT==0 then

Sc145:    ifevenodd==0 then                 --仅在一行的结尾处发生

Sc146:      spr.store(″post″,x,y,Rw,Gw) --就保存RG

Sc147:      else

Sc148:      ifx>0 then

Sc149:        spr.store(″post″,x-1,y,Rw,Gw)  --当存在RG值时保存RG值

Sc150:        end

Sc151:        spr.store(″post″,x,y,Bw,Ww)--且每次BW

Sc152:       end

Sc153:  else --SID=1 or 3

Sc154:    if evenodd==1 then  --正常情形仅偶数对失败(fall through)

Sc155:      spr.store(″post″,x,y,Ww,Bw)--所以这必须是x==xsiz-1

Sc156:      else

Sc157:       ifx>0 then

Sc158:      spr.store(″post″,x-1,y,Ww,Bw)  --当存在WB值时保存WB值

Sc159:     end

Sc160:     spr.store(″post″,x,y,Gw,Rw)     --总是写入GR

Sc161:    end

Sc162:  end

Sc163: end--函数dopost

结束表3

位块图像传送(Bit Blit)更新如参考图6所说明的一样,在某些实施例中,显示装置可仅接收像素数据104的一部分1110(图11),因为图像的其他部分未变化。显示装置执行“位块图像传送”操作以更新屏幕上图像的已变化的部分。不对整个图像执行SPR操作454。对整个图像执行其他操作,诸如444(缩放)、430(BL运算)、450(色域钳位)和其他可能的操作。位块图像传送更新可降低功率消耗并还可降低在短时间内更新图像所需的处理功率。此外,块图像传送更新方便用于通过低带宽网络链路接收图像104的移动系统。因此,某些实施例适应于(移动工业处理器接口)。然而,本发明并不局限于MIPI或移动系统。

为了易于描述,假设新的部分1110是矩形的。然而,本发明并不局限于矩形部分。

在其他一些实施例中,对于整个图像重复执行SPR操作。更特别地,显示装置对于图像104的每个像素保存输入数据(rgb或RGBW),并且在接收部分1110时在SPR操作454中对整个图像重新计算像素值。在图4或图6中可实现该重新计算。然而,期望的是,至少对于图像中未变化的部分中的某些像素不重复执行SPR。

现在说明一些实施例,这些实施例都是基于结合图8和表1所述的SPR操作的,但是本发明并不局限于这些实施例。

在图11中,新的部分1110包括边缘1110E。边缘是一个像素的宽。未变化的图像部分包括边界(border)区域1120,该边界区域1120由在新的部分1110边界的像素106构成。区域1120也是一个像素宽。当对边缘像素1110E执行SPR操作454时,SPR操作涉及像素1120。然而,某些实施例并不保持先前图像的rgb或RGBW数据。因此这样的数据对像素1120是不可用的。边缘像素1110E的处理因此引起了特殊的挑战,特别是在(由新的部分1110定义的)新的图像类似于先前图像时。如果图像是相似的,则观察者更可能会注意到新的部分1110和周边之间的边缘。然而,本发明并不局限于相似的图像。

在某些实施例中,当对像素1110E执行SPR操作454时,使用像素1110E的镜像图像替代像素1120。例如,假设对于某个x0,x1,y0,y1,将区域1110定义为x0≤x≤x1和y0≤y≤y1。随后如下定义边界像素1120用于对像素1110E的SPR操作:

106x0-1,y=106x0,y;106x1+1,y=106x1,y;106x-1,y0=106x-1,y0

角落像素也被镜像:等。

如果SPR使用蓝色偏移,则存在进一步的挑战。将会详细地说明左偏移的实例。右偏移的实施例是类似的。

在左偏移的情况下,如果将部分1110左侧的边缘区域1110E中的像素106映射到BW对,则可能必须对边界区域1120中的邻近像素应用SPR滤波器。在图12的示例中,在新的部分1110的左侧的各区域1120、1110E中,像素106.1、106.2是同一行中的邻近像素。像素106.1被映射到RG对124.1,而像素106.2被映射到BW对124.2。在表1的实施例中,当着色对124.2的蓝色子像素时,对像素106.1应用菱形滤波器(2)和meta luma滤波器。当以新的部分1110更新图像时像素106.1不改变,而像素106.2仅对这两个滤波器贡献很小的权重(例如,对菱形滤波器为1/8的权重)。因此,在某些实施例中,SPR操作使得蓝色子像素的值相对于子像素对124.2中的先前图像不变化。更特别地,SPR操作不改变被映射到BW对并处在图像左侧的边缘像素1110E的蓝色值(Bw)。(当然,可通过诸如缩放444和色域钳位450等后续操作改变Bw值。)在右偏移的情况下,SPR操作不改变图像右侧的蓝色值。

在某些实施例中,如果新的部分1110是一列宽(由此与边缘区域1110E一致),则不改变对应于新的部分1110的所有Bw值。

在左偏移的情况下,当边界像素1120被映射到BW对时,在右侧边缘存在另外的挑战。这在图13中示出。邻近像素106.3、106.4处在新的部分1110的右侧的各区域1110E、1120中。像素106.3被映射到RG对124.3,而像素106.4被映射到BW对124.4。由于蓝色偏移,可能必须通过对像素106.3应用SPR滤波器来着色对124.4中的蓝色像素。由于通过新的部分1110改变像素106.3,因此应该更新与对124.4中的蓝色子像素对应的帧缓冲器的位置。然而,所期望的是,避免写入与未变化的图像部分对应的帧缓冲器的位置,并通常期望减少对帧缓冲器610的写入访问的次数。某些实施例通过打乱(scramble)帧缓冲器610中的子像素值来实现上述目标的,以使蓝色子像素位置仅保存低位有效位(least significant bit)。高位有效位是在对应于RG对的存储位置处保存的。因此,如果不对对应于蓝色子像素(诸如对124.2中的蓝色子像素)的存储位置更新,则只会造成低位有效位的失真。

图14示出了打乱技术的一个示例。显示器110的子像素被细分为四方联(“quad”)1404。每个四方联1404在同一行中包括两个邻近的对124x,y,124x+1,y。在每个四方联1404中,左边的对124x,y是RG对,而右边的对124x+1,y是BW对。显示器左侧边缘处的BW对和右侧边缘处的RG对不是任何四方联的一部分,并可以如下方式被处理。

对于每个四方联1404,SPR操作454提供在1410所示的子像素值Rw,Gw,Bw,Ww。在图14中,各值Rw,Gw,Bw,Ww的高位有效位部分(MSB部分)分别被表示为RH,GH,BH,WH。低位有效位部分(LSB部分)分别被表示为RL,GL,BL,WL。例如,在某些实施例中,各值Rw,Gw,Bw,Ww都是8比特的值,并且MSB和LSB部分每个都是四比特。

各子像素对应于帧缓冲器610的存储位置。存储位置可被独立地寻址,但这并不是必须的。在图14的示例中,四方联1404的红色、绿色、蓝色和白色子像素的存储位置分别被表示为610R,610G,610B,610W。这些可以是连续的存储位置(即,具有连续的地址),但这不是必须的。在某些实施例中,各个存储位置610R,610G,610B,610W由连续的比特构成。所述比特在地址方面是连续的,而在物理布局方面不是连续的。值得注意的是,本发明并不局限于可独立地寻址的存储位置或随机访问存储器。

如上所示,如果利用被映射到位于BW对124x+1,y的紧左侧的子像素的新的部分1110更新图像则可能使存储位置610B的内容丢失(不被更新)。因此,在每个四方联中,存储位置610B仅保存值Rw,Gw,Bw,Ww中的一部分或全部的低位有效位。在图14的实施例中,各四方联的存储位置610B仅保存四方联的RL和BL值。由于一些实验证明人类对于红色和蓝色亮度不如绿色和白色亮度敏感,因此选择红色和蓝色值。“红色”位置610R保存红色和蓝色亮度的高位有效位部分RH,BH。在各位置610G、610W无需打乱地保存绿色和白色值Gw,Ww。其他类型的打乱也是可能的。

打乱在写入帧缓冲器610时执行。当读取帧缓冲器610时(例如,通过图6中的缩放444或方框430),数据被解打乱。

对于屏幕的左侧边缘的每个BW对(即,每个BW对1240,y),可以预定值,例如0来填充蓝色位置610B的MSB部分。可丢弃BH值。关于解打乱,可将BH值设定为零。本发明并不局限于此或是处理边缘处的BW对的其他方式。

对于屏幕右侧的每个RG对,在打乱过程中,可通过对对应于RG对的像素106应用SPR操作中的合适的滤波器,来获得Bw值。可将Bw值的BH部分写入位置610R的LSB部分。可丢弃BL和RL部分。关于解打乱,可将RL设定为零或某个其他值。

本发明并不局限于上述的实施例。其他实施例和变化都在如所附的权利要求书所限定的发明的范围之内。

例如,某些实施例提供了通过显示单元显示图像的方法。显示单元(例如,图3的单元110)可以是液晶显示器(LCD)、有机发光显示器(OLED)、或是其他类型的显示器。值得注意的是,本发明并不局限于使用背光单元的显示器。例如,图8中的SPR操作可以不依赖于背光单元。

显示单元包括子像素,每个子像素用于发射多种基色中的一种基色并具有基于子像素状态的亮度。基色可以是RGBW或是其他一些颜色。子像素可以象或不象图1所示那样布局。例如,在某些实施例中,在每个RG对中,绿色像素处于红色像素的左侧;在每个BW对中,白色像素处于左侧。子像素在面积上可以相等或不等。例如,一种基色的子像素可大于另一种基色的子像素。不同基色的子像素可在数目和/或密度上不同。在LCD中,子像素的状态通过液晶分子的子像素排列定义,子像素排列依次由子像素电压定义。在OLED中,子像素状态通过子像素电流或其他电参数定义。使用子像素的子像素值,基于显示器的类型定义该状态。

方法包括:接收图像信号,各图像信号与图像(例如104)或图像中的新的部分(例如1110)相关联,各图像信号包括相关联的图像或图像的新的部分中的各像素的像素数据。该方法进一步包括,对于每个所述图像信号,由电路(例如,电路320,SPR方框454)执行相关联的SPR操作,该SPR操作使得各像素关联于作为显示单元的要显示该像素的区域的显示区域(例如124),SPR操作对在与相关联的图像或新的部分的一个或者多个像素相关联的一个或多个显示区域内的由一个或多个子像素构成的子像素组中的每个子像素提供子像素值。例如,SPR操作可对与新的部分1110(图11)对应的显示区域内的除了左侧边缘的蓝色子像素外的每个子像素提供子像素值。进一步,至少一个显示区域不包含至少一种基色的整个的子像素。例如,区域124可以是BW区域,由此没有红色的子像素。

进一步,至少一个图像信号与新的部分相关联,并且相关联的SPR操作对位于不与新的部分中任何像素关联的区域内的至少一个子像素不提供子像素值。例如,在结合图11所述的某些实施例中,SPR操作不提供新的部分1110和边界区域1120外部的任何子像素值。

在某些实施例中,由至少一个所述SPR操作产生的至少一个子像素值处在显示单元的色域外。该方法包括利用色域内的值替代该至少一个子像素值(例如,通过色域钳位450)。

某些实施例提供了通过显示单元显示图像的方法,其中显示单元包括子像素,每一个子像素发射多种基色中的一种基色并具有基于利用该子像素的子像素值定义的子像素状态的亮度。该方法包括:接收图像信号,每个图像信号与图像或图像中的新的部分相关联,每个图像信号包括相关联的图像或图像中的新的部分的各像素的像素数据。该方法进一步包括,对于每个所述图像信号,由电路执行相关联的SPR操作,该SPR操作使得各像素关联于作为显示单元的要显示该像素的区域的显示区域,SPR操作对在与相关联的图像或新的部分的一个或者多个像素相关联的显示区域内的由一个或多个子像素构成的子像素组中的每个子像素提供子像素值。此外,至少一个图像信号与新的部分相关联,相关联的SPR操作对位于不与新的部分中任何像素关联的区域内的至少一个子像素不提供子像素值。进一步,对于与包括子像素SP1(例如,蓝色子像素)的新的部分P1(例如部分1110)相关联的至少一个图像信号S1而言,其中该子像素SP1位于与新的部分P1的预定侧(例如,图11中的左侧)在新的部分P1的边缘处的像素相关联的显示区域内,相关联的SPR操作不提供子像素SP1的子像素值以使得子像素SP1的子像素值不变化。例如,在图11的一些实施例中,SPR操作不提供与在新的部分1110的左边缘处的特定像素106x,y相关联的BW对124x,y的蓝色子像素的子像素值。

进一步,对于至少一个其他的图像信号S2,相关联的SPR操作提供子像素SP1(例如,对于像素106x,y不处在左侧边缘的另一图像中的相同的BW对124x,y中的蓝色像素)的子像素值,其中子像素SP1处于与第一像素(例如106x,y)相关联的显示区域中,其中图像信号S2关联于包括第一像素的图像或是关联于包括第一像素的新的部分P2,且相关联的SPR操作确定子像素SP1的子像素值作为数个像素的色坐标的加权总和(例如,步骤820,840或850),其中在加权总和中,对第一像素(例如106x,y)给出了在大小上不大于在第一像素的所述预定侧(例如左侧)的第二像素的权重(例如,由于左侧蓝色偏移,在步骤820或840中对蓝色子像素使用的1/8的权重或是在步骤850中使用1/2的权重)。例如,在左侧蓝色偏移的情形下,在大小上对像素106x,y给出不小于像素106x-1,y的权重。

在某些实施例中,基色包括作为子像素SP1的颜色的颜色PC1(例如,蓝色)。进一步,对于与在所述预定侧(例如,左侧)的边缘处包括一个或更多的像素的新的部分相关联的每个图像信号,其中,该一个或更多的像素的关联显示区域包含颜色PC1的一个或多个子像素,相关联的SPR操作对于具有颜色PC1(例如,任何蓝色子像素)并位于与在新的部分中位于所述预定侧(例如左侧)的边缘处的像素相关联的显示区域中的任何子像素,不提供子像素值。

某些实施例提供了通过显示单元显示图像的方法,其中该显示单元包括子像素,每个子像素发射多种基色中的一种基色并具有基于利用该子像素的子像素值定义的子像素状态的亮度。该方法包括:接收图像信号,每个图像信号与图像或图像中的新的部分相关联,每个图像信号包括该相关联的图像或图像中的新的部分的各像素的像素数据。该方法进一步包括,对于每个所述图像信号,由电路执行相关联的SPR操作,该SPR操作使得各像素关联于作为显示单元的要显示该像素的区域的显示区域,SPR操作对在与相关联的图像或新的部分的一个或者多个像素相关联的显示区域内的由一个或多个子像素构成的子像素组中的每个子像素提供子像素值。此外,至少一个图像信号与新的部分相关联,相关联的SPR操作对位于不与新的部分中任何像素关联的区域内的至少一个子像素不提供子像素值。进一步,在至少一个SPR操作中,对于至少一种基色PC1(例如,蓝色),对于基色PC1的至少一个子像素SP1,将子像素值确定为多个像素的色坐标的加权总和,其中,在该加权总和中,对于其相关联的显示区域包括子像素SP1的第一像素,在大小上给出不大于在第一像素的预定侧(例如左侧)的第二像素的权重。进一步,各图像的每个子像素值保存在存储器的各自的比特中。例如,在图14的实施例中,存储器可以是帧缓冲器610。绿色和白色子像素值保存在各自的位置610G和610W的比特中。红色子像素值可以保存在位置610R和610B的比特中。蓝色子像素值可以保存在相同的位置的其他比特中。

进一步,各子像素值包括高位有效位部分(most significant portion)和低位有效位部分(least significant portion)。对于与新的部分相关联的至少一个图像信号,对于在新的部分的与所述预定侧相对的一侧处于新的部分的外部并与包含基色PC1(例如蓝色)的第一子像素的显示区域相关联的至少一个像素(例如,位于新的部分1110右侧的像素106),相关联的SPR操作确定第一子像素的子像素值的至少高位有效位部分,并将高位有效位部分(BH),而非第一子像素的子像素值的低位有效位部分(BL),保存在各自的位置(例如,与位于左侧的红色像素相关联的610R)。

在某些实施例中,不靠近显示单元的屏幕的边缘的子像素被细分为组(例如,1404),每个组包括所有基色的子像素。在每个组中:在存储器的连续比特中保存包含基色PC1的不同基色(例如,红色和蓝色)的至少两个子像素的子像素值的高位有效位部分(例如,RH和BH);并且在存储器的连续比特中保存包含基色PC1的不同基色的至少两个子像素的子像素值的低位有效位部分(例如,RL和BL)。

在某些实施例中,在存储器的连续比特中保存基色PC1(例如,蓝色)和另一基色PC2(例如,红色)的两个子像素的子像素值的高位有效位部分(例如,RH和BH);并且在存储器的连续比特中保存基色PC1和PC2的两个子像素的子像素值的低位有效位部分(例如,RL和BL)。

在某些实施例中,在每一组中,在存储器的非连续比特中保存至少一个子像素的子像素值的高位有效位部分和低位有效位部分(例如,RH和RL)。

提供了电路用于执行这里所述的方法。如果需要还可执行其他操作(例如,伽马转换和图像显示)。本发明由所附的权利要求书限定。

附录A:meta luma锐化

在某些实施例中,按照如下方式执行对像素106x,y的meta luma锐化。根据等式(3)确定像素的RGBW坐标。此外,以某一方式,例如如下的方式计算代表像素106x,y和邻近像素的亮度的值L:

L=(2R+5G+B+8W)/16       (A1)

随后,如果将像素106x,y映射到BW对,则对亮度L应用如下的滤波器以产生值α:

MLSBW=0-z/40-z/4z-z/40-z/40

其中,z是某个正的常数,例如1/2。换句话说,a=z*Lx,y-z/4*(Lx-1,y+Lx+1,y+Lx,y-1+Lx,y+1),其中,Li,j是像素106i,j的亮度(A1)。如果将像素106x,y映射到RG对,则将值α设定为对L值应用的如下滤波器的输出:

MLSRG=0z/40z/4-zz/40z/40

其中,z是某个正的常数,例如1/2。在这两个滤波器中z值可以是或不是相同的。随后通过如下修改RGBW坐标使用值α来选择用于像素106x,y的条件等色:

W=W+a                   (A2)

R=R-mr*a

G=G-mg*a

B=B-mb*a

其中,mr,mg,mb是以如下方式通过显示器110的亮度发射特性定义的常数,即新的RGBW值(即,等式(A2)中左侧的值)和旧的值定义了相同的颜色(即条件等色)。在某些实施例中,mr=mg=mb=1。此外,对于R,G和B,可将新的RGBW值硬钳位至0至MAXCOL/M0的范围内,对于W则将新的RGBW值硬钳位至0至MAXCOL/M1的范围内。

附录B:确定背光单元输出功率

假设RwGwBwWw是由图6中的SPR方框454确定的子像素值。这些子像素值处在0至MAXCOL/M0的范围内。如上所述,这些子像素值对应于BL的值BL0。在方框430中,通过选择要被不变形地显示的最大子像素值P来选择输出功率BL。更特别地,如上所示的,

BL=BL0/INVy

如果子像素值P是可被不变形地显示的最大值,则

P*INVy=MAXCOL,因此

INVy=MAXCOL/P,即

BL=BL(P)=BL0*P/MAXCOL       (B1)

存在多种选择P的方式。在某些实施例中,由SPR方框454生成的Rw,Gw,Bw,Ww子像素值分别乘以各自的系数Rweight,Gweight,Bweight,Wweight(例如,Rweight=84%,Gweight=75%,Bweight=65%或75%,以及Wweight=100%),并将P选择为在整个图像上所得到的结果的最大值,即

P=max(Rw*Rweight,Gw*Gweight,

Bw*Bweight,Ww*Wweight)           (B1-A)

在某些实施例中,可如下计算得到的变量系数Xweight替代系数Rweight:

Xweight=Rweight+((Yweight-Rweight)*Gw/2SBITS)    (B1-B)

其中,Rweight,Yweight和SBITS是预定的常数。

可以其他方式选择子像素值P以获得期望的图像质量。

在某些实施例中,如下计算BL值。首先,对于每个子像素120,在(B1-A)或(B1-B)中计算值Psub,即从子像素的Rw,Gw,Bw,Ww值中而非图像中的所有子像素中得到(B1-A)中的最大值。随后对于每个子像素值120,根据(B1)初始地计算BL值BL=BL(Psub)(使用Psub替代P)。将这些初始BL值累积到柱状图中。柱状图的柱(bin)(计数器)被反向地颠倒(起始于最大的BL值),并将累积误差函数E_sum计算为颠倒的柱中BL值的总和。例如,E_sum[i]是柱号大于或等于i的柱中的BL值的总和,其中指数i随BL增大(即,较大的BL值被放置在具有较大i的柱中)。当E_sum[i]到达或超出预定阈值TH1则停止上述颠倒。假设这发生在i=i0的柱。在某些实施例中,将背光输出功率BL设定为柱i0中的某个值。例如,如果每个柱i都在某个数值bi和bi+1之间计数BL值(所有BL具有bi≤BL<bi+1),则可将输出功率BL设定为bi0或是大于等于bi0而小于bi0+1之间的其他一些值。

在某些实施例中,可执行线性插值以选择柱i0中的BL值。例如,可将输出功率BL定义为如下的总和:

BL=bi0+fine_adjust_offset                               (B2)

其中,

fine_adjust_offset=(Excess/Delta E_sum[i0])*bin_size    (B3)

其中,Excess=E_sum[i0]-TH1;Delta_E_sum[i0]=E_sum[i0]-E_sum[i0+1],其中bin_size是每个柱的大小,即bin_size=bi+1-bi(在某些实施例中,该值是16)。

还可通过将Excess和另一更高的阈值TH2相比较,来进行额外的调节。如果Excess>TH2,则可将fine_adjust_offset设定为:

fine_adjust_offset=(Excess/TH2)*bin_size

随后可使用(B2)确定BL。上述这些实施例都是非限定性的。

在某些实施例中,BL和INVy值使RwGwBwWw数据延迟一帧。更特别地,通过缩放444使用一帧(“当前帧”)的RwGwBwWw数据确定的INVy值来缩放下一帧。当LCD面板110显示下一帧时,使用由当前帧的RwGwBwWw数据确定的BL值来控制背光单元310。使用由先前帧的数据确定的BL和INVy值缩放并显示当前帧。这样的延迟允许在确定当前帧BL和INVy值之前开始显示当前帧。实际上,甚至在接收到当前帧的所有sRGB数据之前就可以开始显示当前帧。为了减小图像误差,可使BL值“衰减”(decayed),即BL值可由方框430产生作为从当前帧的数据确定的BL值和先前的BL值的加权平均值。在每秒显示30帧的一些显示器中,当图像明亮度迅速地改变时,对于BL和INVy值而言需要花费36帧来赶上图像明亮度。这样的延迟在许多应用中是可以接受的。实际上,当不存在图像明亮度的迅速变化时,BL和INVy值典型地不会在帧与帧之间变化很大,一帧的延迟不会导致图像的显著降级。当确实发生明亮度的迅速改变时,对于观察者而言需要花费时间以对图像进行视觉调节,因此由于BL和INVy值的延迟造成的图像误差不显著。见由Hwang等人在2009年4月23日提交的并被公开为US2009/0102783A1的美国专利申请,通过参考整体引入于此。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号