提供图像的多个本地表示的制作方法

文档序号:6455407阅读:126来源:国知局
专利名称:提供图像的多个本地表示的制作方法
提供图像的多个本地表示 背景
图像可以用各种格式和分辨率来提供。某些图像处理应用程序允许将 图像处理或转换成不同的格式等。该处理通常可以经由在该图像上执行的 一个或多个变换来执行。在某些情况下,这种图像处理可以生成所需图像, 但可能阻止不损失分辨率的进一步处理,因为原始图像通常可能在处理过 程中被丢弃了。同样,这种图像处理技术通常相当有限。
概述
公开了涉及提供图像的多个本地表示的各种实施例。例如,根据一示 例实施例,可以生成并提供图像的多个实现,而非只有单个实现。同样, 多个实现的生成和输出可以使用本地对象来本地地执行变换或图像处理来 提供这些图像或实现。
根据一示例实施例,提供了一种方法。该方法可以包括接收图像,接 收关于所接收到的图像的图像处理命令,以及基于该图像处理命令在该图 像上本地地执行多个变换以提供该图像的一个或多个实现。
根据另一示例实施例,提供了一种方法。该方法可以包括接收图像, 接收关于该图像的图像处理命令,以及基于该图像处理命令在图像上执行 多个变换以提供该图像的多个实现。多个实现的每一个都可以包括在该图 像上本地地执行的至少一个变换。
根据又一示例实施例,提供了一种方法。该方法可以包括接收图像, 接收图像处理命令,以及基于该图像处理命令确定一个或多个变换和对于 这些变换的安排,以根据该图像处理命令处理该图像并提供该图像的多个 实现。
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的 一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征, 也不旨在用于帮助确定所要求保护的主题的范围。
附图简述


图1是根据一示例实施例的计算系统的框图。图2是根据另一示例实施例的系统的框图。
图3A是根据一示例实施例的在其中处理图像以提供多个实现的系统
300A的图。
图3B是根据另一示例实施例的在其中处理图像以提供多个实现的系 统300B的框图。
图4是示出根据一示例实施例的用于在图像上执行多个变换以产生一 个或多个实现的过程的流程图。
图5是示出根据另一示例实施例的用于执行多个变换以产生一个或多 个实现的过程的流程图。
图6是示出根据又一示例实施例的用于在图像上执行一个或多个变换 以产生一个或多个实现的流程图。
详细描述
参考其中相同的标号表示相同的元素的各个附图,图1是根据一示例 实施例的计算设备100的框图。根据一示例实施例,可以在计算系统100 或其它计算系统中实践或实现各个实施例。计算系统100可以包括,例如, 膝上型计算机、台式计算机、个人计算机(PC)、服务器、网络设备(例 如,交换机、路由器)、蜂窝电话、个人数字助理(PDA)、游戏设备、 手持式通信设备、或其它计算设备。这仅仅是一些示例,故各实施例并不 限于此。
系统IOO可以包括中央处理单元("CPU" ) 102、包括随机存取存储 器106 ( "RAM")和只读存储器108 ( "ROM")的系统存储器104。 CPU 102可以解释指令并处理计算机应用程序中的数据。例如,CPU 102 可以是微处理器且包括多个集成电路,并且可以执行软件或指令并向计算 系统100提供总体控制。RAM 106可以允许以任何顺序访问存储在该RAM 上的数据,系统IOO还可以例如向RAM 106写入或从其中读取。例如,数 据文件可在时刻X被存储在RAM 106上,并且在时刻Y该数据文件可从 RAM 106中读取。ROM 108可以包含可由系统100从ROM 108中读取的 数据或系统(与一般可由系统100向其写入或从中读取的RAM 106形成对 比)。例如,ROM 108可以包括在系统100首次上电时系统100所运行的基本输入/输出系统(BIOS)软件代码。ROM 108还可以例如被耦合到时钟 110。时钟110例如可以通过ROM 108向系统100提供时间。
系统100还可以包括输入/输出控制器128和显示设备130。输入/输出 (I/O)控制器128可以接口到一个或多个I/O设备,如显示设备130。输 入/输出控制器128可以例如向显示设备130提供输出。显示设备130可以 是被配置为从输入/输出控制器128接收数据并向用户提供或显示该数据的 设备。虽然并未示出,但输入/输出控制器128还可以被耦合到各种输入设 备,如键盘、鼠标、操纵杆或被配置为向系统100提供输入的任何其它输 入设备。
系统100还可以包括存储数据、指令或其它信息的数据存储设备114。 数据存储设备114可以是,例如在磁面上存储数据的硬盘驱动器、CD-ROM、
或可由系统ioo访问的任何其它可用媒体存储设备。
作为示例而非限制,数据存储设备114可以包括任何计算机可读介质。 计算机可读介质可以例如包括计算机存储介质和通信介质。计算机存储介 质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它 数据等信息的任何方法或技术实现的介质。计算机存储介质包括但不限于, RAM、 ROM、 EPROM、 EEPROM、闪存或其它固态存储器技术、CD-ROM、 DVD或其它光学存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或 能用于存储所需信息且可以由计算机访问的任何其它介质。
一个或多个软件程序或块可被存储在数据存储设备114中,如应用程 序116、图像处理器118、操作系统120和栈122。应用程序116可以是web 浏览器、文字处理程序、多媒体应用程序或其它应用程序。例如,应用程 序116可以是例如被配置为发送图像和图像处理(或加工)命令并接收包 括一个或多个实现的经处理的图像的图像处理应用程序。例如,应用程序 116可以基于用户输入发送和接收图像、处理命令、经处理的图像、和/或 实现。例如,应用程序116可以从数码相机接收图像。随后,例如,应用 程序116可以将该图像发送到图像处理器118以执行变换,如翻转/旋转变 换,其后图像处理器118可以将包括实现216的经处理的图像214返回给 应用程序116。图像处理器118可以是执行图像处理的程序。例如,图像处理器118
可以是被配置为接收图像和图像处理命令并基于该命令在所接收到的图像 上执行一个或多个变换以生成该图像的一个或多个实现的应用程序。例如,
图像处理器118可以接收图像和旋转该图像的命令。图像处理器118随后 可以执行旋转并输出包括经旋转的图像实现的经处理的图像。
操作系统120可以是管理系统100的硬件和软件的软件程序,且可以 是任何类型的操作系统。例如,操作系统可以是Microsoft Windows、 Linux 等。栈122可以是用来存储来自数据存储设备114的数据的临时数据结构。 例如,该栈可以存储从应用程序116到图像处理器118的图像和对应的处 理命令,图像处理器118随后可以访问存储在栈122上的各项。
根据一示例实施例,系统100可以使用逻辑连接通过诸如作为示例的 TCP/IP网络124等网络与远程计算机进行通信而在网络化环境中操作。例 如,TCP/IP网络124可以是因特网、公司内联网、局域网、无线网络、广 域网、和/或任何其它网络。系统100可以通过网络接口单元126与TCP/IP 网络124进行通信。网络接口单元126可以是被配置为允许系统100与 TCP/IP网络124进行通信的设备和/或软件程序。例如,网络接口单元126 可以是网卡、网络接口控制器(NIC)、调制解调器、或任何其它通信启用 设备。
系统总线112可被耦合到CPU 102、系统存储器104、数据存储设备 114、网络接口单元126、和输入/输出控制器128。系统总线112可以允许 在两个或更多系统组件之间传输数据。例如,系统总线112可以允许向以 及从系统存储器104和CPU 102中传输数据。系统总线112还可以例如将 系统100的其它部分耦合在一起,如将数据存储设备114耦合到输入输出 控制器128。
图2是根据另一示例实施例的系统200的框图。如上所述,系统200 可以包括应用程序116和图像处理器118。例如,应用程序116可被配置为 向图像处理器118经由线204提供图像202以及经由线208提供图像加工 (或图像处理)命令206。图像202和处理命令206可由例如应用程序116 通过将命令和一个或多个参数传递给图像处理器118来提供。图像处理器118可以是被配置为接收图像202和处理命令206的软件 程序和/或设备。图像处理器118可以通过例如实例化解码器对象220和诸 如变换对象222、 224、 226、 228等一个或多个变换对象来对图像202执行 处理命令206,并提供包括该图像的一个或多个实现(216、 218)的一个或 多个经处理的图像214。以此方式,作为示例,图像处理器118可以基于处 理命令206来处理图像202以提供该图像的一个或多个实现,如实现216、 218。
图像202可以在特定文件类型203的文件中。文件类型203可以是文 件格式或压縮图像数据的方法且可以是任何可接受的文件类型,如光栅图 形文件类型、数字文件类型、或其它文件类型。例如,文件类型203可以 是JPEG、图形交换格式(GIF)、可移植网络图形(PNG)、原始(或未 编码的)或任何其它文件类型。图像202可以在包括任何可接受的文件类 型203的文件中。图像202还可以包括一个或多个图像。每一图像还可以 包括图像(或像素)格式205。例如,图像格式205可以是RGB、 CMYK、 YCbCr或任何其它色彩空间或像素格式。
处理命令206可以是单个处理命令206或多个处理命令。处理命令206 可以包括,例如,变换值210、实现值212或两者。处理命令206可以与图 像202相关联。变换值210可以例如指示要在图像上执行哪一 (些)变换, 且还可以指示指定的变换应用顺序。变换可以是可在图像202上执行的任 何可能的修改或处理,包括但不限于,例如,縮放器变换、格式转换器变 换、和/或翻转/旋转器变换。也可以使用附加的和/或不同的变换。
实现值212可以标识实现的数目,和/或可以标识将由图像处理器118 输出的实现和/或经处理的图像。实现216、 218每一个都可以是在对图像 202应用一个或多个变换之前或之后的该图像202的一个版本。实现值212 还可以例如指示对哪一实现216、 218执行哪些变换,以及还可以标识执行 变换的顺序。经处理的图像214可以是在对图像202应用一个或多个变换 之前或之后从图像处理器118输出的一个或多个图像。每一经处理的图像 214都可以包括一个或多个实现216、 218,或可以被称为一个实现。
例如,应用程序116可以将具有YCbCr的格式205的图像202发送到图像处理器118。应用程序116还可以将处理命令206发送到图像处理器 118。处理命令206可以包括例如,变换值210和实现值212,虽然这仅仅 是一示例,且各实施例并不限于此。变换值210可以标识要在该图像上执 行的縮放器变换、格式转换器变换和翻转/旋转器变换。作为示例,实现值 212可以例如指示实现216应当通过縮放(例如,縮放30%)所接收到的 图像202来生成,而实现218应当通过格式转换(例如,YCbCr至URGB) 并随后旋转所接收到的图像202 (例如,旋转90° )来生成。这些仅仅是 一些示例,故各实施例并不限于此。图像处理器118随后例如可以通过实 例化縮放器对象222、格式转换器对象224和/或翻转/旋转器对象226来执 行指定的变换以处理图像和输出包括两个实现216、 218的经处理的图像 214。
图像处理器118可以包括解码器对象220和多个变换对象,诸如例如, 縮放器对象222、格式转换器对象224和/或翻转/旋转器对象226。
例如,解码器对象220可以从图像202的当前文件类型203中解码和/ 或解压该图像,以便图像处理器118或一个或多个变换对象可以在图像202 上执行变换。
缩放器对象222可被配置为在图像202上执行縮放器变换。縮放器对 象222 (或縮放器变换)可以縮放图像,这可以包括或整体或部分地增大或 减小图像202的大小。縮放器对象222所执行的縮放可以在不改变图像的 分辨率的情况下执行,或者该缩放可以包括改变或更改图像的分辨率。例 如,变换值210可以指示执行将图像202的大小增加50%的縮放器变换。 响应于这一图像处理命令,图像处理器118和/或縮放器对象222通常可以 将图像縮放50%来生成縮放了 50%的实现。
格式转换器对象224可以改变所接收到的图像202的格式205,或将 图像202的格式205转换为不同的格式。例如,图像202可以用RGB的格 式提供给图像处理器118,且变换值210可以标识将该图像转换为CMYK 的一个格式转换器变换。例如,响应于这一处理命令,图像处理器118和/ 或图像处理器118的格式转换器对象224可以将所接收到的图像202的格 式205从RGB转换为CMYK。翻转/旋转器对象226可以翻转或旋转图像202。翻转/旋转器对象226 (或变换)可以将图像202上下翻转或左右翻转或其可以将图像202旋转 一定的度数。例如,变换值210可以标识上下翻转图像202或将图像逆时 针旋转30°的翻转/旋转器变换。响应于这一图像处理命令,图像处理器118 和/或翻转/旋转器对象226随后可以如所请求地翻转或旋转图像202。
如上所述,解码器对象220可以解码所接收到的图像。除被配置为解 码图像202之外,解码器对象220还可以包括本地变换对象228。作为示例, 本地变换对象228可以包括可以本地地执行的任何变换对象(或图像处理 对象),如本地縮放器对象、本地格式转换器对象、和/或本地翻转/旋转器 对象。如果本地变换对象228包括变换能力,则本地变换对象228可以在 解码器对象220中本地地执行任何变换或变换组合。在一示例实施例中, 解码器对象220的本地变换对象228可以与解码器对象220解码所接收到 的图像202同时或几乎同时地对该图像执行一个或多个本地变换。通过在 解码器对象220或本地变换对象228中本地地执行变换,这可以例如通常 包括在图像上执行所请求的变换而不对所接收到的图像进行重新采样。例 如,在某些情况下,这可以提供与在图像上可能发生重新采样或降采样的 非本地变换相比改进的图像质量。
例如,本地变换对象228可以允许对图像本地地应用一个或多个变换, 而无需对该图像进行重新采样或降采样。因此,例如,在某些情况下,本 地变换可以有利地提供经改进的图像质量或避免图像质量损失。本地变换 对象228可以包括任何数量的变换对象。例如,本地变换对象228可以包 括本地縮放器对象、本地格式转换器对象和/或本地翻转/旋转器对象,以便 所有所请求的变换都可以在图像202上本地地来执行。
在某些情况下,在从应用程序116接收到处理命令206之后,解码器 对象220可以实例化一个或多个变换对象以在图像202上执行所请求的处 理。如果本地变换对象228可用于执行所请求的变换或处理,则可以使用 该本地对象来本地地处理图像。否则,如果所请求的变换不可作为本地变 换来使用,则所实例化的变换对象,例如,对象222、 224或226可以在图 像上执行(例如,非本地的)处理,在某些情况下其可以包括对图像进行重新采样。因此,例如,所请求的变换的某些(或甚至所有)可在图像上 本地地执行,而其它(或甚至所有)变换则可以随后由其它变换对象非本 地地执行。
在一示例实施例中,所接收到的处理命令206可以请求在图像202上 执行两个变换,如縮放25%和将图像格式从YCbCr转换为RGB。在该示 例中,解码器对象220可由图像处理器118来实例化。同样,基于处理命 令206,可以实例化縮放器对象和格式转换器对象对象并将其与解码器对象 220进行关联。在该示例中,縮放可由本地变换对象228本地地执行,而所 请求的从YCbCr到RGB的格式转换本地不可用。这仅是一个示例。因此, 在接收到图像后,解码器对象220可以解码图像且本地变换对象228可以 如所请求地将图像本地地縮放25%。下一步,可以将经解码和縮放的图像 传递到格式转换器对象224,在此,例如,图像可被转换为RGB格式,并 作为图像的(经解码、縮放和格式转换的)实现来输出。
在另一示例实施例中,图像处理器118可以输出图像的多个实现。每 一实现都可以是该图像的不同版本,例如,其中对于每一实现在图像上执 行不同的变换。例如,图像处理器118可以输出可以是原始图像202的第 一图像实现,可以是解码之后的图像202的第二实现、和在被解码、縮放 25X并被转换为RGB之后的第三图像。在一示例实施例中,该示例中的一 个或多个(或甚至所有)变换可被本地地执行。这仅是一个示例。例如, 处理命令206可以例如经由实现值212标识要提供或生成的一个或多个实 现。
图3A是根据一示例实施例的在其中处理图像以提供多个实现的系统 300A的图。系统300A可以包括由解码器对象220所接收的图像202和处 理命令206。如上所述,图像202可以位于文件中且可以包括任何图像格式 205的任何图像或若干图像。如上所述,处理命令206可以包括例如变换值 和/或实现值,或标识要提供或生成的一个或多个图像实现的其它信息。例 如,处理命令206可以指示例如输出图像202的多少实现,为每一实现执 行哪一 (些)变换以及以何种顺序执行变换来生成这些实现。
解码器对象220可以包括图像存储器302。解码器对象220可被耦合到或关联于縮放器对象222、格式转换器对象224和/或翻转/旋转器对象226。如上所述,解码器对象220可以如上所述地解码或解压所接收到的图像202。同样,縮放器对象222可以縮放图像。格式转换器对象225可以将图像的格式205转换为不同的格式,而翻转/旋转器对象则可以翻转或旋转图像。可以提供其它变换对象。
根据一示例实施例,图像处理器118可以输出一个或多个图像实现,诸如例如,实现304A、 304B、 304C和304D。每一实现都可以包括在其上执行零个或多个变换之后的图像202。在零个变换之后输出的情况下,可以输出原始的接收到的图像202。解码器对象220的图像存储器302可以存储所接收到的图像202,所以原始图像202即使在其上执行变换后也可以是可用的。图像存储器302可以例如存储在图像上执行了一个或多个变换之后的一个或多个中间阶段实现。这些中间阶段实现可以作为实现来输出,禾口/或可由其它变换进一步处理以作为其它实现来输出。例如,在一示例实施例中,图像存储器302可以是解码器对象220的一部分,或可在系统存储器104中(例如,图1的RAM 106中)提供。
例如,原始图像202可以是狗或其它物体的图像,且处理命令可以包括将图像大小縮放到原始大小的150%的第一实现和将图像上下翻转的第二实现。随后,图像存储器302可以存储原始的狗的图像202以便在该图像被縮放150%以得到第一实现之后,第二实现仍然可以使用存储在图形存储器接口 302中的原始图像202以将原始图像202上下翻转。存储在图像存储器302中的原始图像可被用来输出原始图像的实现。在一示例实施例中,图形存储器302还可以存储标识被处理的图像202的状态和/或在该图像上执行了一个或多个变换之后的中间状态实现的状态信息。例如,在提供第二实现304B时,图像存储器302可以存储在縮放器对象222执行縮放器变换之后的图像或图像状态信息。随后,例如,格式转换器对象224可以从图像存储器302检索图像状态信息来在经縮放的图像上执行格式转换器变换。
现将简要描述图3A中的系统300A所执行的图像处理。在一示例实施例中,通常可以首先提供解码器对象220。在解码器对象220之后,可以基于处理命令206,如基于处理命令206的实现值212来串行地、并行地或两者的组合来组织诸如系统300A的縮放器对象222、格式转换器对象224和翻转/旋转器对象226等一个或多个对象。例如,如图3A的示例中所示,解码器对象220可以接收RGB格式的狗的图像202。例如,解码器对象220还可以接收与图像202相关联的处理命令206,其中处理命令206包括产生该图像的四个实现的命令。所请求的第一实现304A可以包括已由解码器对象解码并由縮放器对象縮放(例如,縮放50%)的图像202。所请求的第二实现304B可以包括已由解码器对象解码、由縮放器对象縮放(例如,縮放50%)并随后由格式转换器对象转换了格式(例如,从RGB至U CMYK)的图像。所请求的第三实现304C可以包括已由解码器对象解码并随后由翻转/旋转器对象旋转(例如,90° )的图像。而第四实现304D可以包括例如以任何顺序由解码器对象解码,由翻转/旋转器对象旋转(例如,30° )并由格式转换器对象转换了格式(例如,从RGB到CMYK)的图像202。
例如,在接收到图像202后,解码器对象220可以在图像存储器302中存储原始图像202的副本,以供进一步处理和/或作为未经处理的实现的可能输出。在图3A所示的示例实施例中,系统300A的解码器对象220不包含例如,用于如处理命令所请求的縮放器对象、格式转换器对象或翻转/旋转器对象等的本地变换对象228。因此,在该示例中,所请求的变换可由非本地变换对象来执行。
在接收到图像202后,可以实例化解码器对象220来执行对所接收到的图像的解码。同样,可以基于处理命令206来实例化一个或多个附加对象并将它们耦合到解码器对象220或与之进行关联。这可以包括确定一个或多个对象并确定这些对象根据处理命令处理图像以生成所请求的图像实现的安排,例如串行和/或并行安排和/或顺序。例如,作为示例,如图3A所示,这可以包括确定应当串行地提供縮放器对象222和格式转换器对象224以生成第二实现304B,而(与用来生成第二实现的各个对象)并行地放置翻转/旋转器对象226以生成第三实现304C。在解码器对象220本地地解码图像202之后,则可以生成四个示例实现。
如上所述,对于图3A中的第二实现304B,经解码的图像可由縮放器对象222来縮放并由格式转换器对象224来转换格式以生成第二实现304B。 对象222和224可以是例如非本地变换。例如,非本地变换可以涉及例如 对经解码的图像进行重新采样或甚至降采样。在另一示例实施例中,縮放
器对象222和格式转换器对象224两者都是本地地可用的,并且因此可在 解码器对象220中被本地地执行。注意,可以存储在经解码的图像由縮放 器对象222縮放之后的中间阶段实现。该来自縮放器对象222的中间阶段 实现输出随后可以作为第一实现304A来输出。
例如,为产生第三实现304C,可由翻转/旋转器对象226旋转该存储在 图像存储器302中的经解码的图像以生成第三实现304C。最后,为产生第 四实现304D,存储在图形存储器302中的经解码的图像可首先由格式转换 器对象224来转换格式(例如,相对于第二实现304B中的稍后)并随后由 翻转/旋转器对象226旋转以生成第四实现308D。在另一示例实施例中,可 以本地地提供用来生成第四实现304D的所有对象,包括格式转换器对象 224、翻转/旋转器对象226,从而意味着在一示例实施例中可由解码器对象 220执行本地处理以生成图像的第四实现304D。
如上所述,在至少某些情况下,在系统300A中,縮放器对象222、格 式转换器对象对象224和翻转/旋转器对象226可以例如在图像上非本地地 执行其相应的变换(即,其可能重新采样、降采样和/或损失图像质量)。 同样,如上所述,应用于系统300A的各变换、各变换的顺序和实现的数量 仅是出于说明性的目的。在替换实施例中,应用于系统300A的各变换、各 变换的顺序和实现的数量可以变化。同样,每一实现都不必分开处理,因 为以上讨论仅是说明性的,所以可以同时处理多个实现。在替换实施例中, 还可以接收多个图像202和多个处理命令206。
图3B是根据另一示例实施例的在其中处理图像以提供多个实现的系 统300B的框图。系统300B可以包括由解码器对象220所接收的图像202 和处理命令206。系统300B (图3B)非常类似于系统300A (图3A),故 将描述两图之间的不同。如上所述,图像202可以是具有可接受的文件类 型203的文件和/或可以是任何可兼容的图像格式205的任何图像或若干图 像。如上所述的处理命令206可以包括变换值210和实现值212。处理命令206可以指示例如输出图像202的多少实现,为每一实现执行哪些变换以及
以何种顺序执行这些变换。
解码器对象220可以包括例如图像存储器302、本地翻转/旋转器对象 306和本地格式转换器对象308。然而,在系统300B中,本地翻转/旋转器 对象306和本地格式转换器对象308可以在图像202上分别执行翻转/旋转 器变换和格式转换器变换,而非由翻转/旋转器对象226和格式转换器对象 224执行其各自的变换。因此,在该示例中,本地翻转/旋转器对象306和 本地格式转换器对象308是可用的,并可分别取代非本地对象226和224 而被用来处理图像。在系统300B中,如果本地对象可用于在图像202上执 行变换,则可以优选地使用本地对象而非非本地对象。随后,例如,经处 理的图像可以穿过(或绕过)例如本地对象对于其可用的非本地对象。因 此,可以基于本地对象、非本地对象或本地和非本地对象的组合来生成四 个实现304E、 304F、 304G和304H,以根据处理命令生成多个实现。
如在系统300A中一样,可以基于处理命令206来串行地、并行地或以 其两者的组合组织系统300B的縮放器对象222、格式转换器对象224和翻 转/旋转器对象226和/或其它对象。例如,处理命令206可以包括产生四个 实现(304E-H)的命令。对于实现304E-H的请求或处理命令可以例如与 对于实现304A-D (图3A)的处理命令相同,但系统300B可以有利地使用 一个或多个本地对象来执行图像处理并生成多个所请求的实现。第一实现 304E可以使用本地解码器220、非本地縮放器对象222来生成,因为没有 本地缩放器对象(虽然在替换实施例中其可能是可用的)可用。然而,第 二实现304F可以使用本地解码器220、非本地縮放器对象222 (例如,因 为没有本地缩放器对象可用)和本地格式转换器对象308来生成。因为本 地格式转换器对象308可用于执行所请求的格式转换,所以可以使用本地 格式转换器对象308而非经实例化的非本地格式转换器对象224来生成第 二图像实现304F。然而,在一示例实施例中,通常可以在非本地变换之前 执行任何本地变换。例如,为产生实现304F,可以在非本地縮放器对象222 之前执行本地格式转换器对象308。
同样,第三实现304G可以使用本地解码器对象220和本地翻转/旋转器对象306来生成。在该示例中,可以使用本地翻转/旋转器对象306而非 非本地翻转/旋转器对象226。第四图像实现404H也可以使用包括本地解码 器对象220、本地格式转换器对象308和本地翻转/旋转器对象306在内的 所有本地对象来生成。在本地对象308和306存在或可用时,可以分别取 代对应的非本地对象224和226来使用。例如,在图像由解码器对象220 处理(包括正由本地对象306和308处理)之后,经处理的图像可以穿过 非本地对象224和226而不处理(因为格式转换和旋转已由本地格式转换 器308和本地翻转/旋转器对象306执行)。如上所述,在本地对象可用时 使用本地对象可以本地地提供所请求的处理,例如,在某些情况下不必重 新釆样图像和/或损失质量。
以此方式,根据一示例实施例,可以生成并提供图像的多个实现,而 非只有一个实现。同样,多个实现的生成和输出可以使用本地对象来执行
变换或图像处理来改进输出图像或实现的质量。
在替换实施例中,应用于系统300B的各变换、各变换的顺序和实现的 数量可以变化。同样,每一实现都不必分开处理,因为以上讨论仅是说明 性的,所以可以同时处理多个实现。在替换实施例中,还可以使用多个图 像202和多个处理命令206。
图4-6包括关于以上描述的图1、图2和图3的各个示例的和/或关于 其它示例和上下文的操作流程或流程图的各种示例。然而,应当理解,该 操作流程可在多个其它环境和上下文中和/或在图1、图2和图3的经修改 的版本中执行。同样,虽然以所示顺序呈现了各操作流程,但应当理解, 各操作能以与所示出的顺序所不同的顺序来执行,或可以同时执行。
图4是示出根据一示例实施例的用于在图像上执行多个变换以产生一 个或多个实现的过程的流程图。在开始操作之后,操作流程400移至其中 可以接收图像的接收操作410。例如,图像处理器118可以从应用程序116 接收图像202。尽管并非所需,但在另一示例实施例中,应用程序116和图 像处理器118可以是同一总体系统200、应用程序或设备的部分。
随后在接收操作420,可以接收关于该图像的图像处理命令(或加工 命令)。例如,如图2所示,图像处理器118可以从应用程序116接收处理命令206。处理命令206可以与图像202相关联且指示如何处理图像202。 处理命令206例如可以包括变换值210和/或实现值212,虽然这仅是一示 例实施例。
随后在执行操作430,可以基于图像处理命令或加工命令而在图像上 本地地执行多个变换以提供该图像的一个或多个实现。例如,如图2所示, 基于处理命令206,图像处理器118可以在图像202上执行变换以提供经处 理的图像214的实现216、 218。或者,如图3B所示,图像202和处理命 令206可由解码器220来接收,并且例如在用本地翻转/旋转器对象306和 本地格式转换器对象308本地地执行多个变换之后,可以提供包括实现 304G和304H在内的一个或多个实现。
图5是示出根据一示例实施例的用于执行多个变换的过程的流程图。 在开始操作之后,操作流程500移至其中可以接收图像的接收操作510。例 如,图像处理器118可以从应用程序116接收图像202。
随后在接收操作520,可以接收关于该图像的图像处理命令(或加工 命令)。例如,如图2所示,图像处理器118可以从应用程序116接收处 理命令206。处理命令206可以与图像202相关联并且指示如何处理图像 202,且可以标识要提供或生成的该图像的一个或多个实现。
随后,在执行操作530,可以基于图像处理命令而在图像上执行多个 变换以提供多个实现。多个实现的每一个都可以包括在该图像上本地地执 行的至少一个变换。例如,如图3B所示,解码器220可以接收图像202和 处理命令206。在解码器对象220解码图像之后,本地格式转换器对象308 则可以执行格式转换器变换,并且随后非本地縮放器222执行非本地縮放 器变换以产生第二实现304F。另选地,由本地格式转换器对象308所执行 的本地格式转换可在解码器220解码图像的同时来执行。如上所述,可在 非本地变换之前执行本地变换。在一示例实施例中,通常能以任何顺序、 但通常在非本地变换之前执行本地变换。非本地变换通常也能以任何顺序 来执行。同样,例如,为产生第三实现304G,可由解码器对象220来解码 图像,并且随后或同时,可由本地翻转/旋转器对象306来在图像上执行旋 转变换。因此,以此方式,作为示例,可以提供多个实现,每一实现都包括为生成该实现而在该图像上执行的至少一个本地变换。
图6是示出根据又一示例实施例的用于在图像上执行一个或多个变换 以产生一个或多个实现的过程的流程图。在开始操作之后,操作流程600
移至其中可以接收图像的接收操作610。随后在接收操作620,可以接收图 像处理命令。
随后在确定操作630,基于图像处理命令(或加工命令),可以确定 一个或多个变换和对于这些变换的安排以根据图像处理命令来处理该图像 并提供多个图像实现。例如,基于图像处理命令,可以确定一个或多个变 换(或对象)。另外,可以确定处理该图像的变换或对象的诸如串行和/或 并行安排等安排以根据图像处理命令处理该图像和生成图像实现。例如, 在图3A中,这可以包括确定处理该图像的縮放器对象222和格式转换器对 象224的串行安排(在解码器对象220之后)以产生所请求的所接收到的 图像202的实现304B。同样,例如,该确定可以包括确定处理所接收到的 图像的变换或对象的并行安排和顺序以产生其它所请求的实现,如304A、 304C禾卩304D。
尽管如此处所述的示出了所描述的各个实现的某些特征,但对本领域 技术人员来说,可以发生许多修改、替换、改变和等效技术方案。因此, 应当理解,所附权利要求旨在覆盖落入各实施例的真正精神之内的所有这 些修改和改变。
权利要求
1. 一种方法,包括接收图像;接收关于所接收到的图像的图像处理命令;以及基于所述图像处理命令在所述图像上本地地执行多个变换以提供所述图像的一个或多个实现。
2. 如权利要求l所述的方法,其特征在于,所述接收图像包括 接收包括光栅图形图像、数字图像和/或位像的文件。
3. 如权利要求1所述的方法,其特征在于,所述接收图像处理命令包括接收对所述图像执行以下变换中的一个或多个的图像处理命令解码 或解压所述图像、縮放所述图像、将所述图像的格式转换为不同的格式、 和/或翻转/旋转所述图像。
4. 如权利要求1所述的方法,其特征在于,所述执行包括 基于所述图像处理命令由解码器在所述图像上本地地执行第一变换;以及基于所述图像处理命令由所述解码器在所述图像上本地地执行第二变换。
5. 如权利要求1所述的方法,其特征在于,所述执行包括 在不对所述图像重新采样的情况下基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的一个或多个实现。
6. 如权利要求l所述的方法,其特征在于,所述执行包括 实例化解码器对象;实例化用于一个或多个变换的对象;以及将所述用于一个或多个变换的对象与所述解码器对象进行关联。
7. 如权利要求6所述的方法,其特征在于,所述实例化关于一个或多 个变换的对象包括实例化縮放器对象; 实例化格式转换器对象;或实例化翻转/旋转器对象。
8. 如权利要求l所述的方法,其特征在于,所述执行还包括 存储标识所述正被处理的图像的状态的状态信息。
9. 如权利要求l所述的方法,其特征在于,所述执行还包括 存储在所述图像上执行了一个或多个变换之后的一个或多个中间状态图像实现。
10. 如权利要求l所述的方法,其特征在于,所述执行包括 基于所述图像处理命令在所述图像上本地地执行多个变换以提供所述图像的多个实现。
11. 一种方法,包括 接收图像;接收关于所述图像的图像处理命令;基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的 多个实现,其中所述多个实现中的每一个都包括在所述图像上本地地执行 的至少一个变换。
12. 如权利要求11所述的方法,其特征在于,所述接收图像处理命 令包括接收对所述图像执行以下变换中的一个或多个的图像处理命令解码 或解压所述图像、縮放所述图像、将所述图像的格式转换为不同的格式、 和/或翻转/旋转所述图像。
13. 如权利要求ll所述的方法,其特征在于,所述执行包括 实例化解码器对象;实例化用于一个或多个变换的对象;以及将所述用于一个或多个变换的对象与所述解码器对象进行关联。
14. 如权利要求ll所述的方法,其特征在于,所述执行还包括 存储在所述图像上执行一个或多个变换之后的一个或多个中间状态图像实现以提供所述图像的多个实现。
15. 如权利要求11所述的方法,其特征在于,所述执行包括实例化 执行多个变换的每一个的对象,所述实例化包括以下的一个或多个-实例化解码器对象; 实例化縮放器对象; 实例化格式转换器对象;或 实例化翻转/旋转器对象。
16. 如权利要求ll所述的方法,其特征在于,所述执行包括 基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的多个实现,所述多个实现包括原始的或未经处理的图像和一个或多个经处 理的或经变换的图像实现。
17. 如权利要求ll所述的方法,其特征在于,所述执行包括 输出所述图像的多个实现。
18. —种方法,包括 接收图像; 接收图像处理命令;基于所述图像处理命令,确定一个或多个变换和对于所述变换的安排 以根据所述图像处理命令处理所述图像并提供所述图像的多个实现。
19. 如权利要求18所述的方法,其特征在于,所述确定包括 基于所述图像处理命令,确定一个或多个变换和所述变换的串行和/或并行安排或顺序,以根据所述图像处理命令处理所述图像并提供所述图像 的多个实现。
20. 如权利要求18所述的方法,其特征在于,还包括 根据所述图像处理命令,在所述图像上以基于所述确定的顺序和/或安排来执行所述一个或多个变换,以提供所述图像的多个实现。
全文摘要
公开了涉及提供图像的多个本地表示的各种实施例。例如,根据一示例实施例,可以生成并提供图像的多个实现,而非只有一个实现。同样,在另一实施例中,多个实现的生成和输出可以使用一个或多个本地对象来本地地执行变换或图像处理以提供这些图像或实现。
文档编号G06T1/00GK101484915SQ200780025383
公开日2009年7月15日 申请日期2007年5月29日 优先权日2006年7月7日
发明者M·L·古德温, R·A·沃尔达茨科, R·C·玛格琳特, R·戈尔, T·W·奥尔森, W-C·J·王 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1