本申请与于2003年10月14日提交的标号为10/683,153的专利申请相关,后者题为Color Management System That Enables Dynamic Balancing ofPerformance with F1exibility(代理编号003797.00696),并要求于2003年11月10提交的专利申请第10/704,833号的优先权,后者题为System for Customerand Automatic Color Management Using Po1icy Controls(代理编号003797.00698),该专利申请引用在此作为参考。
具体实施方式
在以下对各个实施例的描述中,参考构成该描述的一部分的附图,其中通过说明可以实现本发明的各个实施例来示出。应该理解,可以使用其它实施例,且可以不脱离本发明的范围而作出结构和功能上的修改。
包括了对以下术语的定义是为了便于对详细描述的理解。
信道-包含一个或多个信息‘信道’的图像。一般地,色彩由加性三原色(红、绿和蓝)表示。这三种颜色的每种的色彩信息将被编码成其各自的信道。信道不限于RGB-它们可以被分成亮度(明亮度)和色度(色彩)信道或其它更加奇特的方式。也可以使用信道来编码除色彩之外的事物-例如透明度。图像色彩质量的一种量度标准是用于编码每个信道的比特数(bpch)。
·限幅-任何时间源数据中两个不同的值被映射到目标数据中相同的值,这些值被称为被限幅的。这很重要因为限幅数据不能被恢复成其原始数据-信息被丢失。诸如改变亮度或对比度等操作会限幅数据。
·色彩管理-色彩管理是确保一个设备所记录的色彩在不同的设备上被尽可能如实地表示给用户偏爱性的过程,通常这符合一个设备上对另一设备的感知。与人眼相比,图像设备的传感器具有对于捕捉所有人眼能够捕捉的色彩和动态范位的有限能力。同样的问题也发生在显示设备和输出设备身上。问题是虽然所有三类设备具有这些色彩和动态范围限制性,然而它们的限制性都不是正好相同。因此必须设置转换‘规则’以尽可能多地保存已经受限的色彩和动态范围信息,以及随着信息移动通过工作流程,确保信息尽可能真实地呈现给人眼。
·色彩空间-传感器可以检测和记录色彩,但是没有一个基准,原始电压值完全是没有意义的。该基准的标度可以是传感器自身的测量能力-如果传感器被测量到具有特定的频率响应谱,那么所产生的数字会具有意义。然而,更为有用的是公共基准,表示所有人眼可见的色彩。有这样的基准(被称为CIELAB的色彩空间),可以清楚地表示色彩,其它设备能够使用这一信息并尽其最大可能来将其再现。有多种公知的色彩空间,包括sRGB、scRGB、AdobeRGB,每个被开发用于图像领域内的特定目的。
·色彩环境-所描述色彩空间中色移的广义形式。虽然某些文件格式使用特定色彩管理标准所描述的色移信息,色彩环境实际上是相同的概念但包括不支持ICC色移的那些文件(编码)格式。
·动态范围-数学上,系统能够编码的最大值信号除以同一系统能够编码的最小值信号。这个值给出了系统将编码的信息标度的表示。
·色移-在诸如打印机或监视器等输出设备种可以再生的色彩和密度值的范围。
·色调-色彩的一属性,人们以此感知主导波长。
·色调饱和度数值(HSV)--色调图,将色调表示为一角度,将饱和度表示为离中心的距离。
·ICC-国际色彩协会
·亮度-来自表面或光源的绝对光量,不考虑观察者如何感觉它。
·精度-表示色彩的精确度。一般通过增加每个信道编码的比特数目来增加精确度,假设源数据具有足够的色彩分辨率。
·特性文档-一文件,包含足够的信息以使色彩管理系统能够将色彩转换入或转换出特定色彩空间。这可以是设备的色彩空间-其中我们会称呼其为设备特性,具有子类型输入特性、输出特性和显示特性(分别用于输入、输出和显示设备);或抽象色彩空间。
·映射意向-告诉色彩管理系统在色彩空间之间从较大色移到较小色移时,如何处理转换色彩的问题。
·饱和度-色彩的纯度。
·sRGB-用于互联网上图像的“标准”RGB色彩空间,IEC 61966-2-1
·scRGB-“标准计算”RGB色彩空间,IEC 61966-2-2
·工作流程-定义文档中的数字表示了哪些颜色或将那些颜色保留或控制为从捕捉、经过编辑到输出的工作流程的过程。
图1说明了可以在其上实现本发明的合适的计算系统环境100的例子。特别地,图1示出了计算系统环境100中无线指点设备161的操作,例如光学无线鼠标。计算系统环境100仅是适当的计算环境的例子,并非意味着对本发明的使用范围和功能的任何限制。该计算环境100也不应当被解释为对示例操作环境100中例示的任何一个元件或它们的组合有任何的依赖性或要求。
本发明可在许多其它通用或者特定的计算系统环境或者配置中操作。可以适于与本发明一起使用的公知的计算系统、环境和/或配置的示例包含但不限于:个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于多处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机以及包括任何以上系统或类似设备的分布式计算环境。
可以在计算机可执行指令的环境中描述,所述计算机可执行指令诸如有计算机执行的程序模块。通常,程序模块包括执行一特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可以在分布式计算环境中实现,其中在分布式计算环境中任务由通过一通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包含存储器设备的本地和远程计算机存储介质中。
参见图1,用于实现本发明的例示系统包含一个以计算机形式的通用计算设备110。计算机110的组件包含但不限于:处理单元120、系统存储器130、和连接包括系统存储器在内的各个系统组件到处理单元120的系统总线121。系统总线121可以是几种类型的总线结构中的任何一种,其中这几种类型的总线结构包含:使用各种总线体系结构中任何一种的存储器总线或存储器控制器、外围总线和本地总线。通过举例而非限制,这样的体系结构包括工业标准结构(ISA)总线、微信道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)本地总线和也被称为夹层(Mezzanine)总线的外设组件互连(PCI)总线。
计算机110一般包含多种计算机可读介质。计算机可读介质可以是能由计算机110访问的任何可用介质,而且包含易失性/非易失性介质、以及移动/不可移动介质。举例来说,而不是限制,计算机可读介质可以包含计算机存储介质和通信介质。计算机存储介质包含以任一方法或技术实现的用于信息存储的易失性/非易失性介质、移动/不可移动介质,所述信息诸如计算机可读指令、数据结构、程序模块或其它数据。计算机存储介质包含但不限于:RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数据通用盘(DVD)或其它光学存储器、磁带盒、磁带、磁带存储器或者其它磁存储设备、或者任何其它能够用来存储所需信息并且能够由计算机110访问的介质。通信介质一般具体化为计算机可读指令、数据结构、程序模块、或者一调制数据信号,诸如载波或其它传输机制中的其它数据,并且包括任何信息传递介质。数据“已调制的数据信号”是指以编码该信号中信息的方式来设置或改变了其一个或多个特性的信号。举例而言而非限制,通信介质包含有线介质、诸如有线网络或直接有线连接,以及其它无线介质、诸如声学、射频、红外或其它无线介质。以上任何一个组合也应当被包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和非易失性存储器,诸如只读存储器(ROM)131和随机存取存储器(RAM)132形式的计算机存储介质。基本输入/输出系统(BIOS)133一般被保存在ROM 131中,其中该基本输入/输出系统(BIOS)133包含有助于例如在启动过程中在计算机110内部的元件之间传输信息的基本例程。RAM 132一般包含可由处理单元立即访问和/或当前由处理单元进行操作的数据和/或程序模块。举例而言而非限制,图1说明了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括可移动/不可移动的和易失性/非易失性的计算机存储介质。仅仅举例来说,图1说明了一个从不可移动、非易失性磁介质中读取或写入到其中的硬盘驱动器140、从一个可移动、非易失性磁盘152中读取或写入到其中的磁盘驱动器151和一个从一个可移动、非易失性光156盘,诸如CD-ROM或者其它光介质中读取或者写入到其中的光盘驱动器155。在该示例操作上下文中使用的其它可移动/不可移动、易失性/非易失性的计算机存储介质包括但不限于:磁带盒、闪存、DVD、数字视频磁带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,诸如接口140,连接到系统总线121,而磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,诸如接口150,连接到系统总线121。
以上讨论且示于图1的驱动器及其相关计算机存储媒质为来自计算机110的计算机可读指令、数据结构、程序模块、以及其它数据提供了存储。在图1中,例如,硬盘驱动器141还可以存储操作系统144、应用程序145、其它程序模块146和程序数据147。应当注意,这些组件可以和操作系统134、其它程序模块135和程序数据137相同或者相异。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给出了不同的数字,以至少说明它们是不同的副本。用户可以经由输入设备,诸如键盘162、麦克风163和诸如鼠标、轨迹球或触摸板等指点设备161,输入命令和信息到计算机110中。在本发明的一个实施例中,无线指示设备161可以实现为带有用于检测鼠标移动的光传感器的鼠标。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、卫星天线、扫描仪等等。这些以及其它输入设备经常经由耦合到计算机总线上的用户输入接口160连接到处理单元120,并且可以通过其它接口和总线结构,诸如并行端口、游戏端口或者通用串行总线(USB)连接。在图1中,无线指示设备161通过无线信道199与用户输入接口160通信。无线信道199使用电磁信号,例如射频(RF)信号、红外线信号或可视光信号。监视器191或其它类型的显示设备也经由一接口,诸如视频接口190,连接到系统总线121上。除了监视器之外,计算机也可以包括其他外围输出设备,诸如扬声器197和打印机196,它们可以通过输出外围设备接口190连接。
计算机110可以在使用与一个或多个远程计算机的逻辑连接的网络上下文中进行操作,所述的远程计算机诸如远程计算机180。远程计算机180可以是个人计算机、服务器、路由器、网络PC机、对等设备或者其它公共网络节点,而且一般包括许多或者所有上述与计算机110相关的单元。在图1中描述的逻辑连接不仅包括局域网(LAN)171和广域网(WAN)173,而且还包括其它网络。这种连网环境常见于办公室、企业范围的计算机网络、企业内部局域网和Internet。
当在LAN网络环境中使用时,计算机110经由网络接口或适配器170连接到LAN 171。当在WAN网络环境中使用时,计算机110一般包括调制解调器172或者其它用于经由WAN 173建立通信的装置,诸如经Internet。可以是内置或外置的调制解调器172可经由用户输入接口160或者其它适当的机制连接到系统总线121。在网络环境中,所描述的与计算机110相关的程序模块或其部分可以存储在远程存储设备。举例而言,而非限制,图1说明了驻留在存储器设备181上的远程应用程序185。应当理解,所显示的网络连接是示例性的,也可以使用在计算机之间建立通信的其它手段。
外围接口195可以链接到视频输入设备,诸如扫描仪(未示出)或数码照相机194,其中输出外围设备接口可以支持包括通用串行总线(USB)接口的标准接口。可以由操作系统134或应用程序135支持的色彩管理协助用户在计算机设备之间获得所期望的色彩转换。计算机设备一般被分为输入设备,例如数码照相机194、显示设备,例如监视器191、输出设备,例如打印机196。以下讨论中详细解释色彩管理的操作。
图2说明了依照本发明的实施例由色彩管理系统支持的策略层之间的分级关系200。关系200包括六个策略层201-211。策略层201(层1-系统层)是复盖系统范围的色彩管理控制的控制的最高和最粗糙层。在该实施例中,色彩管理系统维持两个工作空间(其中一工作空间被称为概况链接空间):一小的工作空间和一大的工作空间。小的空作空间是传统的8-bpch(比特每信道)色彩空间,用于将图像文件的大小保持在对色彩保真和动态范围代价一定的情况下最少。小的工作空间默认是sRGB。大的工作空间是高保真工作空间。大的工作空间一般大于8-bpch,用于以增加文件大小和处理速度为代价保存图像文件的质量。大的工作空间默认是scRGB(32-bpch,浮点)。
色彩管理系统在将图像文件转换成或是小的工作空间或是大的工作空间中为特定的色移支持三种质量设置,如表1所示。第一质量设置Q1(大小最优)对转换最优化使得指定的色移映射(如和将要讨论的呈现意向一起讨论)将图像文件转换成小的工作空间。对于图像文件的所有操作在小的工作空间上执行。小的工作空间有限的8-bpch保真一般与大的动态范围(大的色移)或高色彩保真
表1:质量设置 |
质量设置 |
映射到工作空间 |
Q1 |
尺寸最优 |
Q2 |
保证无丢失 |
Q3 |
质量最优 |
之一而非两者同时相关联。如果图像文件被显著地处理,那么图像文件会经历降低的保真度。具有大于8-bpch的图像文件被缩小到8-bpch。对于第二种质量设置Q2(保证无损失),具有8-bpch或小于8-bpch的图像文件被转换成小的工作空间。具有大于8-bpch的图像文件被映射成大的空作空间。结果,图像文件一般以由第三种质量设置Q3的(如下解释的)质量益处来表征,但是比第一种质量设置需要更多的存储资源。对于第三种质量设置Q3(对于质量最优),色彩管理系统将所有图像转换成大的工作空间,这样使得对图像文件的所有操作在大的工作空间中执行。如果为scRGB色彩空间配置大的图像文件,那么图像文件具有对限幅的更大的抗干扰性以保持超/次亮度值支持、由于高色彩精度导致的保真度维持以及忠实的色彩重现。然而,8-bpch图像文件的处理要求大于第一或第二质量(Q1或Q2)四倍大小的存储器范围需求量。
对于第一和第三种质量设置(Q1和Q3),对图像文件的转换会要求将图像文件转换成相应的较小的工作空间(例如具有scRGB色彩空间的图像空间被转换成小的工作空间)或被转换成较大的工作空间(例如,具有RGB色彩空间的图像空间被转换成大的工作空间)。在这些情况下,映射方式设置向色彩管理系统指出当如表2所示从较大的色移转到较小的色移时,如何处理在色彩空间之间转换色彩的问题。当从色移A转到色移B时,应该考虑这些色移的色彩空间。因为色彩空间不同,色彩空间应该被转换成中间空间。将色移A和色移B做比较,存在四种可能的条件。第一,色移空间A大于色移B,其中色移A完全包括色移B。第二,色移A小于色移B,其中色移A被色移B完全包括。第三,色移A与色移B有交叉,其中没有一个色移完全包括另一色移。第四,色移A与色移B不相关,其中色移之间没有公共性。
表2:映射方式 |
比较色移空间A、B |
条件 |
A>B |
A包括B |
A<B |
A被B完全包括 |
A与B有交叉 |
A和B都不包括对方 |
A独立于B |
无公共性 |
在本发明的另一实施例中,支持二进制色移映射操作。例如,照相机制造商会提供源概况和源色移映射以复制照相机的“查看和感觉”,而打印机的制造商会提供目标概况和目标色移映射以复制打印机的“查看和感觉”。在该实施例中,色彩管理系统支持选择以下选项的能力:
选择源色移映射
选择目标色移映射
覆盖任一或两个源色移映射和目标色移映射
加权源映射和目标映射组合的比例(0-100%)
在一些情况中,用户会完全禁止色彩管理,使得色彩空间变得没有意义。然而,在激活色彩管理时映射是有意义的。在这些情况下,不用传统的色彩管理环境就可执行简单的算术操作。一个例子是从3-信道RGB到4-信道CMYK的转换。
参见图2,用户可以完全禁止色彩管理或在策略层201(系统层)处选择小的工作空间或大的工作空间。较低层的策略层(例如策略层203、205、207、209或211)会覆盖策略层201。然而,策略层201会锁定较低的策略层使其不能覆盖策略201。此外,覆盖/锁定机制可以在其它策略层配置。每个策略层201、203、205、207和209具有锁定功能以对较低策略层是否可以覆盖该策略层的设置、是否提示用户或仅仅依照客户指令执行请求提供用户控制。
在策略层203(用户层),用户可以为该用户配置策略而不影响其它用户。如果计算机系统(例如计算机110)支持的色彩管理系统被多个用户使用(诸如在教育系统中),这个能力是重要的。
在策略层205(操作层),用户具有基于色彩管理系统支持的操作控制色彩管理的能力。(如图3中解释的,操作包括“捕捉”、“显示”、“打印”、“载入”和“保存”、“复制”和“粘贴”。)例如,当执行载入图像文件,色彩管理系统会被配置成总是将图像文件转换成scRGB。当打印图像文件时,色彩管理系统会被配置成将图像文件转换成Epson 9600-精选光面。可以为每个指定的操作配置策略。
在策略层207(概况层),用户具有基于图像文件的嵌入概况或缺少嵌入概况控制色彩管理的能力。当遇到某些策略时,用户会期望执行某一转换。
在策略层209(设备和编码解码器层),用户可以根据设备由色彩管理系统控制转换,并接着编码/解码(图像文件的格式)。
在策略层211(色彩管理API),应用程序会对色彩管理API直接作出API调用以执行色彩操作。(在图14和15中会更详细地讨论色彩管理API)。在该实施例中,策略层209一般不对用户公开。
图3说明了对应于策略层201、203、205和209的分级策略方案300的方案。可以为系统301建立策略。如果不为较低的策略层配置策略,那么色彩管理系统使用在系统层201配置的策略。然而,如果策略层201没有锁定较低层的策略,较低层策略能够覆盖在策略层201设置的策略。
在图3中所示的方案中,与用户层203相关联的三个用户实体303、305和307的每一个对应于计算机110的不同用户,其中每个用户为用户的环境配置策略而不影响其它用户。然而,在其它实施例中,用户实体303、305和307可以对应于其它关联。例如,用户实体303、305和307可以对应于用户的不同消费者,其中每个消费者具有要求不同策略设置的不同色彩管理目标。
捕捉操作309、显示操作311、打印操作313、载入/保存操作315、复制操作308和粘贴操作316与操作层205相关联,其中策略配置设置视操作种类而定。每个操作分级地与能够支持该操作的设备相关联。
不同的设备可以在设备/编码/译码层209用不同的策略设置配置。例如,如图3所示捕捉操作309可以与多种输入设备相关联,诸如照相机317和扫描仪319,其中每种设备类型与不同的策略设置相关联。载入/保存操作315可以与不同的编码/译码(格式)类型相关联,所述类型包括JPEG格式321、TIFF格式323和GIF格式325。显示操作311可以与不同的监视器设备(未示出)相关联。打印操作313可以与不同的打印设备(未示出)相关联。对于每个设备类型,不同设备模式可以用特定的策略设置来配置。例如,DIX模式327和D100模式329与照相机317相关联。虽然没有在分级策略方案300中示出,本发明的其它实施例可以在应用层上支持一策略。
依照方案300的色彩管理设置可以用文本文件表示,例如作为可扩展标记语言(XML)文件,其中每种策略层的色彩管理设置至少用一种属性表示。如果策略设置受损或要符合另一计算机的策略设置,XML文件便利了在计算机110上配置策略。
图4示出了依照本发明的一实施例色彩管理系统400的构架。色彩管理系统400包括色彩处理模块410、配置模块411、用户界面413和接口模块421。色彩处理模块401包括色彩管理模块(CMM)407、所选概况和工作空间409。(在一些实施例中,色彩管理系统400会从多个色彩管理模块之一选择,如通过配置模块411通过配置策略设置的策略设置所配置的。)色彩管理模块407是软件引擎,使用所选概况405中的色彩数据转换RGB或CMYK值。一概况可以与源设备415(例如数字照相机)相关联,而另一概况可以与目标设备417相关联。然而,对于一些类型的设备,例如显示设备,概况可以是双向的(即,从设备空间转换成工作空间和从工作空间转换成设备空间)因为显示设备可以作为输入和输出设备起作用。概况可以由色彩管理系统400采用和选择或者如果概况被嵌入在图像文件中,概况可以从图像文件中获取。使用概况405、色彩管理模块407确定如何使用来自概况405的采样点在工作空间409中计算色彩。色彩管理模块407一般在概况采样点之间执行内插以确定工作空间409中的值,这可以被称为概况连接空间(PCS)。工作空间409可以是大的工作空间或小的工作空间,这是依照从用户界面413的配置模块411获取的策略设置由色移映射来确定。用户可以通过与一系列对话框交互通过用户界面413配置策略设置。(配置策略设置将在图5-12中详细讨论。)配置模块411使用输入的策略设置来配置色彩管理系统400。或者,如图14和15要讨论的,配置模块411可以通过接口模块421从组件419接收包含在输入中的策略设置。在一实施例中,组件419是一应用程序,利用应用程序接口(API)调用来设置或从色彩管理系统400获取策略设置。
使用由色彩管理模块407定义的内插算法,色彩管理系统400为源设备415建立一表,并为目标设备417建立一表。色彩管理系统400通过公共工作空间值将两张表连接在一起并建立直接来自源设备415和目标设备417的组合表。色彩管理系统400于是通过组合表将源图像中的每个象素将值从源转换成目标。
色彩管理系统(例如,色彩管理系统400)通过允许用户监视、检查、询问、纠正、修改和/或忽略色彩管理工作流使得能够进行稳健色彩管理。通过使用瓶颈点,色彩管理系统向用户保证已经执行和将执行什么色彩管理、何时执行了和将要执行色彩管理,以及由谁执行了和将要执行色彩管理。瓶颈点被定义为某个操作预定的接触点,其中色彩对象数据的每个象素通过非常有限的固定的专用功能组中的一个功能来发送。在该实施例中,瓶颈点被实现为如题为Color Management System ThatEnables Dynamic Balancing of Performance with Flexibility专利申请中所揭示的,所述专利申请编号为003797.00696,于2003年10月10日提交,其中所述专利申请通过引用被全部包含于此。
图5说明了依照本发明的一个实施例,在系统配置层用于设置策略的对话框500。对话框500对应于用户选择系统标签501而被显示。其它配置层包含输入配置层(对应于标签503)、显示配置层(对应于标签505)和输出配置层(对应于标签507)。在其它实施例中,可以通过不同的配置指示器(例如无线按钮)选择不同的配置层。在该实施例中,系统配置层对应于系统策略层201,如图2中所示。用户可以通过选择“允许色彩管理”对象509来为系统整个地允许色彩管理。用户通过“低精度工作空间”对象513来指定低精度工组空间(小的工作空间)并通过“高精度工作空间”对象515来指定高精度工作空间(大的工作空间)。用户通过“保真”对象517来指定系统范围的色移。对象517提供的选择于先前讨论的质量设置一致。同样地,当导航通过不同的对话框时,描述的文本对象519提供用户帮助和指导。
在一些实施例中,对话500提供多个用户标签使得不能显示另一个对话框(未示出),其中相应的用户会输入只属于该用户而非其它用户的策略配置。这个能力在由多个用户共享的计算机系统中会是有用的。
图6说明了依照本发明的实施例在输入设备配置层设置策略的对话框600。对话框600响应于用户选择输入配置标签503和设备优先级标签601而被显示。其它优先级输入标签包括路径优先级标签603、格式优先级标签605和概况优先级标签607,如果被用户选中他们分别对应于对话框700、800和900。优先级输入指示符(对应于优先级输入标签)的优先级顺序(从最高到最低优先级)是“设备”,之后为“路径”,之后为“格式”,之后为“概况”。输入的图像在匹配较低优先级规则之前先匹配较高的优先级规则。
“输入设备列表”对象609是能够将图像传送到计算机,例如计算机110的设备列表。对象611显示从对象609选择的输入设备。“为这个输入设备启用色彩管理”对象621是为设备的全局设置。当对象621被清除后,所有其它的控制(未示出)被禁止,该设备不包含在应用于输入图像的规则组中。
“色彩管理”对象623指示色彩管理系统400是否无声地处理色彩管理或用户应该在运行时间被提示以作出色彩管理决定。如果对象623被设置为“手动”,标签上剩余的控制被禁止(未示出)。如图6中所示,当对象623被设置成“自动地(由策略)”,自动依照该政策确定色彩管理决定。
“带有概况的图像”对象613设置在遇到带有内嵌概况的图像时要做什么的策略。如果对象613被设置成“考虑概况”,色彩管理系统400从由图像的概况所是指出的色彩空间转换。如果对象613被设置成“分配”,色彩管理系统400忽略图像的嵌入概况并使用特定的概况代替嵌入的概况。
“不带概况的图像”对象615设置在遇到没有概况的图像时要做什么的策略。如果对象615被设置为“分配”,色彩管理系统400使用指定的文件并可以将来自分配的概况色彩空间的图像转换到工作空间。如果对象615被设置成“问我做什么”,色彩管理系统400在遇到该情况时提示用户。
“色移映射”对象617控制对话的主题元素怎么发生。选项的列表类似于(在这个实施例中是相等的)带有“使用系统设置”的附加选项的图5中所示的对象513和515中示出的选项列表。对象619提供关于对话框600的描述文本。
图7说明了依照本发明的实施例用于为与接入路径相关联的输入设备配置层设置策略的对话框700。对话框700响应于用于选择输入配置标签503和路径优先级标签603而被显示。对象713、715、717、719、721和723对应于图6中所示的对象613、615、617、619、621和623。“路径列表”对象701列出图像文件的可选路径。“增加路径”对象725允许用户向“路径列表”对象701增加路径。对话框700允许用户指示色彩管理系统400处理要与其它图像文件独立地处理的其它图像(例如摄影师图像库中的文件)。同样地,路径指定可以应用到网络图像设备。
图8说明了依照本发明的实施例用于为由格式类型表征的输入设备配置层设置策略的对话框800。对话框800响应于用户选择输入配置标签503和格式优先级标签605而被显示。对象813、815、817、819、821和823对应于图6中所示的对象613、615、617、619、621和623。“格式列表”对象801列出可选图像文件格式(可以被称为编解码)。格式类型包括TIFF(标签图像文件格式)、JPEG(联合图像专家组)和GIF(图形互换格式)。“增加格式”对象825允许用户向“格式列表”对象801增加格式。
图9说明了依照本发明的实施例用于为与概况相关联的输入设备配置层设置策略的对话框900。对话框900响应于用户选择输入配置标签503和概况优先级标签607而被显示。对象913、917、919、921和923对应于图6中所示的对象613、615、617、619、621和623。“色彩管理概况列表”对象1001列出了可以嵌入在图像文件中的概况。
图10说明了依照本发明的实施例用于为显示设备配置层设置策略的对话框1000。对话框1000响应于用户选择显示配置标签505而被显示。对象1019、1021、1023对应于图6中所示的对象619、621和623。“显示列表”对象1001列出了可以由用户选择的显示设备。所选显示设备在对象1003中被显示。对象1025使用户能够为所选显示设备选择相应的概况。此外,会提醒用户依照来自对象1027的选择周期性地重新校准显示设备。
图11说明了依照本发明的实施例用于为输出设备配置层设置策略的对话框1100。对话框1100响应于用户选择输出配置标签507和设备优先级标签1101而被显示。“输出设备列表”对象1107列出了用户可以选择的输出设备。对象1117、1119、1121和1123对应于图6中所示的对象617、619、621和623。对象1125、1127、1129和1131使用户能够指定是使用输出设备当前的概况还是指定另一个概况,或者当遇到这种情况时询问用户。
图12说明了依照本发明的实施例用于为与接入路径相关联的输出设备配置层设置策略的对话框1200。对话框1200响应于用户选择输出配置标签506和路径优先级标签1103而被显示。“输出路径列表”对象1205列出了用户可以选择的输出路径。用户可以通过“增加路径”对象1233增加路径或通过“删除路径”对象1235删除路径。对象1117、1119、1121和1123对应于图6中所示的对象617、619、621和623。对象1225、1227、1229和1231对应于图11中所示的对象1125、1127、1129和1131。
图13说明了依照本发明的实施例用于为由格式类型所表征的输出设备配置层设置策略的对话框1300。对话框1300响应于用户选择输出配置标签507和格式优先级标签1105而被显示。“输出格式列表”对象1305列出了用户可以选择的格式(类似于图8中讨论的格式)。用户可以通过“增加格式”对象1333增加格式或通过“删除格式”对象1335删除格式。对象1117、1119、1121和1123对应于图6中所示的对象617、619、621和623。对象1325、1327、1329和1331对应于图11中所示的对象1125、1127、1129和1131。
当对话框500-1300包含在不同配置层501-507(如图5-13所示)和策略层201-211之间(如图2-3所示)的映射,本发明的其它实施例可以使用配置层和策略层之间不同的映射。
图14说明了依照本发明的实施例使用编程接口调用色彩管理系统的请求组件1401。在该实施例中,请求组件1401是应用程序,虽然对于其它的实施例,请求组件1401可以被集成在计算机的外围硬件中或可以被集成在操作系统134中,如图1所示。
请求组件1401可以通过设置类似于图5-13中描述的策略设置(对应于对话框500-1300)的策略设置来配置色彩管理系统400,其中用户通过图4所示的用户界面413和配置模块411来输入策略设置。策略设置可以对应于图5-13中不同的对象,例如色彩空间和色移映射的规范。请求组件1401发送输入1403(图14中所示的实施例中的API调用SET(A,B))到色彩管理系统400。输入1403包含参数1409(对应于策略设置值)和参数1411(对应于相关联的配置层)。响应于输入1403,色彩管理系统400返回结果(对应于RETURN RESULT 1407),其中参数1413是指示策略设置值是否被成功地更新。
同样地,请求组件1401可以发送输入1405(该实施例中的API调用GET(A,B))到色彩管理系统400以获取策略设置的当前值。参数1409对应于策略设置的表示,参数1411对应于相关联的配置层。对应于输入1405,色彩管理系统400返回结果(对应于RETURN RESULT 1407)其中参数1413指示了策略设置的值。
图15说明了依照本发明的实施例使用程序接口通过中间组件1551调用色彩管理系统400的请求组件1501。如图14,请求组件1501发送输入(带有参数1509的输入1503和带有参数1515和1517的输入1511和1505)到色彩管理系统400。然而,输入通过中间组件1551发送,所述中间组件1551可以是另一个应用程序或实用程序。中间组件1551发送输入到色彩管理系统400。同样地,中间组件1551发送结果(RETURN_RESULT 1507)到请求组件1501,其中参数1513指示结果。
参见图14和15,输入1403、1405、1503和1505可以扩展到支持每个输入中的多个策略设置,其中参数1409、1415、1509和1515可以包含一参数设置列表,其中参数1413和1513可以包含每个相应的参数设置的结果的列表。
编程接口(或更简单,接口)可以被视作任一用于使得一个或多个代码段能够或接入一个或多个其它代码段提供的功能的机制、过程、协议。或者,编程接口可以被视为能够通信耦合到其它组件的一个或多个机制、方法、函数调用、模块等等的系统的组件的一个或多个机制、方法、函数调用、模块、对象等等。在先前的句子中术语“代码段”意在包括一个或多个指令或多行代码,并包括例如代码模块、对象、子程序、功能等等,不管所应用的术语或代码段是否分别符合、或代码段是否作为源、中间或对象代码提供、代码段是否用在运行时间系统或过程中、或它们是否位于相同或不同的机器上或分布在多个机器上、或由代码段所示的功能是否完全以软件、完全以硬件或硬件和软件的组合来实现。
概念上,编程接口一般可以被视为如图16或17所示。图16说明了第一和第二代码段通信所通过的渠道的接口Interface1。图17说明了包括接口对象I1和I2(它们可以是或可以不是第一和第二代码段的部分)的接口,它使得系统的第一和第二代码段能够经由介质M通信。按照图17的观点,人们可以将接口对象I1和I2视为相同系统的分开的接口,人们也可以视为对象I1和I2加介质M组成接口。虽然图16和17示出了双向流和流每端的接口,某些实现可以只在一个方向有信息流(或如下所述没有信息流)或只在一端有接口对象。通过举例而非限制,诸如应用程序编程接口(API)、接入点、方法、功能、子程序、远程过程调用和组件对象模型(COM)接口等术语包含在编程接口的定义中。
这种编程接口的方面可以包括第一代码段发送信息(其中“信息”被用在其最广的义上并包括数据、命令、请求等等)到第二代码段的方法;第二代码段接收信息的方法;以及信息的结构、顺序、语法、组织、方案、定时和内容。在这点上,只要信息是以由接口定义的方式传输的,底层传输介质自身(介质是有线的还是无线的或两者的组合)对接口的操作可能是不重要的。在某些情况下,信息可能不在传统意义上的单向或双向传递,因为可以通过另一种机制(例如置于缓存、文件等中的信息从代码段之间的信息流被分离)进行信息传递或当一个代码段简单地接入由第二代码段执行的功能时不存在。在给定的情况下,任一或所有这些方面可以是重要的,例如根据代码段是否是松耦合或紧耦合的配置中的系统的一部分,因此这个列表应该被认为是说明性的而非限制性。
编程接口的概念为那些本领域的技术人员所熟知,并且可以从前述的本发明的详细描述中清楚地认识到。但是,还有其他的方法来实现编程接口,并且,除非特别排除,这些也规定为被在此说明书末尾阐明的权利要求所包括。这种其他方法可能会比图16和图17中过分简单的观点表现得更繁琐或复杂,但是它们表现出相似的实现相同全部结果的作用。我们现在简要地描述编程接口的一些示例性的可选的实现。
从一个代码段到另一个代码段的通信可以间接通过将通信拆分为多个不连续的通信来完成。图18和图19中图示地描述了这一点。如所示,一些接口可以按照可分的一组功能性来描述。这样,图16和图17的接口功能性可被因式分解来获得相同的结果,正如一个可以算术方式提供24,或者2乘2乘3乘2。相应地,依据图18所示的,在获得相同结果的时候,由接口Iterface提供的功能可再划分,将接口的通信转换为多个接口:接口1A、接口1B和接口1C等等。如图19所示,当获得相同结果时,由接口I1提供的功能可再划分为多个接口I1a,I1b和I1c等等。类似的,从第一个码段接收信息的第二个码段的接口I2可被因式分解为多个接口I2a,I2b和I2c等等。因式分解的时候,第一码段包含的接口的数量不需要和第二码段包含的接口的数量相匹配。在图18和图19的任意一个中,接口Interface1和接口I1的主要功能分别和图16和图17中的主要功能是相同的。接口的因式分解可遵循结合率、交换率和其他数学特性,这样因式分解可能会难以被识别。例如,操作的次序会变得不重要,因此,被一个接口执行的功能,可以通过另一段代码或代接口或者由该系统的一分开的元件执行的方式,在到达这个接口之前被执行好。此外,一个在编程领域的普通技术人员可以理解,有多种进行不同函数调用并获得相同结果的方法。
在一些情况下,可能能够忽略、增加或重新定义编程接口的某些方面(例如参数),而仍旧达到期望的结果。这在图20和21中示出。例如,假设图16的接口Interface1包括一函数调用Square(input,precision,output),包括三个参数的调用,输入、精度和输出,这是从第一代码段到第二代码段得出的。如果在给定情况下,中间参数精度是无关紧要的,如图20所示,那么它可以被忽略或甚至放置一没有意义(在这种情况下)的参数。人们也可以增加一无关紧要的附加参数。在任一情况下,只要输入被第二代码段平方后返回输出就可以完成平方的功能。对某些下游处理或计算系统的其它部分,精度很可能是有意义的参数;然而,一旦认识到对计算平方的有限目的而言精度不是必须的,它就可以被替换或忽略。例如,诸如生日日期等无意义的值而被传递而非传递有效的精度值,而不会不利地影响结果。相似地,如图21中所示,接口I1有接口I1’替换,重新定义以向接口忽略或增加参数。接口I2可以类似地被重定义为I2’,重新定义为忽略非必须的参数或可以在其它地方处理的参数。这里的要点是在一些情况下,编程接口可以包括诸如参数等对于某些目标非必须的方面,因此它们可以被忽略或重新定义,或为了其它目的在另外的地方处理。
将一些或所有两个分开代码模块的功能合并使得它们之间的“接口”改变形式是可行的。例如,图16和17的功能可以分别被转换成图22和23的功能。在图22中,起先图16的第一和第二代码段可以被合并到包含这两者的模块中。在这种情况下,代码段仍旧可以互相通信,但接口会改变成更适于单个模块的形式。因此,举例而言,不再需要格式调用和返回语句,但是依照接口Interface1的类似处理或响应仍然有效。相似地,如图23所示,来自图17的接口I2的部分(或全部)可以被内嵌地写入接口I1以形成接口I1”。如所示的,接口I2被分成I2a和I2b,接口部分12a与接口I1内嵌地编码以形成接口I1”。对于一个具体的例子,假设来自图17的接口I1执行函数调用square(input,output),它由接口I2接收到,它在处理后由第二代码段将该值和输入一起传递(以对其作平方),平方后所得的结果与输出一起传递回来。在这种情况下,由第二代码段(平方输入)执行的处理可以由第一代码段执行而无需对接口的调用。
从一个代码段到另一个代码段的通信可以间接通过将通信拆分为多个不连续的通信来完成。图24和图25中图示地描述了这一点。如图24所示,提供一个或多个中间件(分离接口,由于它们分离来自原接口的功能和/或接口功能)用于转换第一接口Interface1上的通信使得它们符合不同的接口,在这种情况下为接口2A、接口2B和接口2C。问题是改变了第二代码段原始的接口,使得它不再与第一代码段使用的接口兼容。因此使用中间物来使得旧的和新的接口兼容。相似地,如图25中所示,第三代码段可以用分离接口DI1来引入以接收来自接口I1的通信和分离接口DI2引入以发送接口功能,例如,接口I2a和I2不被重新设计与DI2一起工作,但提供相同的功能性结果。相似地,DI1和DI2可以一起工作来翻译图17的接口I1和I2的功能到新的操作系统,而提供相同的或相似的功能性结果。
还有另一个可能的变化是动态地重写代码以用某些其它的东西来代替接口功能,而达到相同的总体结果。举例而言,可能由一系统,其中出现在中间语言中(例如,Microsoft IL,Java ByteCode,etc.)的代码段被提供给执行环境中的Just-in-Time(JIT)编译器或或翻译器(诸如由.Net框架、Java运行时间环境或其它类型的运行时间类型环境提供的)。可以写JIT编译器以动态地转换从第一代码段到第二代码段的通信,即使它们符合可能由第二代码段要求的不同接口(或者是原始的或者是不同的第二代码段)。这在图26和27中描述。如图26中所示,这个方法类似于上述的分离情况。在例如安装的应用程序基础被设计成依照接口1协议与操作系统通信的情况下可以完成这个,但是接着操作系统被改变成使用不同的接口。JIT编译器可以被用于使得传输中的通信从符合基于安装的应用程序转换为操作系统的新接口。如图27所描述的,动态重写接口的这种方法可以被应用到动态地因式分解或者否则的话也可改变接口。
也应该注意上述通过可选实施例用于与一接口达成相同或类似结果的情况也可以以各种方式(串行和/或平行或用其它中间代码)组合。因此,上述可选实施例不是互相排斥的并可以被混合、匹配和组合以产生与图16和17中示出的一般情景相同或等价的情景。也应该注意,因为对于大多数编程构造,有类似的达到相同或类似接口功能的方式,在这里可能未作描述,但是它们被本发明的精神和范围表示,即应该注意至少部分由接口表示的功能和由接口启动的优势结果成为接口的值的基础。
虽然本发明关于特定的例子而描述,包括当前优选的实现本发明的模式,本发明的技术人员会理解上述系统和技术有无数的变形和改变落在所附权利要求所提出的发明精神和范围之内。