用于图像代码转换的位速率降低技术的制作方法

文档序号:7938210阅读:146来源:国知局
专利名称:用于图像代码转换的位速率降低技术的制作方法
技术领域
本发明涉及压縮,且尤其涉及图像的压縮。
技术背景将图像压縮成图像文件以用于传输及存储已在包括因特网图像传输、数字成像、图 像消息接发(messaging)等等的许多不同应用中成为必要。例如联合图像专家组标准 (JPEG)的图像压缩技术可允许以相对小的图像文件来存储高分辨率图像。随着数码相 机与无线通信装置的聚合,这些图像文件现在可经由无线网络得以共享。然而,此共享 在例如时间及带宽的网络资源方面可为昂贵的。为了降低或限制这些成本,无线网络提 供者有时对可经由网络传输的图像文件的文件大小强加限制。为符合这些文件大小限 定,将图像压縮到强加的文件大小限制可能会导致图像质量的显著损耗。发明内容本发明描述用于将数据编码以将图像数据压縮到降低的大小的技术。所述技术对将 图像代码转换到降低的大小以用于传输可尤其有效。本文中所描述的代码转换技术可用 于许多应用中。可利用所述技术的一种此应用是经由无线网络的传输。举例来说,用户 可使用具有图像捕获能力的移动电话(例如,所谓的相机电话或视频电话)来拍摄数字 图片。通常,所捕获的数字图片为高分辨率图像,例如,高分辨率JPEG图像。然而, 为了将所捕获的图像发送到另一电话,可能需要将高分辨率图像的图像文件代码转换到 较小的文件大小(例如,较低的分辨率)以符合无线网络服务提供者的传输要求或更好 地适合接收装置的屏幕大小及颜色限制。在一方面中, 一种处理数字图像数据的方法包含依 计算出的比例因子(scaling factor)来按比例縮放一个或一个以上量化表,使用所述一个或一个以上按比例縮放的量 化表来编码数字图像数据的多个像素块,追踪在数字图像数据的多个像素块的第n个块处经编码的位的数目与用以实现目标位速率而理想地应在第n个块处编码的位的数目之 间的差,及当所述差大于或等于阈值时移除用来编码图像数据的多个块的一部分的一个 或一个以上位。在另一方面中, 一种用于处理数字图像数据的设备包含存储器,其存储在编码数 字图像数据的多个像素块中使用的一个或一个以上量化表;及编码模块,其依据计算出 的比例因子来按比例縮放所述一个或一个以上量化表,使用所述一个或一个以上按比例 缩放的量化表来编码数字图像数据的多个像素块,追踪在数字图像数据的多个像素块的 第n个块处经编码的位的数目与用以实现目标位速率而理想地应在第n个块处编码的位 的数目之间的差,且当所述差大于或等于阀值时移除用于编码图像数据的多个块的一部 分的一个或一个以上位。在另一方面中, 一种处理数字图像数据的设备包含用于依据计算出的比例因子来 按比例縮放一个或一个以上量化表的装置,用于使用所述一个或一个以上按比例缩放的 量化表来编码数字图像数据的多个像素块的装置,用于追踪在数字图像数据的多个像素 块的第n个块处经编码的位的数目与用以实现目标位速率而理想地应在第n个块处编码 的位的数目之间的差的装置,及用于当所述差大于或等于阈值时移除用来编码图像数据 的多个块的一部分的一个或一个以上位的装置。在另一方面中, 一种用于处理数字图像数据的计算机程序产品包含计算机可读媒 体,所述计算机可读媒体上具有指令。所述指令包含用于依据计算出的比例因子来按比 例縮放一个或一个以上量化表的代码,用于使用所述一个或一个以上按比例縮放的量化 表来编码数字图像数据的多个像素块的代码,用于追踪在数字图像数据的多个像素块的 第n个块处经编码的位的数目与用以实现目标位速率而理想地应在第n个块处编码的位 的数目之间的差的代码,及用于当所述差大于或等于阈值时移除用来编码图像数据的多 个块的一部分的一个或一个以上位的代码。在另一方面中, 一种用于处理数字图像数据的无线通信装置手持机包含编码模块, 其依据计算出的比例因子来按比例縮放一个或一个以上量化表,使用所述一个或一个以上按比例縮放的量化表来编码数字图像数据的多个像素块,追踪在数字图像数据的多个 像素块的第n个块处经编码的位的数目与用以实现目标位速率而理想地应在第n个块处 编码的位的数目之间的差,且当所述差大于或等于阈值时移除用来编码图像数据的多个 块的一部分的一个或一个以上位;及发射器,其发射经编码的像素块。在另一方面中, 一种用于处理数字图像数据的集成电路装置包含至少一个处理器, 其经配置以依据计算出的比例因子来按比例縮放一个或一个以上量化表,使用所述一个目之间的差,且当所述差大于或等于阈值时移除用来编码图像数 据的多个块的一部分的一个或一个以上位。在另一方面中, 一种处理数字图像数据的方法包含识别用以实现目标位速率的零 值量化变换系数的所要数目,基于零值量化变换系数的所要数目来确定在按比例縮放一 个或一个以上量化表中使用的比例因子,依据所确定的比例因子来按比例縮放亮度 (luma)量化表及色度(chroma)量化表,其中所述色度量化表按比例縮放的程度大于 所述亮度量化表,及使用按比例縮放的亮度量化表及色度量化表来编码数字图像数据的 多个像素块。在另一方面中, 一种处理数字图像数据的方法包含获得用于数字图像数据的至少 一个像素块的多个量化变换系数,选择具有为二的幂的值的多个量化变换系数中的至少 一者,从一个或一个以上选定的量化变换系数的值减去为一的值,及编码多个量化变换 系数。在另一方面中, 一种处理数字图像数据的方法包含编码数字图像数据的至少一个 像素块以获得位序列;识别所述位序列的多个位,所述多个位是以充当需要添加一个零 字节的标记的方式排列的;改变所述位序列的所述位中的一者以使得所述位序列不再充 当标记序列;及传输所述位序列。本发明中所描述的技术可以硬件、软件、固件或其任何组合实施。当以软件实施时, 软件可在处理器中被执行,所述处理器可指一个或一个以上处理器,例如,微处理器、 专用集成电路(ASIC)、现场可编程门阵列(FPGA),或数字信号处理器(DSP),或其 它等效集成或离散逻辑电路。执行所述技术的软件可最初存储于计算机可读媒体中且由 处理器加载并执行。因此,本发明还涵盖包含致使处理器执行如本发明中所描述的多种 技术中的任一者的指令的计算机可读媒体。在一些状况下,计算机可读媒体可形成可销 售给制造商及/或用于装置中的计算机程序产品的部分。计算机程序产品可包括计算机可 读媒体,且在一些状况下还可包括封装材料。一个或一个以上实例的细节陈述于附图及以下描述中。其它特征、目标及优点将从 描述及图式以及权利要求书而显而易见。


图1为说明实施本文中所描述的编码技术的示范性系统的框图。图2为更详细地说明示范性编码模块的框图。图3为说明编码模块根据本文中所描述的宏观尺度位速率降低技术来对图像进行代 码转换的示范性操作的流程图。图4为说明编码模块使用宏观尺度位速率降低技术与微观尺度位速率降低技术的组 合来对图像进行代码转换的示范性操作的流程图。图5为说明编码模块实施微观尺度位速率控制以进一步降低图像位速率的示范性操 作的流程图。图6为说明编码模块实施另一类型的微观尺度位速率控制以进一步降低图像位速率 的示范性操作的流程图。
具体实施方式
本发明描述用于将数据编码以将图像数据压縮到降低的大小的技术。所述技术在将 图像代码转换到降低的大小以用于传输方面可尤其有效。本文中所描述的代码转换技术 可用于许多应用中。可利用所述技术的一种此应用是经由无线网络的传输。举例来说, 用户可使用具有图像捕获能力的移动电话(例如,所谓的照相机电话或视频电话)来拍 摄数字图片。通常,所捕获的数字图片为高分辨率图像,例如,高分辨率JPEG图像。 然而,为了将所捕获的图像发送到另一电话,可能需要将高分辨率图像的图像文件代码 转换到较小的文件大小(例如,较低的分辨率)以符合无线网络服务提供者的传输要求 或更好地适合接收装置的屏幕大小及颜色限制。可使用均一地影响整个图像以对所述图像进行代码转换的位速率控制技术将所捕 获的图像代码转换到可接受的文件大小。此类均一位速率控制技术本文中被称为宏观尺 度(macroscale)位速率控制技术。宏观尺度位速率控制技术可例如包括作为实现宏观 尺度位速率控制的主要手段的依据在位速率与零值量化变换系数的数目之间的近线性 关系对一个或一个以上量化表的修改。另外或其它,可使用仅影响图像的特定局部区域的位速率控制技术来代码转换所捕 获的图像。这些局部位速率控制技术本文中被称为微观尺度(microscale)位速率控制技 术。在此状况下,代码转换技术仅影响图像的一部分,例如图像的块的子集。在一方面 中,微观尺度技术包括选择性地降低系数的值从而以较小数目个位表示所述系数。在另 一方面中,微观尺度技术包括通过调整指示标记的位序列来消除对填补字节的需要。图l为说明实施本文中所描述的编码技术的示范性系统2的框图。系统2包括由网 络8连接的编码装置4及解码装置6。编码装置4从源获得图像且根据以下描述的技术来编码所述图像从而降低图像的大小以用于经由网络8传输到解码装置6或用于存储于 编码装置4的存储器内。编码装置4及解码装置6可包含任何有线或无线装置,例如, 个人计算机、移动无线电话、服务器、网络用具(network appliance)、集成于载具中的 计算机、视频游戏平台、便携式视频游戏装置、计算机工作站、计算机信息站(computer kiosk)、数字标牌(digital signage)、大型计算机(mainframe computer)、电视机顶盒 (television set-top box)、网络电话、个人数字助理(PDA)、移动媒体播放器、家庭媒体 播放器、数字视频投影仪或其它类型的电子装置。作为一实例,编码装置4或解码装置 6可与接收组件、传输组件及其它适当组件一起设于例如以上所描述的移动电话的无线 通信装置手持机内。
编码装置4可包括媒体源10以产生图像数据。媒体源IO可为例如数字视频摄像机 或静态照相机以捕获感兴趣的场景的图像数据。在一些方面中,媒体源10可集成于编 码装置4内。作为一实例,媒体源10可集成于移动电话中以形成所谓的相机电话或视 频电话。或者,媒体源10可为经由有线或无线链路耦合到编码装置4的独立装置,例 如独立数码相机。媒体源10的其它实例包括图像存档(image archive)、或来自内容提 供者的图像或视频流。
媒体源10捕获感兴趣的场景的图像数据。所捕获的图像数据可为静态图像或可能 为全运动视频序列,在为全运动视频序列的状况下可对所产生的视频序列的一个或一个 以上图像帧执行图像处理。尽管本发明中所描述的编码技术通常可适用于所捕获的数字 视频,但出于说明目的将描述此类技术对数字静态图像的应用。媒体源10将所捕获的 图像数据提供到编码模块12。在一些方面中,例如当编码装置4耦合到独立媒体源时, 由媒体源10提供到编码模块12的图像可能已被压縮。举例来说,独立媒体源最初可例 如在捕获图像后便压縮所述图像。或者,媒体源10可给编码模块12提供原始图像数据。
当媒体源10给编码模块12提供原始图像数据时,编码模块12编码所捕获的图像 以将图像压縮成特定图像压縮格式以用于存储及/或传输。编码模块12可使用许多图像 压縮格式中的任一者来压縮图像,所述图像压縮格式包括JPEG、带标签图像文件格式 (TIFF)、位图(BMP)或其它图像压縮格式。在视频的状况下,编码模块12可使用例 如运动图片专家组(MPEG)、国际电信联盟(ITU) H.264等等的许多视频压縮格式来 压縮视频。然而,为了示范性目的,将在JPEG的情形下描述所述技术。
具体来说,编码模块12可对原始图像数据执行例如8x8整数变换或离散余弦变换 (DCT)的整数变换以产生呈系数矩阵的形式的频域表示。编码模块12随后可量化所述 系数矩阵的系数以降低与高频率系数相关联的信息的量。编码模块12使用例如熵编码或游程长度(run-length)编码算法的压縮编码算法来编码量化系数。经编码的图像可存 储于编码装置4的存储器中(图l中未图示)。
编码模块12可进一步经配置以通过将图像分割成多个像素子集来压縮所述图像且 通过个别地编码像素子集来压縮所述子集中的每一者。这些像素子集可被称为块。例如, 在JPEG标准的状况下,编码模块12可将图像分割成8x8个块且单独地压縮8x8个块中 的每一者。大于或小于八行或八列的块也是可能的。
如上所述,编码装置4的用户可能希望将经压縮的图像文件经由网络8传输到解码 装置6。网络8可包含一个或一个以上有线或无线通信网络或其组合。在一些方面中, 网络8的服务提供者可对经由网络8所传输的图像强加文件大小限制。作为一实例,服 务提供者可强加300千字节(KB)的最大文件大小传输能力。另一方面,对于典型5 百万像素(megapixel)图像,当最初由编码模块4或媒体源10压縮时,文件大小可大 约为1到2百万字节(MB)。因此,为了符合网络8的服务提供者的传输要求,编码装 置4可能需要对所存储的图像进行代码转换以产生较小图像文件。
为了将所捕获的图像代码转换到可接受的文件大小,编码装置4可利用本文中所描 述的技术中的一者或一者以上来降低编码位速率,从而降低文件大小。在一些方面中, 编码模块12可利用均一地影响整个图像以对所述图像进行代码转换的位速率控制技术。 此类均一位速率控制技术本文中被称为宏观尺度位速率控制。编码模块12可例如作为 实现宏观尺度位速率控制的主要手段而修改用于编码所述图像的一个或一个以上量化 表。如以下将详细描述,编码模块12可依据在位速率(i )与零值量化变换系数的数目 之间的近线性关系来修改量化表。近线性关系可例如应用于任何基于块的变换编码系 统。
另外或其它,编码模块12可使用仅影响图像的特定局部区域的位速率控制技术来 将图像代码转换到可接受的文件大小。这些局部位速率控制技术本文中被称为微观尺度 位速率控制。在此状况下,代码转换技术并非均一地影响整个图像,而是仅影响图像的 一部分。举例来说,宏观尺度位速率控制技术可应用于图像的块的仅一子集。在一方面 中,编码模块12可识别为二的幂的一个或一个以上量化变换系数且将所识别系数的值 降低一。此允许编码模块12以较小数目个位来表示系数同时对图像的质量仅有小的影 响。在另一方面中,编码模块12可识别需要填补字节的位序列的出现且改变所述序列 的位中的至少一者以使得不再需要填补字节。
在一些方面中,编码模块12可独立于宏观尺度位速率控制技术而利用微观尺度位 速率控制技术中的一者或一者以上。举例来说,编码模块12可仅利用微观尺度位速率
13控制技术来降低位速率以将图像代码转换到较小的文件大小。在另一实例中,编码模块 12可在对原始图像数据的初始编码期间利用微观尺度位速率控制技术。因此,可在初始 压縮期间使用微观尺度位速率控制技术来降低图像的文件大小。
或者,编码模块12可结合宏观尺度位速率控制技术而使用微观尺度位速率控制技 术以在必要时进行进一步位速率降低从而符合目标位速率。换句话说,编码模块12可 实施两个阶层的位速率控制以对图像进行代码转换在宏观尺度层级上的第一阶层的位 速率控制,其中技术同等且均一地整体影响整个图像;及在微观尺度层级上的第二阶层 的位速率控制,其中技术影响图像的特定局部区域。此两阶层式策略允许编码模块12 首先粗略地降低位速率以接近目标文件大小且随后在必要时进行精细调整到所述位速 率。以此方式,当宏观尺度位速率控制技术不足时,微观尺度位速率控制可仅进行进一 步调整。举例来说,当在代码转换过程期间经编码的位的数目超过阈值时,微观尺度位 速率控制可仅进行进一步位速率降低。
在降低图像数据的位速率以产生较小的文件大小之后,发射器14或其它网络接口 将图像经由网络8发射到解码装置6。解码装置6经由接收器16接收经编码的图像且用 解码模块18来解码经编码的图像数据。解码装置6有可能可经由媒体呈现单元20向解 码装置6的用户呈现经解码的图像,所述媒体呈现单元20可包括显示器装置及音频装 置(如果适用)。
本发明中所描述的技术可提供许多优点。具体来说,代码转换技术降低图像的文件 大小同时维持足够的质量。此外,代码转换技术可用来降低文件大小以符合由网络服务 提供者强加的特定文件大小要求。以此方式,编码装置4可在一遍的代码转换中将图像 代码转换到正确大小,而非对图像执行若干重新编码或若干遍以达到最佳解决方案。此 外,使用所述技术来对图像进行代码转换允许编码装置4最初以高质量压縮图像且仅在 必要时降低图像的质量以用于传输。以此方式,文件大小限制不会约束由用户创建或存 储的高质量图像。替代地,文件大小限制仅约束需要传输的图像。然而,所述技术还可 用于约束图像以用于压縮的存储。
图2为更详细地说明例如图1的编码模块12的示范性编码模块的框图。编码模块 12包括图像处理模块24、变换模块26、量化模块28、熵编码模块30、熵解码模块32、 反量化模块34、代码转换模块36及存储器37。如本文中将更详细地描述,编码模块12 的组件可用于最初编码原始图像数据以及对先前编码的图像数据进行代码转换以降低 经编码的图像数据的大小。在一些方面中,编码模块12可驻存于无线通信装置手持机 内以编码图像及/或视频以用于经由无线网络传输到另一无线通信装置。图像处理模块24从媒体源18 (图1)接收图像数据。从媒体源18所接收的图像数据可为直接来自多个图像传感器的原始图像数据或最初压縮的图像数据的经编码的图像文件。在为原始图像数据的状况下,图像处理模块24可将原始图像数据转换到YCbCr色空间。YCbCr色空间中的图像数据包括表示图像的明亮度(brightness)的亮度分量Y及分别表示沿着蓝轴及红轴的颜色的两个色度分量Cb及Cr。到YCbCr色空间的转换可为有利的,因为编码模块12可通过丢弃额外色度信息(即,Cb及Cr信息)而保留较多的亮度信息,艮卩,较多的Y分量。此可为有利的,因为人类视觉系统对名亮度(亮度Y)比对沿着蓝轴或红轴的颜色(色度Cb及Cr)更敏感。然而,类似的技术可用于例如RGB色空间的其它色空间中。
图像处理模块24另外可对所述颜色分量中的一者或一者以上进行下取样。下取样通常是以因子二在水平方向(例如,沿着行)与垂直方向(例如,沿着列)中的任一者或两者上进行。常见的下取样比率表示为H1V1 (无下取样),对于H1V1,对每一组Cb及Cr样本编码一个Y样本;H2V1 (在水平方向上沿着行对色度进行下取样),对于H2V1,对每一组Cb及Cr样本编码两个Y样本;及H2V2 (在垂直方向上沿着列与在水平方向上沿着行对色度进行下取样),对于H2V2,对每一组Cb及Cr样本编码四个Y样本。在一些状况下,编码模块12可仅对色度分量进行下取样。在其它状况下,编码模块12可对亮度分量与色度分量两者进行下取样,但下取样色度分量的程度大于亮度分量,因为人类视觉系统对亮度较不易察觉。
不管图像数据为原始图像数据还是先前压縮的图像数据,图像处理模块24均可将图像数据分割成像素块且独立处理所述块中的每一者。根据JPEG标准,图像处理模块24可将图像数据分割成8x8个块。然而,大于或小于八行或八列的块也为可能的。将图像数据分割成块且独立处理所述块中的每一者可降低编码及/或代码转换所述图像所需的存储器空间及时间的量。
当从媒体源18所接收的图像数据为来自传感器的阵列的原始图像数据时,编码模块12可执行图像的初始压縮。编码模块12最初可使用标准图像压縮技术来压縮图像。或者,编码模块12可利用本文中所描述的技术中的一者或一者以上来最初压缩图像数据。在任一状况下,变换模块24将整数变换应用于图像数据的块以产生呈变换系数的矩阵的形式的频域表示。所述变换可为例如8x8整数变换或DCT。如上所述,所述变换的结果为系数的矩阵。例如,在JPEG标准的状况下,8x8个块中的每一者对应于64个系数的矩阵,所述系数包括一个DC分量及63个AC分量。
在变换之后,量化模块28量化经变换的系数。量化模块28可视所采用的编码标准而定以各种方式量化所述系数。量化模块28可例如将量化表应用于变换系数以量化所述系数。量化按比例縮放所述变换系数以允许系数"层级"(而不是系数本身的实际值)的编码。如下所述,具有较大值的量化表导致对变换系数的较大按比例縮放。由于人眼对低频率分量更敏感,所以典型量化表对低频率提供的层级多于对高频率提供的层级。在一些方面中,量化模块28可针对Y分量应用亮度量化表38及对Cb及Cr分量中的一或两者应用色度量化表39。色度量化表39通常具有较大的按比例縮放步长,其导致量化模块28丢弃较多的色度信息以允许编码模块12保持较多的亮度信息。可由所利用的特定压縮标准来推荐量化表的默认值。或者,特定装置(例如,数码相机及/或图像软件)可利用其自身的自定义量化表。
熵编码模块30使用熵编码方案来编码量化的变换系数。为了使用熵编码方案来压縮量化系数,熵编码模块30可通过采用系数的Z字形图案以使得低频率系数被分组在扫描开始处且高频率分量分组在扫描结束处来将量化系数组织成向量。换句话说,熵编码模块30可将量化系数的二维矩阵中的所有量化系数排列为量化系数的一维向量。
熵编码模块30随后可将例如霍夫曼(Huffman)编码或算术编码的熵编码方案应用于量化系数的向量。使用霍夫曼编码作为实例,熵编码模块30将每一量化系数编码为霍夫曼代码及附加在霍夫曼代码之后的余项(residue)。对于DC系数,霍夫曼代码指示在当前DC值与先前图像的DC值之间的差的量值的大小(以位为单位)。换句话说,霍夫曼代码指示可由特定数目个位表示的DC差的量值。例如,如果DC差为-6,则霍夫曼代码指示大小3,因为其采用3个位来表示为6的值(即,量值)。然而,指示大小3的霍夫曼代码还表示多个其它量值(即,-7、 -5、 -4、 4、 5、 6及7)。因此,熵编码模块30附加所述余项以唯一地识别为所述大小的多个DC差中的哪一者与DC差相对应。熵编码模块30通过3位的余项"010" ("010"为2的二进制)来识别数字-6,因为-6是大小3的第二低的差。因此,为了编码为-6的DC差,熵编码模块30输出大小3的霍夫曼代码且随后发出三个位"010"。
对于AC系数,霍夫曼代码指示"游程"及"大小"的级联。"游程"为在AC系数的Z字形次序中的连续零的数目,且"大小"为后续非零系数的位的大小。余项与DC系数一起时表示唯一识别符,所述唯一识别符识别多个可能的值的值中的一者,其对应于非零系数的大小。对于含有序列"0003"的Z字形扫描,熵编码模块30产生为三的游程及为二的大小以及余项"11"。熵编码模块30发出游程/大小为3/2的霍夫曼代码,且随后发出两个余项位"11"。
根据JPEG标准,熵编码模块30具有用于AC游程长度的编码的两个特殊符号。第一特殊符号为块结束(EOB)符号,其指示块的剩余部分仅由零组成且被指定了为0/0的游程/大小。由于大小为O,所以不编码余项。第二特殊符号为零游程长度(ZRL)值,其意味着Z字形扫描中存在16个连续的零。由于游程及大小中的每一者由多达4个位表示,因此游程的最大值为15。于是明白,ZRL游程/大小符号为15/0 (即,15个零后接续一个0)。此外,由于大小为0,所以不编码余项。
在JPEG标准中界定四个标准霍夫曼表,其每一者针对DC亮度分量、DC色度分量、AC亮度分量及AC色度分量。这些标准表定义每一可能的符号(例如,在JPEG状况下为162个不同的可能的值)的霍夫曼代码。熵编码模块30可使用由JPEG标准定义的标准霍夫曼表。或者,熵编码模块30可界定自定义霍夫曼表。在一些情况下,这些自定义霍夫曼表可包括降低数目个霍夫曼代码。举例来说,自定义霍夫曼表可包括用于可能的162个值中的仅IOO个值的代码。
在一些方面中,编码方案可包括充当标记的特定位序列。标记可用以例如识别元数据(metadata)的区域。元数据存储关于图像的信息(例如维度、下取样比率、量化表及霍夫曼表)。在JPEG标准中,熵编码模块30可使用两字节的标记,所述标记以识别元数据的区域的字节OxFF开始,其后接续指示随后的元数据的类型的字节。在系数的熵编码正巧产生字节对齐的OxFF的状况下,熵编码模块30将零字节0x00填塞到位流中以消除系数位流有标记的歧义。
当最初压縮的图像数据太大而不能符合服务提供者的传输要求或解码装置的显示器时,编码模块12可能需要对图像进行代码转换以产生较小的图像文件。换句话说,编码装置12可重新压縮图像数据以符合服务提供者的要求或解码装置的显示器。图像处理模块24从媒体源18 (图l)接收经编码的图像数据。如上所述,媒体源18可为存储器38或例如数码相机的外部装置。在一些方面中,图像数据处理模块24可将经编码的图像数据分割成像素块,且编码模块12可单独地对所述块中的每一者进行代码转换。单独地对所述块中的每一者进行代码转换在速度及存储器使用方面可引起增加的效率。
为了对图像数据进行代码转换,熵解码模块32使用霍夫曼解码来解码经编码的图像数据。熵解码模块32可利用由熵编码模块30用以编码图像数据的相同的霍夫曼编码表来解码经编码的图像数据。霍夫曼编码表可例如存储于存储器38内。反量化模块34执行反量化以产生用于图像数据的变换系数。在一方面中,代码转换模块36可在频域中对图像数据进行代码转换。换句话说,编码模块12可对变换系数执行代码转换而不是执行反变换以获得原始图像数据。然而,在其它方面中,编码模块12可包括反变换模块,反变换模块获得原始图像数据且使用原始图像数据来对图像进行代码转换。在频
17域中对图像数据进行代码转换可通过消除将反变换函数应用于变换系数的需要而降低 处理时间的量。
代码转换模块36可利用宏观尺度位速率降低技术(即,均一地影响整个图像的位 速率降低技术)来降低图像数据的大小。举例来说,代码转换模块36可按比例縮放亮 度量化表38、色度量化表39或两者,且使用经按比例縮放的量化表来重新编码图像数 据。在一方面中,代码转换模块36可依据p域分析来按比例縮放亮度量化表38及/或色 度量化表39, p域分析利用位速率(/ )与p (即,零值量化变换系数的百分比)之间的 近线性关系。具体来说,代码转换模块36可发现p与位速率/ 之间的线性关系。可在p 域中将位速率i 模拟为
/ = 6(1-/7), (1)
其中0为恒定斜率且由图像内容所确定。
为了使算术简化,p可由z替换,z以整数形式表示零值量化变换系数的数目而非将
所述数目表示为比率。因此,可将方程式(1)重写为
W《=l-z)' (2)
其中Zm。,为图像的块中的AC系数的总数目,且/ ^为可表示块的AC位的最小数 目。由于方程式(2)应仅反映受对AC量化分量的按比例縮放的影响的位,所以可不考 虑EOB符号。因此,如果图像中的每一块含有全零或等效地仅EOB符号,则/表示 / 的值。
代码转换模块36可使用目标位速率i r、最初编码的图像的位速率i 。及最初编码的 图像的零值量化变换系数的数目z。来计算零值量化变换系数的目标数目(a)。在一方 面中,代码转换模块36如方程式(3) - (5)中所示来计算zr。
<formula>formula see original document page 18</formula><formula>formula see original document page 19</formula>
代码转换模块36可例如在图像的初始编码期间从最初编码的图像获得/ 。及Z。。代 码转换模块36可基于由用户规定或从网络服务提供者获得的目标文件大小(Fr)来计 算/ r。目标文件大小Fr可例如以字节为单位来规定,且包括标头信息及DC位以及AC 位。为了计算目标位速率/ r,将目标文件大小Fr乘以常数且减去用于标头信息的位数 目(//)及DC信息的位数目(Z)C),即/ r=8*iVH-DC。
代码转换模块36可使用对量化变换系数的值计数的直方图来计算图像的零值系数 的数目(。。量化变换系数的直方图可定义为H (q,i,v) -在使用量化表q (零索引) 的z字形扫描条目i (零索引)中量化系数绝对值lvl的出现次数。因此,代码转换模块 36可对于量化表的任何按比例縮放重新计算图像的z。举例来说,最初编码的图像的零
值量化变换系数的数目与^=2^=。5^1//(《,"=0)相对应。作为另一实例,假设以四来
按比例縮放第一量化表的第十七个条目。于是,值z正好增加5^=1//( = 0,!' = 16,",因
为在第一表的第十七个条目中具有小于四的量值的所有量化变换系数将被重新量化为 零。基于直方图,代码转换模块36可选择比例因子s以使得亮度量化表38及色度量化 表39的按比例縮放引起不超过^的z。作为一实例,假设图像的直方图指示存在1000 个具有为i的值的系数及2000个具有为2的值的系数。此外,假设目标零值系数的数 目(a)为1500。代码转换模块36选择为2的比例因子,其是不会引起超过zr的z的 最大比例因子。更明确地说,选择为2的比例因子引起1000个系数变为零值,此数目 小于zr。另一方面,为3的比例因子将引起3000个系数(即,所有"1"系数及所有"2" 系数)变为零值,此数目超过zr。通过选择不过调整zr的比例因子,代码转换模块36 不会降低图像的大小超过所需的量。
然而,在一些状况下,代码转换模块36可能需要进一步降低零值系数的数目。在 以上所述的实例中,代码转换模块36可能需要进一步将零值系数的数目再降低500个 系数。为此,代码转换模块36可将大于第一比例因子的第二比例因子应用于所述量化 表中的一者或两者的一部分。使用选定的比例因子s,代码转换模块36可选择位置索引 fc,以使得
<formula>formula see original document page 19</formula>200880017649.7 系数将 由于量化而变为零。在以上所述的实例中,所有具有值"l"的系数将变为"0"。然而, 由于所得的零的数目小于零的目标数目,所以代码转换模块36开始迫使具有等于s的 值的那些系数为零,此是从序列的最后系数开始。换句话说,代码转换模块36以比例 因子抖l来按比例縮放所述系数的至少一部分。代码转换模块36可例如设定&等于127 且使&缓慢递减,直到零的数目符合目标为止。以此方式,以比例因子s来按比例缩放 最前面fc个系数且同时以比例因子s+l来按比例縮放剩余的(1274)个系数。如上所述, 比例因子s及s+l取大于或等于一的值。此外,比例因子s小于比例因子s+l。如下文 将更详细地描述,所述序列的系数的最后部分(即,以比例因子wl按比例縮放的系数) 对应于色度系数。.
代码转换模块36可将亮度量化表38及色度量化表39的量化条目定序成单一序列, 且使用所述序列来确定it。在一些方面中,可定序量化表的量化条目以使得所述序列以 亮度量化表38的低频率量化条目开始,其后接续亮度量化表38的高频率量化条目,随 后接续以色度量化表39的低频率量化条目,且最后为色度量化表39的高频率量化条目。 因此,代码转换模块36可被认为将亮度量化表38及色度量化表39两者的AC量化条目 级联成一个长序列,其中亮度条目首先定序于z字形扫描中,其后接续附加到亮度条目 的结束的色度条目。代码转换模块36可使用其它定序技术来定序量化表的条目。举例 来说,代码转换模块36可产生条目的序列,其以低频率亮度条目开始,其后接续一个 或一个以上低频率色度条目,随后接续高频率亮度条目及高频率色度条目。扫描中不包 括亮度量化表38及色度量化表39两者的DC分量。因此,不按比例縮放亮度量化表38 及色度量化表39的DC分量。
因此,代码转换模块36可以比例因子s来按比例縮放最前面fc个条目且以较大的比 例因子(例如,s+l)来按比例縮放剩余的条目(例如,在以上实例中为128-。。如上 所述,比例因子s与s+l两者均大于或等于一,从而引起增加的数目个零值变换系数。 下一页上的两个矩阵为根据此技术将比例因子应用于相应量化表的实例矩阵。将第一比 例因子矩阵应用于亮度量化表38且将第二矩阵应用于色度量化表39。
表l:亮度按比例缩放矩阵<formula>formula see original document page 21</formula>层的位速率控制,其中整体代码转换技术同等且均一地影响整个图像;及在微观尺度上 的第二阶层的位速率控制,其中代码转换操作的作用局限于图像的特定区域。此两阶层 式策略允许代码转换模块36首先粗略地接近目标位速率且随后在必要时进行精细调整。 或者,可独立于宏观尺度速率控制技术而利用微观尺度速率控制技术。
在图像数据的代码转换期间,代码转换模块36追踪已被代码转换的位的数目以确 定代码转换是否正在达到目标位速率i r的过程中。代码转换模块36确定何时需要进一 步位速率降低且在需要进一步位速率降低时启动微观尺度位速率控制。对于具有原始位 速率/ 。的图像,代码转换模块30可确定针对原始图像所解码的位的数目i d (n)与针 对经代码转换的图像所编码的位的数目& (n)的比率是否等于原始位速率与目标位速 率之间的比率(即,/ 。 / r)。理想地,经解码的原始图像中的位/^ ")与经编码的新 图像中的位A (")的比率等于在系数的第n个块处的i 。 i r,艮P,
7 t
(7)
其中& ")及/ e ")分别指示在第n个块处已解码的位的数目及已编码的位的数 目,i 。为在图像具有总共AT个块时等于/^")的原始图像位速率,且i r为代码转换图 像的目标位速率。
如果移除了位的最小数目的恒定偏差,则可使方程式(7)中的比例更准确(正如 在方程式(2)中的/J域分析的状况下),以获得方程式
(8)
由于代码转换模块36经设计以控制在第n个块处的目标位速率以拒绝此比例,所 以用第n个块处的目标位速率^ (n)取代方程式(8)中的& (w)且求解尺(M)为可 能的。结果展示于方程式(9)中。代码转换模块36根据方程式(10)来计算在^ ( ) 与/ , (n)之间的差(A)。此差表示误差(e),即,在图像的代码转换期间在第n个块 处实际经编码的位的数目与理想地应在第n个块处编码的位的数目之间的差。
/ t 一尺
W")-U")M血n(")
(9)
22<formula>formula see original document page 23</formula>
代码转换模块36可在代码转换过程期间监控所述差A以确定是否要启动微观尺度技 术中的一者或一者以上以进一步降低位的数目。具体来说,当A大于或等于阈值时,代 码转换模块36可启动一个或一个以上微观尺度位速率控制技术。阚值可为例如目标位 速率的函数(例如,目标位速率的5%)。以此方式,代码转换模块36将A用作是否应调 用微观尺度技术的指示符。代码转换模块36可进一步利用A的量值来确定需要从位流移 除以使A在适当限值内的位的数目。
代码转换模块36可通过选择性地降低一个或一个以上系数的值来降低位流中的位 的数目。如上所述,图像的经编码位流主要包含用于AC系数的霍夫曼代码及余项串。 通过选择性地降低一个或一个以上系数的值,代码转换模块36可减小经降低的系数的 霍夫曼代码的长度。此是因为,较小系数值通常比较大系数值更频繁,且因此通常被指 定较短的霍夫曼代码。此外,代码转换模块30可通过选择性地降低系数值中的一者或 一者以上来节省余项中的位。如上所述,熵编码模块30基于零的游程长度及系数的二 进制大小来指定用于AC系数的代码。代码转换模块36无法在不根本改变块的情况下改 变零的游程长度,但其可精细地改变系数的二进制大小。为进行此改变,代码转换模块 36可识别具有等于或至少接近于二的幂的值的系数,且降低那些系数以使其小于二的 幂。举例来说,如果待编码的系数值为2的幂,则代码转换模块36将系数值递减1。例 如,对于为八的系数值,代码转换模块36以四个位来编码余项的长度。代码转换模块 36将为八的系数值递减一,从而引起为七的新系数值。为七的系数值由三个位的余项来 表示,从而将位流降低了一位。此外,表示游程大小的霍夫曼代码可能也较短,从而引 起额外的位节省。类似地,将为九的系数值降低二引起为七的新系数值,所述新系数值 可由降低数目个位及较短霍夫曼代码来表示。然而,将系数值降低二会引起额外失真。 因此,可将值降低的位数目视被认为可接受的失真量而定。
在一些方面中,代码转换模块36可省略选择在被降低时将等于零的系数值。举例 来说,在选择为二的幂的系数的状况下,代码转换模块36可省略选择为一的系数值(其 为二的幂)。如果代码转换模块36选择具有一的值的系数且将那些系数递减到为零的值, 则完全消除了变换的所述特定分量。此引入了比预期更多的失真及/或假影(artifact)。 因此,代码转换模块36可不降低具有为一的值的系数。
另外或其它,代码转换模块36可通过降低填补字节的数目而进一步降低位流的位
23数目。如上所述,代码转换模块36可插入填补字节,其在对应于元数据的标记的位序 列之后。在JPEG标准的状况下,例如,可在熵编码位流中在OxFF出现之后插入零字节 0x00以将实际系数位流与标记予以区分。代码转换模块36可通过消除将八个一的字节 对齐序列与标记予以区分所需的填补字节而将位流的位数目降低一个字节(八个位)。 为了避免使用填补字节,代码转换模块36识别位流中存在表示标记的位序列的位置。 例如,在JPEG标准中,代码转换模块36可识别位流中存在0xFF (即,八个连续的一) 的位置。
在一方面中,代码转换模块36可包括位缓冲器,其存储包含写入到位流的下一个 字节的最左边位。霍夫曼代码及余项被交替附加于右边,其最高有效位为最左边位。最 左边的八个位可含有以下序列中的任一者(1)仅来自霍夫曼代码的位(H), (2)仅来 自余项的位(R), (3)霍夫曼代码的结束及余项的开始的位(HR), (4)余项的结束及 霍夫曼代码的开始的位(RH), (5)霍夫曼代码的结束的位及整个余项的位及下一个霍 夫曼代码的开始的位(HRH), (6)余项的结束及整个霍夫曼代码及下一个余项的开始 (RHR),或(7)项目(2)到(6)中的每一者,其中HR或RH对被插入于所述序列的 中间。
代码转换模块36可改变表示余项的八个位中的一个或一个以上位。在改变余项时, 代码转换模块36可改变余项的最低有效位,此举防止将OxFF写入到位流。以此方式, 代码转换模块36确定八个位中的哪一者要改变以使得霍夫曼代码得以保留且余项的改 变为最小。在以上七个可能状况的列表中,状况(1)不可修改,因为不希望改变霍夫 曼代码。然而,JPEG标准未界定全为1的位的霍夫曼代码,因为此霍夫曼代码被保留 作为较长码字的前缀。使用此信息,状况(1)、 (6)及(7)在JPEG的状况下将不产生 OxFF。在所有状况(2)到(5)中,代码转换模块36改变余项的最低有效位,所述最 低有效位仍在位缓冲器的最左边的八个位内。在改变此位后,位序列不再表示标记且填 补字节为不必要的。以此方式,代码转换模块36试图以最少量的失真实现位速率的最 大降低。
代码转换模块32继续针对目前正被代码转换的个别像素块实施微观尺度位速率控 制技术中的一者或两者,直到在图像的代码转换期间在第n个块处实际编码的位的数目 与理想地应在第n个块处编码的位的数目之间的差A降到阈值以下为止。在一些状况下, 在使用微观尺度位速率控制技术来降低当前块中的位后,A可降到阈值以下。然而,在 其它状况下,在A降到阈值以下之前可能将微观尺度位速率控制技术用于图像的多个块 上。在降到阈值以下后,除非误差再次增加而超过阈值,否则代码转换模块32停止实施微观尺度位速率控制技术且仅实施宏观尺度位速率控制技术。
本发明的代码转换框架可使用观察程序设计图案。在观察程序设计图案中,当目标 改变其状态时,其引发事件且通知正在收听所述特定事件的任何软件观察程序。目标向 其订户公开所述事件。每一订户随后执行与事件中所含有的信息相关的动作。若千订户 可响应于同一事件,所述订户各具有完全不同的功能性,且相关功能可封装于一个模块 中。又,观察程序设计图案允许以在线方式进行代码转换而不在存储器中保持过多状态。 一旦块被解码,订阅的编码器便可立即编码所述块。
在图2中所说明的实例中,在代码转换框架中存在四个基本模块熵解码模块32、 代码转换模块36、量化模块28及熵编码模块30。解码模块32读取原始位流且产生数 据以用于操控。解码模块32是对订户的主要的信息发行者。其它三个模块可订阅解码 模块32事件。在第一遍解码期间,代码转换模块36订阅解码模块32且收集整体图像 统计资料。代码转换在第二遍时发生。在第二遍期间,代码转换模块36订阅解码模块 32,且编码模块30订阅代码转换模块36。代码转换模块36还订阅编码模块30以追踪 编码统计资料。因此,解码模块32被运行两次,且仅改变订阅。以下提供主程序的虚 拟代码。
从原始文件创建解码模块
创建代码转换模块
将代码转换模块链接到解码模块
解码整个图像(收集统计资料)
重设解码模块
重设代码转换模块
创建编码模块
将代码转换模块链接到解码模块及编码模块
解码整个图像(代码转换且写入新图像)
破坏解码模块
破坏编码模块
破坏代码转换模块
另一设计图案可实施于代码转换模块36中,其被称为策略图案。此图案仅仅意味 着若干算法(或策略)可实施一个功能。策略图案在针对其在实现准确位速率控制方面 的有效性评估且比较不同的算法时变得有用。所述框架实施所讨论的每一算法,且主程 序仅仅需要切换以插入正确的算法。200880017649.7
说明书第19/24页
上述技术可个别地实施,或此类技术中的两者或两者以上或所有此类技术可一起实 施于编码模块12中。编码模块12中的组件为那些适用于实施本文中所描述的技术的示 范性组件。然而,编码模块12可包括许多其它组件(如果需要)以及将上述模块中的 一者或一者以上的功能性相结合的较少的组件。编码模块12中的组件可实施为一个或 一个以上处理器、数字信号处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、 离散逻辑、软件、硬件、固件或其任何组合。将不同特征描绘为模块希望强调编码模块 12的不同功能方面,且未必暗示此类模块必须由单独的硬件或软件组件来实现。而是, 与一个或一个以上模块相关联的功能性可集成于共用或单独的硬件或软件组件内。
图3为说明编码模块(例如图2的编码模块12)根据本文中所描述的宏观尺度位速 率降低技术来对图像进行代码转换的示范性操作的流程图。最初,编码模块12获得经 编码的图像(40)。在一些方面中,编码模块12可从媒体源18获得经编码的图像。或 者,编码模块12可获得原始图像数据且执行图像数据的初始编码以获得经编码的图像。
编码模块12解码经编码的图像(42)。熵解码模块32可使用与图像相关联的代码 表来解码经编码的图像以获得量化变换系数,且反量化模块34执行反量化以产生用于 所述图像的变换系数。
编码模块12确定最初编码的图像的位速率及零值量化变换系数的数目,即,i 。及 z。(44)。可基于经编码的图像的文件大小来计算位速率。可通过分析在解码期间所获得 的量化系数的矩阵来确定零值量化变换系数的数目。在一方面中,代码转换过程可根据 观察程序设计图案而操作。在所述状况下,零值系数的数目以及其它统计资料可在第一 遍解码期间计算出且以下描述的代码转换可在第二遍期间发生。
编码模块12获得目标位速率(46)。编码模块12可例如从装置的用户或网络服务 提供者获得目标位速率。或者,编码模块12可基于由用户规定或从网络服务提供者获 得的目标文件大小(F》来计算目标位速率i r。目标文件大小Fr可例如以字节为单位 来规定,且包括标头信息及DC位以及AC位。在一方面中,编码模块12可根据方程式 i 产8^^F厂/f-Z)C来计算目标位速率i r,其中H为标头位的数目且DC为用以表示图像的 DC分量的位的数目。
编码模块12确定实现目标位速率(zr)所需的零值量化变换系数的数目(48)。举 例来说,代码转换模块36可使用目标位速率i r、最初编码的图像的位速率/ 。及最初编 码的图像的零值量化变换系数的数目z。来计算零值量化变换系数的目标数目a。在一方 面中,代码转换模块36如以上方程式(3)到(5)中所示来计算zr。
编码模块12基于零值量化变换系数的目标数目来确定比例因子s及位置索引it
26(50)。代码转换模块36可使用系数值的直方图来选择比例因子"以使得由于亮度量化 表38及色度量化表39的按比例縮放而产生的零值系数的数目不超过^。作为一实例, 假设图像的直方图指示存在1000个具有为1的值的系数及2000个具有为2的值的系数。 此外,假设目标零值系数的数目(a)为1500。代码转换模块36选择为2的比例因子, 其为不会引起超过a的z的最大比例因子。代码转换模块36可进一步确定位置索引&, 此处将第二、较大的比例因子应用于在所述位置索引之后的系数引起零值系数的所要数 目。
编码模块12依据比例因子s及位置索引;t来按比例縮放亮度量化表38及色度量化 表39 (52)。代码转换模块36可将亮度量化表38及色度量化表39的量化条目定序成若 干条目的单一序列,且以比例因子s来按比例縮放所述序列的最前面;t个条目,且以较 大的比例因子(例如,抖l)来按比例縮放所述序列的剩余的条目。以此方式,将色度 量化表39按比例縮放的程度大于亮度量化表38以更好地保留图像的明亮度。此外,以 不同的比例因子来按比例縮放量化表的所述条目的部分降低了过调整目标位速率或欠 调整目标位速率的可能性。
编码模块12使用经按比例縮放的量化表来重新编码图像(54)。举例来说,量化模 块28使用经按比例縮放的量化表来量化变换系数,且熵编码模块30编码所述量化系数 以产生经编码的位流。在图3的流程图中所描述的实例中,编码模块12在频域中(即, 使用变换系数)对图像进行代码转换。在频域中对图像数据进行代码转换可通过消除对 将反变换函数应用于变换系数的需要来降低处理时间。然而,在其它方面中,编码模块 12可包括反变换模块,所述反变换模块获得原始图像数据且使用原始图像数据来对图像 进行代码转换。
图4为说明编码模块(例如图2的编码模块12)使用宏观尺度位速率降低技术及微 观尺度位速率降低技术的组合来对图像进行代码转换的示范性操作的流程图。最初,编 码模块12获得经编码的图像(60)。编码模块12可从媒体源18获得先前编码的图像或 从媒体源18获得原始图像数据且执行图像数据的初始编码以获得经编码的图像。
编码模块12解码经编码的图像(62)。编码模块12分别确定最初编码的图像的位 速率及零值量化变换系数的数目,即,i 。及z。 (64)。可基于经编码的图像的文件大小 来计算位速率。可在解码期间确定零值量化变换系数的数目。编码模块12获得目标位 速率(66)。编码模块12可例如从装置的用户或网络服务提供者获得目标位速率。或者, 编码模块12可基于由用户规定或从网络服务提供者获得的目标文件大小(Fr)来计算 目标位速率/ r。编码模块12确定实现目标位速率所需的零值量化变换系数的目标数目a (68)。举 例来说,代码转换模块36可使用目标位速率i r、最初编码的图像的位速率/ 。及最初编 码的图像的零值量化变换系数的数目z。来计算零值量化变换系数的目标数目(zr)。在 一方面中,代码转换模块36如以上方程式(3)到(5)中所示来计算^。
编码模块12基于零值量化变换系数的目标数目来确定比例因子s及位置索引)t (70)。代码转换模块36可计算比例因子s及位置索引&以使得其满足方程式
163卜l
4=0 (=1 v=l n=jt(n t64)
《=
/2 5
,/ = wmod64,v = 51
编码模块12依据比例因子s及位置索引yt来按比例縮放亮度量化表38及色度量化 表39 (72)。代码转换模块36可例如将亮度量化表38及色度量化表39的量化条目定序 成所述条目的单一序列,且以比例因子s来按比例縮放最前面&个条目且以较大的比例 因子(例如,抖l)来按比例縮放剩余的条目。较大的比例因子导致较多的变换系数被 量化成零。以此方式,将色度量化表39按比例縮放的程度大于亮度量化表38,以更好 地保留图像的明亮度。此外,以不同的比例因子来按比例縮放量化表的所述条目的部分 降低了过调整目标位速率或欠调整目标位速率的可能性。
编码模块12使用经按比例缩放的量化表来重新编码图像块(74)。举例来说,量化 模块28使用经按比例縮放的量化表来量化所述块的变换系数,且熵编码模块30编码所 述块的量化系数以产生所述块的经编码位流。编码模块12确定用以重新编码图像的n 个块的位的数目i e (n)的总和(76)。换句话说,编码模块12保持用以重新编码所述 图像的块的位的数目的运行总数。举例来说,代码转换模块36可追踪对于特定块已代 码转换的位的数目且将其添加到其它块的总数。代码转换模块36计算在用以重新编码 所述块的位的数目& (M)的总和与应在第n个块处编码的位的理想数目A (")之间的 差(A) (78)。
代码转换模块36确定A是否大于或等于阈值(80)。阈值可为例如目标位速率的函 数(例如,目标位速率5%)。当代码转换模块36确定A大于或等于阈值时,代码转换模 块36确定是否存在可使用一个或一个以上微观尺度位速率控制技术从当前块移除的位 (82)。如上文所详细描述,代码转换模块36可确定当前块是否具有为二的幂的任何量 化变换系数或所述块的位序列是否具有表示标记的位序列。
当代码转换模块36确定存在可从当前块的位流移除的位时,代码转换模块36进一步降低位流的位数目(84)。如果经识别为可移除的位是为二的幂或接近于二的幂的量 化变换系数,则代码转换模块36可将所述系数中的一者或一者以上递减一值以使得系 数值降到对应的二的幂以下,且重新编码降低的系数。如上所述,将为二的幂的系数降 低为一的值会降低表示系数所需的位数目。具体来说,存在一个位的节省。如果经识别 为可移除的位为表示标记的块的位序列的一部分,则代码转换模块36可通过降低填补 字节的数目来降低位流的位数目。如上所述,代码转换模块36可插入填补字节,其在 对应于元数据的标记的位序列之后。在JPEG标准的状况下,例如,可在OxFF出现之后 将零字节0x00插入于熵编码位流中以将实际系数位流与标记予以区分。当位对应于余 项时,代码转换模块36可改变表示标记的序列的至少一个位。举例来说,代码转换模 块36可改变余项的最低有效位,此举防止对应于标记的序列写入到系数位流。在改变 此位后,位序列不再表示标记且填补字节为不必要的。
在降低位流的位数目之后,代码转换模块36将经调整的A (即,降低了所移除的位 的数目的A)与阈值进行比较(80)。如果A仍超过阈值,则代码转换模块36确定是否还 存在可从当前块移除的任何位(82)。如果存在可在维持适当质量的同时被移除的当前 块的额外位,则代码转换模块36进一步降低块的位数目。如果不存在可在维持适当质 量的同时从当前块移除的位或A不再超过阈值,则代码转换模块36传输经代码转换的块 (86)。然而,在一些状况下,代码转换模块36可不传输经代码转换的块,而是等待图 像的所有块得以编码且随后传输整个图像。
代码转换模块36确定是否存在待编码的额外块(88)。当存在待编码的额外块时, 代码转换模块36使用经调整的量化表及(如果需要)微观尺度位速率控制技术来继续 重新编码所述块。以此方式,代码转换模块36可实施两个阶层的位速率控制以对图像 进行代码转换在宏观尺度上的第一阶层的位速率控制,其中整体代码转换技术同等且 均一地影响整个图像;及在微观尺度上的第二阶层的位速率控制,其中代码转换操作的 作用局限于图像的特定区域。此两阶层式策略允许代码转换模块36首先粗略地接近目 标位速率且随后在必要时进行精细调整。
图5为说明编码模块(例如图2的编码模块12)实施微观尺度位速率控制以进一步 降低图像位速率的示范性操作的流程图。如上所述,熵编码模块30基于零的游程长度 及系数的二进制大小来指定用于AC系数的代码。代码转换模块36无法在不根本改变块 的情况下改变零的游程长度,但其可精细地改变系数的二进制大小。具体来说,代码转 换模块可识别为二的幂的块的系数(90)。
代码转换模块36确定所识别的系数是否等于一(92)。如果所识别的系数不等于一,
29则代码转换模块36将所识别的系数递减一 (94)。代码转换模块36编码新系数值(96)。 例如,对于为八的系数值,代码转换模块36以四个位来编码余项的长度。代码转换模 块36可以仅三个位来编码为七的经降低系数值的余项的长度,从而将位流降低一个位。 此外,表示游程大小的霍夫曼代码可能也较短,从而引起额外的位节省。
然而,如果所识别的系数等于一,则代码转换模块36选择为二的幂的块的系数的 中的不同系数。递减具有为一的值的系数将导致为零的新系数值。换句话说,完全消除 了变换的所述特殊分量,其引入了比预期更大的失真及/或假影。因此,代码转换模块 36可不降低具有为一的值的系数。
以此方式,代码转换模块36可通过选择性地降低一个或一个以上系数的值来降低 位流中的位的数目。如上所述,图像的经编码位流主要包含用于AC系数的霍夫曼代码 及余项串。通过选择性地降低一个或一个以上系数的值,代码转换模块36可减小经降 低的系数的霍夫曼代码的长度。此是因为,较小系数值通常比较大系数值更频繁且因此 通常被指定较短的霍夫曼代码。此外,代码转换模块30可通过选择性地降低系数值中 的一者或一者以上来节省余项中的位。尽管依据降低等于二的幂的系数来描述图5,但 所述技术可经扩展而应用于具有接近于二的幂的值的系数。举例来说,可将为九的系数 值降低二,从而引起为七的新系数值,所述新系数值可由降低数目个位及较短的霍夫曼 代码来表示。系数值应接近于二的幂的程度视被认为可接受的失真的量而定。
必要时,图5中所描述的微观尺度位速率控制技术可结合宏观尺度位速率控制技术 而使用以进一步降低图像的大小。或者,可独立于宏观尺度速率控制技术而利用微观尺 度速率控制技术来对己编码的图像进行代码转换或执行图像的初始编码。
图6为说明编码模块(例如图2的编码模块12)实施微观尺度位速率控制以进一步 降低图像位速率的示范性操作的流程图。代码转换模块36识别位流中的位置,在所述 位置处存在与标记相对应的位序列(100)。如上所述,图像压缩技术可使用特定的位序 列作为标记,以识别元数据的区域。在JPEG标准中,以字节OxFF开始的两字节的标记 用以识别元数据的区域,所述字节0xFF后接续指示随后的元数据的类型的字节。当系 数的编码引入了与标记0xFF相对应的位序列时,熵编码模块30将零字节0x00填塞到 位流中以消除系数位流有标记的歧义。因此,代码转换模块36可包括位缓冲器,其存 储包含被写入到位流的下一个字节的最左边位;且代码转换模块36针对与标记相对应 的位序列(例如,在JPEG标准的状况下为OxFF)而监控所述缓冲器。
代码转换模块36确定位序列是否包括表示余项的至少一个位(102)。当位序列包 括表示余项的至少一个位时,代码转换模块36可改变表示余项的八个位中的一个或一
30个以上位(104)。举例来说,代码转换模块36可改变表示余项的位的最低有效位。此 又防止了表示标记的位序列的出现且仅在最小的程度上改变余项值。代码转换模块36 随后编码所述位序列而不插入填补位(106)。在一些状况下,代码转换模块36通常可 插入填补字节。在所述状况下,保留了八个位。
当位序列不包括表示余项的至少一个位时,代码转换模块36不改变任何位(108), 且以所插入的填补位来编码所述序列(110)。改变霍夫曼代码的位将引起霍夫曼代码的 改变,其随后将引起解码装置处的误差。
图6中所描述的微观尺度位速率控制技术必要时可结合宏观尺度位速率控制技术而 使用以进一步降低图像的大小。或者,可独立于宏观尺度速率控制技术而利用微观尺度 速率控制技术来对已编码的图像进行代码转换或执行图像的初始编码。
本文中所描述的技术可以硬件、软件、固件或其任何组合实施。描述为模块或组件 的任何特征可一起实施于集成的逻辑装置中或单独实施为离散但可交互操作的逻辑装 置。如果以软件实施,则所述技术可至少部分地由包含指令的计算机可读媒体来实现, 所述指令在被执行时执行上述方法中的一者或一者以上。计算机可读媒体可形成计算机 程序产品的一部分,计算机程序产品可包括封装材料。计算机可读媒体可包含例如同步 动态随机存取存储器(SDRAM)的随机存取存储器(RAM)、只读存储器(ROM)、非 易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、快闪存 储器、磁性或光学数据存储媒体,等等。其它或另外,所述技术可至少部分地由计算机 可读通信媒体来实现,所述计算机可读通信媒体携载或传送呈指令或数据结构的形式的 代码且可由计算机存取、读取及/或执行。
代码可由一个或一个以上处理器执行,所述处理器例如一个或一个以上DSP、通用 微处理器、ASIC、现场可编程逻辑阵列FPGA,或其它等效集成或离散逻辑电路。因此, 如本文中所使用的术语"处理器"可指上述结构或适合于实施本文中所描述技术的任何 其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可提供于经配置以 用于编码及解码的专用软件模块或硬件模块内或并入于经组合的视频编码器-解码器(编 解码器)中。因此,本发明还涵盖多种集成电路装置中的任一者,所述集成电路装置包 括实施本发明中所描述的技术中的一者或一者以上的电路。此电路可提供于单一集成电 路芯片中或多个可交互操作的集成电路芯片中。
已描述各种实例。这些及其它实例在所附权利要求书的范围内。
权利要求
1.一种处理数字图像数据的方法,其包含依据计算出的比例因子来按比例缩放一个或一个以上量化表;使用所述一个或一个以上按比例缩放的量化表来编码所述数字图像数据的多个像素块;追踪在所述数字图像数据的所述多个像素块的第n个块处编码的位的数目与用以实现目标位速率而理想地应在所述第n个块处编码的位的数目之间的差;以及当所述差大于或等于阈值时,移除用以编码所述图像数据的所述多个块的一部分的一个或一个以上位。
2. 根据权利要求l所述的方法,其进一步包含基于在最初编码时所述图像数据的位速率、在最初编码时所述图像数据的零值量化变换系数的数目及所述目标位速率来识别用以实现所述目标位速率的零值量化变换系数的所要数目;以及基于零值量化变换系数的所述所要数目来计算在按比例縮放所述一个或一个以上量化表中使用的所述比例因子。
3. 根据权利要求1所述的方法,其中按比例縮放所述一个或一个以上量化表包含按比例縮放亮度量化表及色度量化表,其中所述色度量化表按比例縮放的程度大于所述亮度量化表。
4. 根据权利要求3所述的方法,其中按比例縮放所述亮度量化表及所述色度量化表包含以所述计算出的比例因子来按比例縮放所述亮度量化表的第一部分;以及以第二比例因子来按比例縮放所述亮度量化表的第二部分及所述色度量化表,其中依据所述计算出的比例因子来确定所述第二比例因子,其中所述计算出的比例因子及第二比例因子大于或等于一,且进一步其中所述计算出的比例因子小于所述第二比例因子。
5. 根据权利要求4所述的方法,其进一步包含-将所述亮度量化表及所述色度量化表的量化条目定序成单一序列,所述序列以所述亮度量化表的低频率量化条目开始,其后接续所述亮度量化表的高频率量化条目,随后为所述色度量化表的低频率量化条目,且随后为所述色度量化表的高频率量化条目;以所述计算出的比例因子来按比例縮放所述序列的最前面fc个量化条目;以及以所述第二比例因子来按比例縮放所述序列的剩余的个量化条目,其中iV为所述序列的量化条目的总数目。
6. 根据权利要求1所述的方法,其中移除所述一个或一个以上位包含-选择具有等于或接近于二的幂的值的一个或一个以上量化变换系数;以及递减所述一个或一个以上选定的量化变换系数,直到所述选定的量化变换系数小于相应的二的幂为止。
7. 根据权利要求6所述的方法,其中选择等于或接近于二的幂的一个或一个以上量化变换系数包含选择当被递减到所述相应的二的幂以下的值时将不等于零的一个或一个以上量化变换系数。
8. 根据权利要求1所述的方法,其中移除所述一个或一个以上位包含-识别包括多个位的至少一个位序列,所述多个位是以充当需要填塞一个或一个以上位的标记的方式排列的;以及改变所述位序列的对应于余项的所述多个位中的至少一者,以使得所述位序列不再充当所述标记。
9. 根据权利要求1所述的方法,其进一步包含当所述差降到所述阈值以下时使用所述一个或一个以上按比例缩放的量化表来编码所述图像数据的所述块而不移除一个或一个以上额外位。
10. —种用于处理数字图像数据的设备,其包含-存储器,其存储在编码所述数字图像数据的多个像素块中使用的一个或一个以上量化表;以及编码模块,其依据计算出的比例因子来按比例縮放所述一个或一个以上量化表,使用所述一个或一个以上按比例縮放的量化表来编码所述数字图像数据的多个像素块,追踪在所述数字图像数据的所述多个像素块的第n个块处编码的位的数目与用以实现目标位速率而理想地应在所述第n个块处编码的位的数目之间的差,且当所述差大于或等于阈值时移除用以编码所述图像数据的所述多个块的一部分的一个或一个以上位。
11. 根据权利要求IO所述的设备,其中所述编码模块将亮度量化表及色度量化表的量化条目定序成单一序列,所述序列以所述亮度量化表的低频率量化条目开始,其后接续所述亮度量化表的高频率量化条目,随后为所述色度量化表的低频率量化条目,且随后为所述色度量化表的高频率量化条目;以所述计算出的比例因子来按比例縮放所述序列的最前面&个量化条目;且以依据所述计算出的比例因子确定的第二比例因子来按比例縮放所述序列的剩余的iV-)t个量化条目,其中AT为所述序列的量化条目的总数目,且进一步其中所述计算出的比例因子及第二比例因子大于或等于一,且所述计算出的比例因子小于所述第二比例因子。
12. 根据权利要求IO所述的设备,其中所述编码模块选择具有等于或接近于二的幂的值的一个或一个以上量化变换系数,且递减所述一个或一个以上选定的量化变换系数,直到所述选定的量化变换系数小于相应的二的幂为止。
13. 根据权利要求IO所述的设备,其中所述编码模块识别包括以充当需要填塞一个或一个以上位的标记的方式排列的多个位的至少一个位序列,,且改变所述位序列的所述多个位中的至少一者以使得所述位序列不再充当所述标记。
14. 根据权利要求IO所述的设备,其中所述编码模块在所述差降到所述阈值以下时使用所述按比例縮放的量化表来重新开始所述图像数据的所述块的编码而不移除一个或一个以上额外位。
15. 根据权利要求IO所述的设备,其中所述设备并入于无线通信装置手持机内,所述无线通信装置手持机进一步包含用于发射所述经编码的像素块的发射器。
16. —种用于处理数字图像数据的设备,其包含-用于依据计算出的比例因子来按比例縮放一个或一个以上量化表的装置; 用于使用所述一个或一个以上按比例縮放的量化表来编码所述数字图像数据的 多个像素块的装置;用于追踪在所述数字图像数据的所述多个像素块的第n个块处编码的位的数目 与用以实现目标位速率而理想地应在所述第n个块处编码的位的数目之间的差的 装置;以及用于当所述差大于或等于阈值时移除用以编码所述图像数据的所述多个块的一 部分的一个或一个以上位的装置。
17. —种用于处理数字图像数据的计算机程序产品,其包含计算机可读媒体,所述计算 机可读媒体上具有指令,所述指令包含-用于依据计算出的比例因子来按比例縮放一个或一个以上量化表的代码; 用于使用所述一个或一个以上按比例縮放的量化表来编码所述数字图像数据的 多个像素块的代码;用于追踪在所述数字图像数据的所述多个像素块的第n个块处编码的位的数目 与用以实现目标位速率而理想地应在所述第n个块处编码的位的数目之间的差的 代码;以及用于当所述差大于或等于阔值时移除用以编码所述图像数据的所述多个块的一 部分的一个或一个以上位的代码。
18. 根据权利要求17所述的计算机程序产品,其中所述指令进一步包含-用于基于在最初编码时所述图像数据的位速率、在最初编码时所述图像数据的零 值量化变换系数的数目及所述目标位速率来识别用以实现所述目标位速率的零值 量化变换系数的所要数目的代码;以及用于基于零值量化变换系数的所述所要数目来计算按比例縮放所述一个或一个 以上量化表中使用的所述比例因子的代码。
19. 根据权利要求17所述的计算机程序产品,其中用于按比例縮放所述一个或一个以 上量化表的代码包含用于按比例縮放亮度量化表及色度量化表的代码,其中所述色 度量化表按比例缩放的程度大于所述亮度量化表。
20. 根据权利要求19所述的计算机程序产品,其中用于按比例縮放所述亮度量化表及 所述色度量化表的代码包含用于以所述计算出的比例因子来按比例縮放所述亮度量化表的第一部分的代码; 以及用于以第二比例因子来按比例縮放所述亮度量化表的第二部分及所述色度量化 表的代码,其中所述第二比例因子是依据所述计算出的比例因子来确定的,其中所述计算出的比例因子及第二比例因子大于或等于一,且进一步其中所述计 算出的比例因子小于所述第二比例因子。
21. 根据权利要求20所述的计算机程序产品,其中用于按比例縮放所述亮度量化表及 所述色度量化表的代码包含-用于将所述亮度量化表及所述色度量化表的量化条目定序成单一序列的代码,所 述序列以所述亮度量化表的低频率量化条目开始,其后接续所述亮度量化表的髙频 率量化条目,随后为所述色度量化表的低频率量化条目,且随后为所述色度量化表 的高频率量化条目;用于以所述计算出的比例因子来按比例縮放所述序列的最前面个量化条目的 代码;以及用于以所述第二比例因子来按比例縮放所述序列的剩余的丛it个量化条目的代 码,其中AT为所述序列的量化条目的总数目。
22. 根据权利要求17所述的计算机程序产品,其中用于移除所述一个或一个以上位的 代码包含用于选择具有等于或接近于二的幂的值的一个或一个以上量化变换系数的代码; 以及用于递减所述一个或一个以上选定的量化变换系数直到所述选定的量化变换系 数小于相应的二的幂为止的代码。
23. 根据权利要求22所述的计算机程序产品,其中用于选择等于或接近于二的幂的一 个或一个以上量化变换系数的代码包含用于选择当被递减到所述相应的二的幂以 下的值时将不等于零的一个或一个以上量化变换系数的代码。
24. 根据权利要求17所述的计算机程序产品,其中用于移除所述一个或一个以上位的 代码包含-用于识别包括多个位的至少一个位序列的代码,所述多个位是以充当需要填塞一 个或一个以上位的标记的方式排列的;以及用于改变所述位序列的所述多个位中的至少一者以使得所述位序列不再充当所 述标记的代码。
25. 根据权利要求17所述的计算机程序产品,其进一步包含用于当所述差降到所述阈 值以下时使用所述一个或一个以上按比例縮放的量化表来重新开始所述图像数据 的所述块的所述编码而不移除一个或一个以上额外位的代码。
全文摘要
本发明描述用于将数据编码以将图像数据压缩到降低的大小的技术。所述技术在将图像代码转换到降低的大小以用于传输方面可尤其有效。编码装置可使用均一地影响整个图像以对所述图像进行代码转换的位速率控制技术将所述图像代码转换到可接受的文件大小。举例来说,所述编码装置可依据位速率(R)与零值量化变换系数的数目之间的近线性关系来修改一个或一个以上量化表以在整个图像上均一地降低文件大小。或者,或另外,所述编码装置可使用仅影响所述图像的特定局部区域的位速率控制技术来对所述图像进行代码转换。
文档编号H04N7/50GK101682764SQ200880017649
公开日2010年3月24日 申请日期2008年5月28日 优先权日2007年5月31日
发明者刘石忠, 里基·阮 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1