CN101484915A - 提供图像的多个本地表示 - Google Patents

提供图像的多个本地表示 Download PDF

Info

Publication number
CN101484915A
CN101484915A CNA2007800253836A CN200780025383A CN101484915A CN 101484915 A CN101484915 A CN 101484915A CN A2007800253836 A CNA2007800253836 A CN A2007800253836A CN 200780025383 A CN200780025383 A CN 200780025383A CN 101484915 A CN101484915 A CN 101484915A
Authority
CN
China
Prior art keywords
image
conversion
described image
processing command
realizations
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2007800253836A
Other languages
English (en)
Other versions
CN101484915B (zh
Inventor
R·戈尔
M·L·古德温
R·C·玛格琳特
R·A·沃尔达茨科
T·W·奥尔森
W-C·J·王
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101484915A publication Critical patent/CN101484915A/zh
Application granted granted Critical
Publication of CN101484915B publication Critical patent/CN101484915B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/02Affine transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

公开了涉及提供图像的多个本地表示的各种实施例。例如,根据一示例实施例,可以生成并提供图像的多个实现,而非只有一个实现。同样,在另一实施例中,多个实现的生成和输出可以使用一个或多个本地对象来本地地执行变换或图像处理以提供这些图像或实现。

Description

提供图像的多个本地表示
背景
图像可以用各种格式和分辨率来提供。某些图像处理应用程序允许将图像处理或转换成不同的格式等。该处理通常可以经由在该图像上执行的一个或多个变换来执行。在某些情况下,这种图像处理可以生成所需图像,但可能阻止不损失分辨率的进一步处理,因为原始图像通常可能在处理过程中被丢弃了。同样,这种图像处理技术通常相当有限。
概述
公开了涉及提供图像的多个本地表示的各种实施例。例如,根据一示例实施例,可以生成并提供图像的多个实现,而非只有单个实现。同样,多个实现的生成和输出可以使用本地对象来本地地执行变换或图像处理来提供这些图像或实现。
根据一示例实施例,提供了一种方法。该方法可以包括接收图像,接收关于所接收到的图像的图像处理命令,以及基于该图像处理命令在该图像上本地地执行多个变换以提供该图像的一个或多个实现。
根据另一示例实施例,提供了一种方法。该方法可以包括接收图像,接收关于该图像的图像处理命令,以及基于该图像处理命令在图像上执行多个变换以提供该图像的多个实现。多个实现的每一个都可以包括在该图像上本地地执行的至少一个变换。
根据又一示例实施例,提供了一种方法。该方法可以包括接收图像,接收图像处理命令,以及基于该图像处理命令确定一个或多个变换和对于这些变换的安排,以根据该图像处理命令处理该图像并提供该图像的多个实现。
提供本概述以便以简化的形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附图简述
图1是根据一示例实施例的计算系统的框图。
图2是根据另一示例实施例的系统的框图。
图3A是根据一示例实施例的在其中处理图像以提供多个实现的系统300A的图。
图3B是根据另一示例实施例的在其中处理图像以提供多个实现的系统300B的框图。
图4是示出根据一示例实施例的用于在图像上执行多个变换以产生一个或多个实现的过程的流程图。
图5是示出根据另一示例实施例的用于执行多个变换以产生一个或多个实现的过程的流程图。
图6是示出根据又一示例实施例的用于在图像上执行一个或多个变换以产生一个或多个实现的流程图。
详细描述
参考其中相同的标号表示相同的元素的各个附图,图1是根据一示例实施例的计算设备100的框图。根据一示例实施例,可以在计算系统100或其它计算系统中实践或实现各个实施例。计算系统100可以包括,例如,膝上型计算机、台式计算机、个人计算机(PC)、服务器、网络设备(例如,交换机、路由器)、蜂窝电话、个人数字助理(PDA)、游戏设备、手持式通信设备、或其它计算设备。这仅仅是一些示例,故各实施例并不限于此。
系统100可以包括中央处理单元(“CPU”)102、包括随机存取存储器106(“RAM”)和只读存储器108(“ROM”)的系统存储器104。CPU 102可以解释指令并处理计算机应用程序中的数据。例如,CPU 102可以是微处理器且包括多个集成电路,并且可以执行软件或指令并向计算系统100提供总体控制。RAM 106可以允许以任何顺序访问存储在该RAM上的数据,系统100还可以例如向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、或可由系统100访问的任何其它可用媒体存储设备。
作为示例而非限制,数据存储设备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到RGB)并随后旋转所接收到的图像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的第二实现、和在被解码、缩放25%并被转换为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到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。
尽管如此处所述的示出了所描述的各个实现的某些特征,但对本领域技术人员来说,可以发生许多修改、替换、改变和等效技术方案。因此,应当理解,所附权利要求旨在覆盖落入各实施例的真正精神之内的所有这些修改和改变。

Claims (20)

1.一种方法,包括:
接收图像;
接收关于所接收到的图像的图像处理命令;以及
基于所述图像处理命令在所述图像上本地地执行多个变换以提供所述图像的一个或多个实现。
2.如权利要求1所述的方法,其特征在于,所述接收图像包括:
接收包括光栅图形图像、数字图像和/或位图图像的文件。
3.如权利要求1所述的方法,其特征在于,所述接收图像处理命令包括:
接收对所述图像执行以下变换中的一个或多个的图像处理命令:解码或解压所述图像、缩放所述图像、将所述图像的格式转换为不同的格式、和/或翻转/旋转所述图像。
4.如权利要求1所述的方法,其特征在于,所述执行包括:
基于所述图像处理命令由解码器在所述图像上本地地执行第一变换;以及
基于所述图像处理命令由所述解码器在所述图像上本地地执行第二变换。
5.如权利要求1所述的方法,其特征在于,所述执行包括:
在不对所述图像重新采样的情况下基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的一个或多个实现。
6.如权利要求1所述的方法,其特征在于,所述执行包括:
实例化解码器对象;
实例化用于一个或多个变换的对象;以及
将所述用于一个或多个变换的对象与所述解码器对象进行关联。
7.如权利要求6所述的方法,其特征在于,所述实例化关于一个或多个变换的对象包括:
实例化缩放器对象;
实例化格式转换器对象;或
实例化翻转/旋转器对象。
8.如权利要求1所述的方法,其特征在于,所述执行还包括:
存储标识所述正被处理的图像的状态的状态信息。
9.如权利要求1所述的方法,其特征在于,所述执行还包括:
存储在所述图像上执行了一个或多个变换之后的一个或多个中间状态图像实现。
10.如权利要求1所述的方法,其特征在于,所述执行包括:
基于所述图像处理命令在所述图像上本地地执行多个变换以提供所述图像的多个实现。
11.一种方法,包括:
接收图像;
接收关于所述图像的图像处理命令;
基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的多个实现,其中所述多个实现中的每一个都包括在所述图像上本地地执行的至少一个变换。
12.如权利要求11所述的方法,其特征在于,所述接收图像处理命令包括:
接收对所述图像执行以下变换中的一个或多个的图像处理命令:解码或解压所述图像、缩放所述图像、将所述图像的格式转换为不同的格式、和/或翻转/旋转所述图像。
13.如权利要求11所述的方法,其特征在于,所述执行包括:
实例化解码器对象;
实例化用于一个或多个变换的对象;以及
将所述用于一个或多个变换的对象与所述解码器对象进行关联。
14.如权利要求11所述的方法,其特征在于,所述执行还包括:
存储在所述图像上执行一个或多个变换之后的一个或多个中间状态图像实现以提供所述图像的多个实现。
15.如权利要求11所述的方法,其特征在于,所述执行包括实例化执行多个变换的每一个的对象,所述实例化包括以下的一个或多个:
实例化解码器对象;
实例化缩放器对象;
实例化格式转换器对象;或
实例化翻转/旋转器对象。
16.如权利要求11所述的方法,其特征在于,所述执行包括:
基于所述图像处理命令在所述图像上执行多个变换以提供所述图像的多个实现,所述多个实现包括原始的或未经处理的图像和一个或多个经处理的或经变换的图像实现。
17.如权利要求11所述的方法,其特征在于,所述执行包括:
输出所述图像的多个实现。
18.一种方法,包括:
接收图像;
接收图像处理命令;
基于所述图像处理命令,确定一个或多个变换和对于所述变换的安排以根据所述图像处理命令处理所述图像并提供所述图像的多个实现。
19.如权利要求18所述的方法,其特征在于,所述确定包括:
基于所述图像处理命令,确定一个或多个变换和所述变换的串行和/或并行安排或顺序,以根据所述图像处理命令处理所述图像并提供所述图像的多个实现。
20.如权利要求18所述的方法,其特征在于,还包括:
根据所述图像处理命令,在所述图像上以基于所述确定的顺序和/或安排来执行所述一个或多个变换,以提供所述图像的多个实现。
CN2007800253836A 2006-07-07 2007-05-29 提供图像的多个本地表示 Expired - Fee Related CN101484915B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/482,558 2006-07-07
US11/482,558 US8478074B2 (en) 2006-07-07 2006-07-07 Providing multiple and native representations of an image
PCT/US2007/012641 WO2008008131A1 (en) 2006-07-07 2007-05-29 Providing multiple and native representations of an image

Publications (2)

Publication Number Publication Date
CN101484915A true CN101484915A (zh) 2009-07-15
CN101484915B CN101484915B (zh) 2013-09-18

Family

ID=38919187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800253836A Expired - Fee Related CN101484915B (zh) 2006-07-07 2007-05-29 提供图像的多个本地表示

Country Status (8)

Country Link
US (1) US8478074B2 (zh)
EP (1) EP2044569A4 (zh)
JP (1) JP5631590B2 (zh)
KR (1) KR20090031408A (zh)
CN (1) CN101484915B (zh)
MX (1) MX2008015960A (zh)
TW (1) TW200809687A (zh)
WO (1) WO2008008131A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI475509B (zh) * 2008-04-18 2015-03-01 High Tech Comp Corp 圖像載入方法及電子裝置與數位資料儲存媒體
US20110064330A1 (en) * 2008-06-16 2011-03-17 Yasushi Hikichi Image selection system, image output apparatus, portable terminal, image selection method and program
US8610830B2 (en) * 2008-09-11 2013-12-17 Apple Inc. Video rotation method and device
CN103123718B (zh) * 2011-11-21 2016-06-22 腾讯科技(深圳)有限公司 一种图像处理方法和系统
US9489711B2 (en) 2014-08-21 2016-11-08 Facebook, Inc. Systems and methods for recipient-side image processing
US11094030B2 (en) 2018-12-21 2021-08-17 Microsoft Technology Licensing, Llc Methods of transforming image misalignment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1538350A (zh) * 2003-04-18 2004-10-20 深圳市朗科科技有限公司 数码图像处理装置及方法
JP2004297772A (ja) * 2003-03-12 2004-10-21 Ricoh Co Ltd 画像処理システム、画像形成装置、画像処理方法、プログラム及び記憶媒体

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02131076A (ja) * 1988-11-11 1990-05-18 Hitachi Ltd 画像復号縮小装置
JP3238567B2 (ja) 1993-07-02 2001-12-17 株式会社ソニー・コンピュータエンタテインメント 画像生成方法及び装置
JPH0884341A (ja) * 1994-09-14 1996-03-26 Hitachi Ltd 情報変換装置
JPH08116534A (ja) * 1994-10-18 1996-05-07 Seiko Epson Corp 画像データ符号化装置およびその方法並びに画像データ復号化装置およびその方法
US7190284B1 (en) * 1994-11-16 2007-03-13 Dye Thomas A Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent
JPH08317184A (ja) * 1995-05-15 1996-11-29 Sanyo Electric Co Ltd 画像符号化方法、画像復号化方法および画像記録媒体
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6084598A (en) 1998-04-23 2000-07-04 Chekerylla; James Apparatus for modifying graphic images
US6501861B1 (en) * 1998-09-17 2002-12-31 Samsung Electronics Co., Ltd. Scalable coding/decoding methods and apparatus for producing still image using wavelet transformation
US6906826B1 (en) 1998-11-16 2005-06-14 Seiko Epson Corporation Medium on which image modifying program is recorded, image modifying apparatus and method
KR100671098B1 (ko) 1999-02-01 2007-01-17 주식회사 팬택앤큐리텔 모양정보를 이용한 멀티미디어 데이터의 검색 방법 및 장치
US6563964B1 (en) * 1999-02-08 2003-05-13 Sharp Laboratories Of America, Inc. Image downsampling using redundant pixel removal
KR100586693B1 (ko) 1999-04-22 2006-06-08 에스케이 텔레콤주식회사 이미지 데이터의 크기를 축소하기 위한 이미지 변환 처리 장치및 이미지 데이터 크기 축소 방법
US6870944B1 (en) 1999-06-08 2005-03-22 Sony Corporation Image processing apparatus, image processing method, and storage medium
US6959098B1 (en) 1999-11-30 2005-10-25 Digimarc Corporation Method and system for determining image transformation
JP4127465B2 (ja) * 2001-05-14 2008-07-30 株式会社リコー 画像伸張装置及び方法、並びに記録媒体
US7218789B2 (en) 2000-12-01 2007-05-15 Lizardtech, Inc. Method for lossless encoding of image data by approximating linear transforms and preserving selected properties for image processing
KR100378222B1 (ko) 2001-04-21 2003-03-29 주식회사 마크애니 디지털 워터마크의 삽입 및 검출방법과 이를 이용한워터마크 삽입/검출 장치
US6944357B2 (en) * 2001-05-24 2005-09-13 Microsoft Corporation System and process for automatically determining optimal image compression methods for reducing file size
US20020186393A1 (en) * 2001-06-11 2002-12-12 Pochuev Denis A. Document printing using format-specific translation modules
US6819803B2 (en) 2001-07-02 2004-11-16 International Business Machines Corporation Faster lossless rotation of JPEG images
US7123777B2 (en) * 2001-09-27 2006-10-17 Eyesee360, Inc. System and method for panoramic imaging
US7058239B2 (en) * 2001-10-29 2006-06-06 Eyesee360, Inc. System and method for panoramic imaging
AU2002348192A1 (en) * 2001-11-08 2003-05-19 Eyesee360, Inc. Method and apparatus for the computation of panoramic views and _perspective projections from omnidirectional images
JP4141342B2 (ja) * 2002-08-12 2008-08-27 株式会社リコー 画像形成装置
US7149370B2 (en) * 2003-03-07 2006-12-12 Nokia Corporation Method and device for image surfing
JP3874738B2 (ja) * 2003-04-14 2007-01-31 シャープ株式会社 画像処理システム、画像処理装置及び画像処理方法
KR20050030699A (ko) 2003-09-25 2005-03-31 주식회사 팬택앤큐리텔 이미지 변환 시스템 및 그 방법
EP1538844A3 (en) 2003-11-26 2006-05-31 Samsung Electronics Co., Ltd. Color image residue transformation and encoding method
JP2005235029A (ja) * 2004-02-23 2005-09-02 Fuji Photo Film Co Ltd 画像縮小方法および装置ならびにプログラム
US7657846B2 (en) * 2004-04-23 2010-02-02 Microsoft Corporation System and method for displaying stack icons
US20050251758A1 (en) * 2004-04-26 2005-11-10 Microsoft Corporation Indicating file type on thumbnail preview icon
US7506253B2 (en) * 2004-05-21 2009-03-17 Electronics For Imaging, Inc. Methods and apparatus for recording web information
US20060041503A1 (en) * 2004-08-21 2006-02-23 Blair William R Collaborative negotiation methods, systems, and apparatuses for extended commerce
US7672521B2 (en) * 2004-08-30 2010-03-02 Hewlett-Packard Development Company, L.P. System and method for improved page composition
JP4376156B2 (ja) 2004-09-16 2009-12-02 株式会社リコー 画像処理装置および画像処理方法およびプログラムおよび記録媒体
US7882413B2 (en) * 2005-01-20 2011-02-01 New Jersey Institute Of Technology Method and/or system for space-time encoding and/or decoding
GB2423613A (en) * 2005-02-25 2006-08-30 Canon Europa Nv Document print management
US20070120763A1 (en) * 2005-11-23 2007-05-31 Lode De Paepe Display system for viewing multiple video signals
US7715653B2 (en) * 2006-04-03 2010-05-11 Humberto Garduno Non-platform specific method and/or system for navigating through the content of large images, allowing zoom into or out, pan and/or rotation
US20080144066A1 (en) * 2006-10-26 2008-06-19 Andrew Rodney Ferlitsch Composition Print Method Using Translators
TWI324477B (en) * 2006-11-03 2010-05-01 Quanta Comp Inc Stereoscopic image format transformation method applied to display system
US8103654B2 (en) * 2007-06-26 2012-01-24 Mikhail Gilula System and method for querying heterogeneous data sources

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004297772A (ja) * 2003-03-12 2004-10-21 Ricoh Co Ltd 画像処理システム、画像形成装置、画像処理方法、プログラム及び記憶媒体
CN1538350A (zh) * 2003-04-18 2004-10-20 深圳市朗科科技有限公司 数码图像处理装置及方法

Also Published As

Publication number Publication date
US20080008392A1 (en) 2008-01-10
JP2009543253A (ja) 2009-12-03
WO2008008131A1 (en) 2008-01-17
TW200809687A (en) 2008-02-16
CN101484915B (zh) 2013-09-18
EP2044569A4 (en) 2011-06-22
EP2044569A1 (en) 2009-04-08
JP5631590B2 (ja) 2014-11-26
US8478074B2 (en) 2013-07-02
KR20090031408A (ko) 2009-03-25
MX2008015960A (es) 2009-01-09

Similar Documents

Publication Publication Date Title
CN101484915B (zh) 提供图像的多个本地表示
US20070234229A1 (en) Server apparatus of computer system
CN1329870C (zh) 任意形状图像的基于块的旋转
US9323653B2 (en) Apparatus and method for processing data
CN109255355A (zh) 图像处理方法、装置、终端、电子设备及计算机可读介质
JP2935937B2 (ja) ディジタル・ビデオ・イメージ圧縮方法及びコンピューターシステム
JP2006250998A (ja) 画像表示システム
CN110717405B (zh) 人脸特征点定位方法、装置、介质及电子设备
WO2021106855A1 (ja) データ生成方法、データ生成装置、モデル生成方法、モデル生成装置及びプログラム
WO2024074042A1 (zh) 一种数据存储方法及装置、数据读取方法及装置、设备
CN108427671B (zh) 信息转换方法和装置、存储介质及电子装置
WO2003048964A1 (en) Wireless network architecture and method
CN106095360B (zh) 基于调色板的图像处理方法和图像处理装置
US11176720B2 (en) Computer program, image processing method, and image processing apparatus
CN114820318A (zh) 壁纸的显示方法、装置、电子设备和可读存储介质
KR100974539B1 (ko) 전자화된 사전정보 관리장치 및 방법
JP2002133414A (ja) 画像処理方法及びその装置、記憶媒体
CN104090911A (zh) 一种信息处理方法和电子设备
AU2013248237A1 (en) Image scaling process and apparatus
JP7190541B2 (ja) プログラム、コード出力方法、及び端末装置
JP5814389B2 (ja) 画像管理システム、及び画像管理方法
JPH09298670A (ja) 画像処理装置及びその方法
JP6569242B2 (ja) 画像処理装置、画像処理システム及び画像処理プログラム
JP2023050976A (ja) 端末装置のためのコンピュータプログラム、コンピュータプログラムを記憶するコンピュータ可読記録媒体、及び、端末装置によって実行される方法
JP2007295143A (ja) 画像処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130918

Termination date: 20180529

CF01 Termination of patent right due to non-payment of annual fee