提高数字图像的可移植性的制作方法

文档序号:7586743阅读:137来源:国知局
专利名称:提高数字图像的可移植性的制作方法
背景技术
本发明领域本发明通常涉及数字成像领域,尤其是对可能处于不同自然格式的数字图像进行打包并把它们转换成通用格式的技术。
相关技术诸如数码相机之类的数字成像设备使用日益增多,为个人计算机(PC)工业和摄影工业的结合创建了一个前所未有的机会。数码相机生成的图像非常适合PC使用,这使得数码相机和个人计算机的联姻看起来非常完美。然而,这个联合存在一个明显的障碍。
在数字摄影行业当前的实际是生产商彼此独立地发展数码相机。这种情况不可能改变。每一种这样的新相机一般都绑定一个全方位集成、允许在主机处理系统查看图像的软件包。该软件专门为那种相机工作设计,而不兼容支持其它类型或其它生产厂商的数码相机。在生产厂商之间几乎没有就相机如何存储数码图像、在存储它们之前应如何处理以及主机系统(例如PC)如何处理它们等方面达成协议。
在设备和主机之间传输图像的标准方面最接近的传统尝试是Twain驱动程序。Twain驱动程序是一个为应用程序提供从成像设备中收回数字图像的标准接口的软件模块。该模块将来自成像设备的自然格式图像转换成应用程序所使用的一些通用格式。这些通用格式的例子包括红、绿、蓝(RGB)位图和微软公司定义的设备无关位图(DIB)。
不同类型的数码相机经常使用不同的自然格式存储数字图像。给定的设备、自然格式和主机操作系统(OS)的组合所特有的Twain模块能存储在数码相机上。然后该Twain模块能和图像数据一起传送到每一新主机。然而由于数码相机的存储器资源有限,在数码相机上存储这样的模块是不切实际的。同时,这样的模块直接和主机操作系统相互作用,因为在相机中的病毒可能会传播到主机系统中,因此会造成一个安全危险。最后,Twain模块一般用一个特定的主机处理器所特有的代码编写,这使得Twain方案不能真正可移植。
因此希望有这样一种技术,它允许不同类型、以不同自然格式存储数字图像的成像设备与一个主机系统相连,并允许以主机所通用的格式来查看或处理这样的图像,而不必还载入一个体积庞大的设备-专用Twain驱动程序到主机系统中。
概述本发明的一个实施例涉及一种成像设备,它具有用来生成传感器数据的图像传感器和用来存储图像对象的存储器。图像对象具有与传感器数据有关的图像数据,和由一抽象机执行以获得基于上述图像数据的转换图像数据的图像方法。
结合下面的详细描述、权利要求书和附图,本发明一个实施例的上述简要概括特征,以及其它实施例的其它特征和优点将阐述得更为清楚。
附图简要说明

图1是根据本发明一实施例的成像系统的总体系统视图。
图2表示了依据本发明另一实施例为提高数字图像的可移植性而执行的步骤。
图3表示了包括依据本发明另一实施例对软硬件进行配置的主机处理系统。
图4表示了包括依据本发明另一实施例对软硬件单元进行配置的成像设备的局部。
详细描述象上面简要概述的那样,本发明的一个实施例使诸如数码相机等成像设备的制造商能够选择它们自身的自然格式来捕获和存储数字图像数据,而且同时也不必使主机系统具有用于生成图像的特定成像设备的具体知识。图像数据作为对象的一部分进行存储。因此,每一幅图像,不是以图像文件表示,而是作为传统意义上的面向对象软件中图像对象的一部分打包。图像对象包含图像数据和一种相关方法。这种方法是支持从自然格式向一种通用图像文件格式转换所需要的信息。每一种方法都定义了其相关图像数据自然格式所特有的转换。
主机系统中解释并执行图像方法的软件对所有的主机处理系统都可能会变成通用的,而不管硬件和操作系统,并能独立于成像设备而进行开发和分布。这样的软件实际上是诸如虚拟机之类的对象执行环境。由于在虚拟机和接收的图像数据之间没有依赖关系,新的和不同的成像设备可以不依赖于通用格式和应用软件的发展而独立进行开发。通用格式也消除了应用程序开发者识别和处理当前使用的不同图像文件格式的需要。图像对象使得成像设备制造商从不得不确定何为成像设备上存储图像的最佳方法、或是何为处理它们的最佳方法中摆脱出来。这样的解决方案是特别有益的,因为在虚拟机和/或通用图像文件格式中的转换或改进与在成像设备或应用软件中的转换相比,出现的可能要少得多。
图1表示本发明各种实施例的总体系统视图,其中图像对象先在不同的成像设备104a、104b和存储设备110中形成或存储,然后被传送到主机系统102中。每一对象108a、108b或108c包含至少一个数据部分,它是以用来捕获图像数据的特定类型成像设备的自然格式所表示的图像数据。例如,设备104a可以是一个扫描仪,用来生成一个表示用该设备获得的单一图像的对象108a。比较起来,设备104b可能是一个数码相机,用来生成一个单一对象108b,它具有两个数据部分114b1和114b2表示两幅静止图像。
一旦对象传送到主机系统102,它们的方法就被抽象机120解释和执行,从而得到数据文件116a(来自于对象108a)、116b1和116b2(来自于对象108b)、和116c(来自于对象108c)。这些文件将包含以预定义的通用格式表示的数字图像。然后由应用程序124访问这些数据文件从而操作或显示每一数据文件中的图像。可以将应用程序124设计用来进一步地把图像转换成其它多种文件格式之一,包括联合摄影专家组格式(JPEG)、图形交换格式(GIF)、可互换的文件格式(IFF)、标记图像文件格式(TIFF)。为方便起见,接下来的讨论将仅仅涉及设备104a、对象108a和相关的数据和方法114a、115a之间的交互作用。然而,还必须认识到该讨论并不仅仅局限于这一实施例,还可以应用到其它可供选择的设备、对象、数据和方法,并包含如图1中所示的那些部分。
将在图1的系统实施例中所执行的步骤在图2中表示出来,有助于更好地认识到在本发明实施例和使用Twain模块从设备传送图像数据到主机的传统技术之间的一些差异。依据本发明一实施例生成并传送可移植图像数据的技术可以从图2的步骤204开始,捕获原始传感器数据。根据与诸如数码相机等成像设备有关的公知技术这是可以实现的。接下来,在原始传感器数据的基础上形成预定义自然格式的图像数据114a。在一实施例中,如步骤208所示,由成像设备104a根据传统和/或专用操作,如噪音去除、颜色插值、图像压缩和对所获得的期望自然格式数据进行缩放等,对原始传感器数据进行处理。作为选择,可以跳过步骤208而不对原始传感器数据进行有效处理。在那种情况下,认为原始传感器数据是处于自然格式的。在步骤208中处理的数量涉及随后讨论的潜在性能权衡。然后以步骤212继续进行操作。
在步骤212中,成像设备104a形成一个包含图像数据114a和相关图像方法115a的对象108a。图像方法115a是一个由抽象机120执行、用来把图像数据从自然格式转换成预定义通用格式的程序或是指令列表。方法115a是以抽象机120的指令集为基础的。在大多数情况下,因为能够对抽象机的指令集进行优化以适应于图像处理,以及能够将如存储器分配等资源分配建立到抽象机120中而不是在方法中,因此都希望该方法能够比传统的Twain模块小得多。
在成像设备中已经形成图像对象108a以后,图2中的操作继续进行,将对象传送到主机系统。这可以通过使用诸如有线连接等适于传送图像数据的公知通信介质,或是诸如非易失性存储卡等可移动的存储设备110来实现。
介于通信介质和主机系统的抽象机120之间的接口是对象驱动程序122。对象驱动程序122在主机系统102中用适当的硬件和软件(包括操作系统)进行通信从而使对象108a可以用于抽象机中。对象驱动程序装入处于本机的OS下的抽象机,并最终使它能够执行该方法。在一实施例中,对象驱动程序122包含用来检索那些依据标记图像文件格式(TIFF)进行配置的文件的、公知的软件驱动程序。TIFF是一种用来在PC机和Macintosh计算机上存储位映像图像的通用格式,并能够被用来执行对象108a。其它用来执行对象108a及其相关驱动程序122的技术可以象本领域普通技术人员所公认的那样使用。
加载程序(未显示)将该方法载入到抽象机中并传送其向图像数据一指针。在步骤220中,加载程序还识别图像对象的一定信息组,如图像数量等,并重复初始化抽象机从而依次处理每一幅图像。这会使图像数据114a被转换和处理成通用格式的转换图像数据。转换数据通常放于独立数据文件116a中,并可以存储在如硬盘驱动器等大存储设备中。然后这个数据文件116a可以更进一步地被应用程序124处理成期望完成的形式。
从整体系统的观点已经对本发明一实施例进行了描述后,图3和图4说明了本发明的其它实施例,如成像设备104a和主机系统102。图3是主机处理系统102的一个实施例,它包含有为接受和处理图像对象108a而进行配置的软硬件。这个特殊实施例集中在总线332上并连接有一个处理器334。系统102可以是一个传统的具有Intel处理器、微软窗口图形用户界面和操作系统的个人电脑。尽管在存储器328中,操作系统软件340、对像驱动程序122和抽象机120示为独立载入的,但是本领域普通技术人员将会意识到这些软件组成部分有时可以全部或部分结合,并分布在存储器328、大存储设备338(如磁转盘)和如光盘等便携式存储器(未显示)之间。
处理器334执行在存储器328(如随机存取存储器(RAM))和大存储设备338中存储的指令。存储器328是任何一种机器可读介质如半导体集成电路,当其上加载的指令被处理器334执行时会引起对主机处理系统102的配置步骤,从而接受和处理来自不同成像设备和存储设备的对象。
主机处理系统102还包括一个通信接口316,它遵守任何一种传统计算机外围总线标准,包括RS-232串口、通用串行总线(USB)、和IEEE标准1394-1995。除了经由实线进行通信以外,还试图将无线通信介质例如红外线或射频用于数据传输。作为通信介质的另一种选择,可以考虑使用许多不同的可移动存储设备,包括个人电脑存储卡国际协会(PCMCIA)、英特尔公司的闪速小型插件和其它任何一种适于传送数字图像数据的非易失性存储介质。
图3中主机处理系统102还使一用户显示设备接口342有特色,如一个图形适配器插件,它能连接任何一种传统的显示设备,包括阴极射线管(CRT)、液晶显示器(LCD)、以及其它任何一种适于观察电子图像的显示技术。当然,主机处理系统102也可以附加的接口(未显示)用来执行附加的I/O(如网络接口控制器)为特色。
已经对本发明一系统实施例中的主机部分进行了讨论之后,图4说明了包含软硬件部分的成像设备104a。图4的实施例是再次基于总线432的,对其连接一处理器424和存储器428。作为选择,可以用微控制器来取代处理器424和存储器428。存储器可以是一诸如半导体集成电路RAM的机器可读介质,或者是一诸如只读存储器(ROM)的非易失性半导体存储器。存储器428载有处理器424执行的指令,从而使图像数据114a和方法115a结合起来作为图像对象108的一部分(见图1)。这样的指令在图4集中表示为对象形成软件412。通常图像方法115a可以象下面描述的那样发展成为一个独立的软件部分。
存储器428还可包括可选的信号处理软件408,用来将从图像传感器404处接收的原始传感器数据处理成为自然格式的图像数据114a。在处理原始传感器数据时为获得更好的性能,图像处理逻辑电路436还可以被包含在成像设备104中。可以将逻辑电路436集成在图像传感器404的电路小片中,在一实施例中该传感器可以是互补型金属氧化物半导体(CMOS)活动象素传感器。
尽管没有在图4中显示出来,存储器428还可存储由处理器424执行的软件,用来访问接口416和420从而和成像设备104a的外部设备进行通信。至通信介质的接口416遵守前面关于主机系统方面已经讨论过的计算机外围总线标准。同样,接口420可以连接一个可移动的存储设备,如闪速存储卡用于对图像对象108a的非易失性存储和传输。
图4中本发明实施例利用一个主要基于软件的处理器和总线结构来形成和传送图像对象108a到主机系统102。作为选择,也可以是一个主要基于硬件的结构,以门阵列和专用集成电路(ASICs)为基础,在形成和传输图像对象108a方面执行与前面描述相同的功能。
抽象机和图像对象此次公开的剩余部分讨论了用来执行图像对象108a和抽象机120的技术,包括一组可以用来构造图像方法115a的指令。
如前面讨论的那样,对象108a可以实施成一标记图像文件格式(TIFF)/电子摄影(EP)结构或文件。TIFF文件包括一个文件头,其指向图像数据114a和相关方法115a的位置。TIFF文件和它的文件头能够被对象驱动程序122访问,并能够用在抽象机120中。
开发图像方法115a的过程可以由成像设备104a的开发者从对预定义自然格式和通用格式进行比较开始。开发一种算法用来将图像数据114a从自然格式转换成通用格式。这样的算法要么是众所周知的,要么是很容易被本领域普通技术人员开发出来的。然后可以通过使用高级编程语言例如C语言和/或如下所述的抽象机120低级指令集在程序中实现该算法。然后对该程序进行测试和选择性优化。然后将该程序编译成表示低级指令的字节码。这就成为所期望的图像方法115a。然后将该方法存储在成像设备104a上的非易失性存储器(如存储器428)中,做为对象形成软件412的一部分(见图4)。
驻留在成像设备104a中的图像对象108a所需的储存开销与在存储空间非常宝贵、诸如数码相机之类的便携应用有关。该存储空间依赖于,(1)用于将图像数据114a从自然格式转换为通用格式的处理过程的数量或复杂程度,以及(2)自然格式数据114a的大小。通过选用在计算上接近于预定义通用格式的自然格式,图像方法115a就变成简单数学或数据移动指令的相对简短列表。相比较而言,如果需要将图像数据114a从一个高压缩的自然格式(如JPEG或分形技术(fractal technology))解压成为通用格式,方法115a就可能会相对较大。在后面的情形中,任何通过压缩图像数据而获得的存储空间收益会被解压图像数据所需的更复杂和更长的方法所抵消。
着眼于储存空间的考虑,以构成每种方法为基础的抽象机指令集需要高度的优化。例如,隐含在抽象机120中使用的输入缓冲器(用于接收图像数据114a)和输出缓冲器(用于存储通用格式的转换数据)的位置。地址计算和大部分的数据移动可以通过抽象机120,而不是通过图像方法115a中的特定指令来隐含实现。因此,该方法仅仅需要关注将其相关的图像数据114a转换成通用格式所需的算法。
除了优化指令集以保持图像方法115a的紧凑之外,另一种节省成像设备上存储空间的方法是关联一份方法115a的拷贝和多套的图像数据,如图1中的对象108b所示。以这种方式,单个图像对象108b包含图像数据114b1和114b2中的多个图像,这实际上变得类似于传统胶片的卷动,其中执行方法115b大致相当于生成胶片。
除了存储空间以外,对于成像设备厂商而言另一个需要考虑的可能是在图像处理方法中保护知识产权。这些处理可能在原始传感器数据上执行以提高最终图像的质量,例如插值彩色滤光器阵列模式。γ矫正,白色平衡算法。成像设备104a的厂商可能希望让关键的图像处理功能在成像设备内部执行,而不是将这些图像处理算法植入方法115a中,这样当对象108a传输给主机系统102时,这些算法会暴露给潜在的竞争对手。这会导致图像数据114a是原始传感器数据的强烈处理版本。取这到一极端,那些希望强烈保护他们图像处理技术的厂商可能会在图像设备里面包含所有的这些处理过程,从而导致他们的图像数据114a已经是通用格式。在那种情况下,相应的方法115a仅仅需将数据114a拷贝到主机系统102的输出缓冲器中。在另一极端,在把图像数据114a打包成对象108a之前对原始传感器数据只不过没有进行任何处理,从而使成像设备104a中的图像处理过程保持绝对最小。方法115a将会定义所有需要用于得到通用格式的处理过程,以及在主机系统中抽象机120执行所有的这些处理过程以获得通用格式的图像数据。
虚拟机结构抽象机120的一个例子为虚拟机。虚拟机是一自主式的操作环境,其行为类似于执行图像方法115a的单独计算机。虚拟机帮助主机系统隔离接收对象108a中可能存在的任何病毒。虚拟机可以有一个指令集、寄存器集和与主机处理系统102的硬件平台无关的存储器模型。一个可用的具有公知的解释器、编程语言和相关工具的虚拟机的例子是JAVATM虚拟机和编程语言。
一般而言,虚拟机必须进行优化以允许为图像方法115a编写相对小的代码。其他需求的特征为一个简单的虚拟机接口和快速的代码编译,用例如已知的及时代码转换技术来解释方法115a。虚拟机应允许动态存储器分配在执行方法115a时为临时数据存储创建缓冲区。这样在方法115a中用于存储器管理所需的开销能够最小化。同样的,主机系统102必须具有相对于图像对象108a的需求而言足够的可用资源(例如,存储器),这样主机系统能够同意图像对象108a的任何合理请求。
同样必须给出虚拟机的指令集。对于图1中和成像技术有关的实施例而言,指令集必须为图像处理进行优化。例如,可以不需要用于处理字符串、多任务执行或图形用户界面的指令。指令集必须设计成具有足够的灵活性来允许将图像数据114a从几个不同的自然格式转换成一通用格式。虚拟机提供的任何功能及其指令集必须假定不了解能够用于存储图像数据114a的任何自然格式。
对于指令集还有一个考虑是支持一个具有相对较深堆栈的面向堆栈流控制(调用/返回/入栈/出栈)。例如,执行虚拟机的主机系统102有能力为扩展的虚拟堆栈提供足够的资源,使之能够处理对象108a任何合理的堆栈用法。除此之外,虚拟机必须提供编程约束如果主机系统102可利用的话,就能够利用并行处理支持的优点,这是因为对于图像处理算法而言,并行处理是一个关键的性能提高因素。最后,虚拟机同样提供灵活的异常处理,对每一个可能的异常提供已定义的缺省行为。同样期望支持高级流控制(if/for/while/case)来尽可能地简化编程和最小化对象108a中流控制的开销。在把一个类型的变量造型成另一类型时,灵活的类型检测是另一个必要特征。
示范虚拟机-虚拟图像处理器在一实施例中虚拟机可以是下面所描述的虚拟图像处理器(VIP)。在该实施例中,由于没要求用户干预,VIP没有考虑传统的I/O支持。VIP仅仅是将图像数据114a作为自然格式的输入来进行处理,以及生成图像数据作为通用格式的输出。主机系统102通常提供用于这样一个任务所需的存储器资源,从而使图像对象108a的程序设计者不需要准确知道存储器资源是如何提供的。
从下面的描述中可以清楚看出,VIP的指令集和传统硬件微处理器的指令集毫无相似之处。这一部分是因为希望减少方法115a的代码大小,还因为非常强调图像数据114a的数学处理过程。VIP的指令集应允许图像处理所需要的操作给定尽可能少的空间。例如,由于相对大量的有关复杂性已建立在VIP中而不是在指令集中,流控制指令与传统微处理器中的相比要极大地简化。因此一个单一指令能够触发在传统硬件微处理器中实现起来非常复杂的事件。同样,用于VIP的指令可以有不同数量的操作数,并蕴涵远远多于他们在硬件微处理器中所蕴涵的内容。数学表达式不需要分解成一连串的,使用一组有限物理寄存器的分离数学操作的数据移动指令。相反的,表达式直接在图像方法115a中表示并由VIP解释。赋值表达式可表示为一个目标寄存器跟随一以逆波兰计数法(RPN)表示的表达式。因此运算符以表达式的一部分而不是以机器指令的形式直接编码到图像方法115a中。管理类型安排和自动转换的规则可隐含在任何表达式中。
在本实施例中打算有七种程序控制指令和五种数据操作指令。

程序控制指令用于指示程序执行流。不象在传统的微处理器中那样,这儿没有大量的条件分支指令。同样的,这儿具有对索引跳转的直接支持(相对应于c编程语言中的switch语句)。目标地址长度依赖于方法115a的总的长度是可变的。
数据移动指令实际上做转换和处理图像的工作。在一实施例中,没有指令直接执行数学或逻辑运算,因为这些运算嵌入在和每个指令相关的运算对象列表中。同样的,不象传统的微处理器那样,一个指令的运算对象列表可具有不同数量的运算对象。
push指令将一个数据变量压入数据堆栈中。注意数据堆栈不同于程序流控制堆栈。Push指令只能用于将单独的简单数据类型压入数据堆栈中。也就是说,它不能用来将整个数组压入堆栈中。Push指令的格式是一个运算符后面跟随表示要压入堆栈的数据的数据变量索引。数据变量的类型和大小编码在操作对象中。
pop指令从数据堆栈中弹出一数据变量。相关的数据变量并不需要和原先压入堆栈的数据具有相同的类型。如果变量类型和现在堆栈顶部的数据类型不匹配,根据用于定义方法115a的高级编程语言的管理类型造型的相同规则会执行自动的类型造型。
move指令将数据从它的源头传送到目的地,可选地计算在源内进行编码的表达式的值。那就是说,源不需要是一个单独的变量,它可以是用逆波兰计数法(RPN)编码的任意复杂的表达式。
creat指令动态地创建一个新的数据变量并分配给该变量一个标记。创建的变量可以是单个基本数据类型或者一基本数据变量的数组。destroy指令释放由create指令为数据变量分配的存储器。用于定义方法115a的高级编程语言的编译器可使用create和destroy指令来管理方法115a的子程序中所使用的自动变量的动态存储器。这不同于C编程语言中使用堆栈来创建自动变量的正常实践。因为VIP的目的不是为了象物理微处理器一样的执行,所以不需要任何硬件堆栈的推论。
VIP高级语言由于VIP指令集为用于图像处理器的虚拟实现进行了优化,VIP中的低级编程语言如汇编语言可与微处理器中的传统汇编语言完全不同。由于上述讨论的适合成像优化的内在限制,它也不可能实现高级语言如C或C++的完整版本用来定义方法115a。因此一个适当的折衷办法可以是C语言的子集。利用这样一个C的子集为VIP所写的程序可没有连接步骤。反之,它们可以作为一个单一文件或者是作为一系列的包含文件(最终是一单一文件)进行编译。
说明允许的数据类型和上述讨论的指令集一起使用。指针指向一定义的类型(即没有无效指针)。指向指针的指针是允许的,但是不能超过双重间接。多维数组和传统C语言中的说明相同。typedef和struct说明符就像期望的一样。复杂的数据类型如struct能够用来作为数组元素。某些传统功能如位字段在VIP实施例的上下文中实际上是没有意义的,因此为简化起见是不允许位字段的。
类型限定语在VIP中是允许const类型限定语的,但是由于在VIP程序(即方法115a)范围之外的任何进程中变量都是不可见的,因此易失的限定语是没有意义的。用来处理复杂数据类型如struct的技术在方法115a中没有给出,但是可以从编译的VIP代码结构定义推理得出。这是VIP和传统微处理器之间的主要差别,例如<pre listing-type="program-listing"><![CDATA[Struct{double real_part;double imaginary_part;}complex[10];short index=1;complex[index].real_part=0.0]]></pre>使用传统的编译程序,上述代码段中所示的赋值语句可以被分成一系列指令,在它组成部分已知位移的基础上从它的基本地址计算结构字段的地址。然而,由于每一数据项指定了一个唯一的ID号,因此用VIP对线性地址空间没有直接的推论。数据项在存储器中可以是连接的,也可以是不连接的。VIP将复杂数据类型引用归结为一个单一ID号从而唯一区分所要求的变量。VIP能够在ID号和数组索引间进行区分,所以不会造成含糊不清。前面的例子是一个数组结构,每一结构包含两个数据项。在编译之后,可以表示为double real_part[10];double imaginary_part[10];这将导至等价的赋值语句real_part[index]=0.0;在这种方式下,编译程序能够将结构定义和引用分成与VIP使用的存储方案相适合的基本类型。
存储类象上面描述的那样,复杂数据类型的结构在数据中而不是在可执行代码中装入,且数据存取利用引用而不是地址计算来实现。在VIP实施例中有两个例外输入数据缓冲区用来接受图像数据114a,输出数据缓冲区用于保持转换后的图像数据。在源文件编译形成方法115a的同时定义这些连接字节数组的大小。它们可以利用标准C语言中没有包括的存储类从其它的存储类型中区分出来。
有一输入缓冲区和一输出缓冲区。任何用输入存储类进行说明的变量都指的是输入缓冲区。任何用输出存储类进行说明的变量都指的是输出缓冲区。所有用这些存储类中之一来定义的类型都映射到各自的存储器数组,对于它的开始部分。在对方法115a给予VIP控制以前,由加载程序设置两个专用变量input_size和output_size。它们定义了各自缓冲区的字节长度,并且能在方法115a中没有首先声明的情况下使用(它们通过定义是有效的)。在这个方面它们类似于标准C语言中定义的argc和argv变量该变量对VIP是无效的(它们是无意义的服务)。使用这些存储类和专用变量,程序员能够将任何一种数据类型映射到输入或输出缓冲区。例如<pre listing-type="program-listing"><![CDATA[input unsigned integer raw_data[input_size/4];//Declares an array of integers representing the entireraw image from image data 114a;input float raw_fdata[input_size/4];//Declares an array of floats representing the entire rawimage from image data 114a.]]></pre>变量raw_data[n]和raw_fdata[n]指的是相同的数据,但是可以被解释成不同的类型。
单一方法115a能够通过有装入程序为每幅图像初始化输入、输出缓冲区和大小变量来处理多幅不同尺寸的图像。因为成像设备104a生成通用格式的图像,因此最简单可行的图像方法将是直接复制输入缓冲区到输出缓冲区。例如<pre listing-type="program-listing"><![CDATA[main(){ input byte raw[input_size];output byte finished[output_size]; finished=raw;}]]></pre>注意该赋值语句对C++类赋值语法的相似性。这种对标准C语法的偏离是为了允许隐含并行处理。
数组在赋值语句或表达式中使用的,没有明确的索引的任何数组类型意味着操作在整个数组上进行,并且在数组元素之中没有数据相关性。考虑下面的代码片断short x[256];short y[256];x=y*1.414;这会将在y数组中的每一个单元乘以常数1.414并把结果赋给在x数组中相应的单元。如果数组的大小不匹配,操作会对较小数组中单元的个数进行循环。隐含在其中的是如果可能操作和赋值可以并行执行。该语句意味着没有特定的索引排序。一个相同的标记可以是x[]=y[]*1.414;这允许多维数组对某一维能够并行处理,如果需要的话。例如const short column=640;const short row=480;unsigned byte image[column][row];image[][12]=255;该代码片断会把值255赋给在图像数组12行中的所有单元。当为传统的微处理器编译该类型的高级代码时,编译器会生成一连串的机器指令来显式执行在语句中隐含的循环操作。然而VIP编译器,只是简单地记录一个隐含循环操作和需要的所有相关参数,VIP本身进行必须的索引重复。这会以性能为代价来减少在方法115a中存储代码的大小。这种权衡是可以接受的,如果安装VIP的主机系统102的性能足够以一个可接受速率来执行所需的功能。
总结而言,本发明的各种实施例可以描述为利用图像对象概念来提高静态图像数据可移植性的技术。可以预计所述的图像对象和抽象机技术可以适用于其他类型的,同样是相干的和有界的数据,例如某些类型的音频和视频。在那些例子中,图像方法可被通常用于压缩和解压缩音频/视频序列的音频/视频代码所替代。
上述本发明的实施例当然服从于在结构和实现方式的其它变化。例如,虽然图1说明在每一个成像或存储设备中有一个单一的对象,这样做仅仅是为了在给定实施例中简化说明本发明是如何工作的。的确,在本领域的一般技术人员都会明白每个设备可以创建多个对象并在需要时传输给主机系统以表示由每个设备生成的多个图像。同样的,对于如图3和4所示的计算结构会有许多其他的变化是可能完成图像捕获和图像对象格式。因此本发明的范围不由所述的实施例确定,而是由附加的权利要求和这些权利要求合法的等效方式说明来确定。
权利要求
1.一产品包括一个机器可读介质,具有的指令被处理器执行时会引起以下步骤使第一图像数据和第一方法相关联作为图像对象一部分,第一方法由一抽象机执行从而以第一图像为基础获得第一转换图像数据。
2.如权利要求1所述产品,其中机器可读介质进一步包含指令,该指令在被处理器执行时会进一步引起以下步骤使第二图像数据和第一方法相关联作为对象一部分,第一方法由抽象机执行从而以第二图像数据为基础获得第二转换图像数据。
3.如权利要求1所述产品,其中机器可读介质进一步包含的指令在被处理器执行时会引起以下步骤使第二图像数据和第二方法相关联作为第二对象的一部分,第二方法由抽象机执行从而以第二图像数据为基础获得第二转换图像数据。
4.如权利要求1所述产品,其中第一转换数据与第一数据的格式相同。
5.一产品包括一个机器可读介质,具有指令,该指令在被处理器执行时会引起以下步骤对一数据处理系统进行配置,分别接收来自第一和第二成像设备的第一和第二对象,该对象具有第一和第二图像数据和相应的方法;以及一抽象机执行每一对象相应的方法,分别以第一和第二图像数据为基础获得第一和第二转换图像数据。
6.如权利要求5所述的产品,其中第一和第二转换图像数据具有相同的图像文件格式。
7.一种方法包含传送具有与第一方法有关的第一图像数据的图像对象到处理系统;以及上述处理系统中的一抽象机执行第一方法从而以第一图像数据为基础生成第一转换图像数据。
8.如权利要求7所述的方法,还包含传送一具有与第二方法有关的第二图像数据的第二对象到处理系统,第一和第二图像数据具有不同的格式;以及抽象机执行第二方法从而以第二图像数据为基础生成第二转换图像数据,第一和第二转换图像数据具有相同的格式。
9.如权利要求7所述方法,包含传送与第一方法有关的第二图像数据到处理系统;以及抽象机执行第一方法从而以第二图像数据为基础生成第二转换图像数据,第一和第二转换图像数据具有相同格式。
10.一成像设备包含图像传感器,用来生成传感器数据;以及用来存储一图像对象的存储器,该图像对象具有与传感器数据有关的第一图像数据,和由抽象机执行从而以第一图像数据为基础获得转换第一图像数据的第一图像方法。
11.如权利要求10所述的成像设备,其中第一图像数据为传感器数据。
12.如权利要求10所述的成像设备进一步包含一处理器;以及第二存储器,具有指令,该指令在被处理器执行时会将传感器数据处理成第一图像数据。
13.如权利要求12所述的成像设备,其中处理包括对传感器数据执行的图像处理方法。
14.如权利要求10所述的成像设备进一步包括用来将传感器数据处理成第一图像数据的逻辑电路。
15.如权利要求14所述的成像设备,其中逻辑电路对传感器数据执行一颜色插值算法。
16.如权利要求10所述的成像设备进一步包括至一通信介质的接口,用来将第一图像数据和第一方法传送到一与成像设备分离的处理系统,处理系统配置有所述抽象机。
17.如权利要求10所述的成像设备,其中图像对象包含一TIFF文件,该TIFF文件由第一图像数据和第一图像方法组成。
18.如权利要求10所述的成像设备,其中转换第一图像数据是设备独立位图(DIB)格式的图像文件的一部分。
19.如权利要求10所述的成像设备,其中第一图像数据和转换第一图像数据具有相同的图像文件格式。
20.一数据处理系统包含一处理器;与处理器相连的存储器,具有指令,该指令在被处理器执行时会引起以下步骤对系统进行配置从而分别从第一和第二成像设备接收第一和第二对象,每一对象具有图像数据和一相应方法;以及一抽象机执行每一对象的相应方法从而以图像数据为基础获得相应的转换数据。
21.如权利要求20所述的系统,其中转换数据是具有相同图像文件格式的第一和第二图像文件的一部分。
全文摘要
用来存储和转换不同自然格式数字图像(104a,104b,110)的技术,不必使成像设备的独立制造商在涉及图像的生成/捕捉和处理的因素方面达成共识。在传统的面向对象技术含义范围内,自然格式图像数据及其相关方法结合起来作为图像对象(108a,108b,108c)的一部分,并被传送到主机系统(102)。
文档编号H04N101/00GK1324469SQ99812400
公开日2001年11月28日 申请日期1999年8月17日 优先权日1998年8月27日
发明者P·E·马蒂森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1