图象处理的方法和系统
本专利申请是序列号为08/085,534的美国专利申请的部分继续申请,该专利申请于1993年6月30日以“图象处理的方法和系统”的题目提出,所以这份专利申请的内容用作为本专利申请的参考。本专利申请以及上述父专利申请要求法国专利申请No.93.03455的优先权,这份法国申请于1993年3月25日提出,其内容也作为本申请的参考。
本发明一般地涉及图象处理,并且更具体地涉及使用计算机系统以得到快速图象处理能力的图象处理方法和系统。
本发明是因为这一代的图象修正系统的缺点而产生的。现有技术的修正系统通常使用两种方法中的一种方法处理图象:(1)虚拟图象法和(2)高分辨率/低分辨率法。此外,在现有技术中还能够找到依靠用户编程的以文本为基础的修正方法。上述方法的每一种都能克服图象修正系统所面临的主要困难。但是先有技术的任一系统都不能满足当今计算机系统的要求,在系统用户能支付的价格下当今的计算机系统可对高质量彩色图象提供快速编辑。
台式图象编辑软件包例如以Macintosh或Windows为基础的程序,通常采用的虚拟图象法处理保持在存储器里的实际图象的复制品。Macintosh是加州Cupertino城的Apple(苹果)计算机公司的商标,而Windows是华盛顿州Redmond城的Microsoft(微软)公司的商标。通常,把原始图象不经编辑地存储到存储器里。在编辑的过程中,虚拟图象法构造一个或多个编辑后图象的中间草图的复制品。因此,如果在编辑期间产生错误,用户或操作员可以回复到该图象以前的复制品从而改正这个错误。采用虚拟图象法时,随着施加修正作用图象本身受到变换。
虚拟图象法具有两个重要的缺点:第一,为存储不同的中间编辑图象需要大量的存储器,并且第二,因为各次作用是立即施加到整个图象上的所以复杂的处理如大喷射、定标和旋转会导致长的处理延迟。
由于在处理大图象(超过10M或1千万字节)时基于虚拟图象方法的现有技术的图象,修正系统不能提供可接收的性能,发展了采用高分辨率/低分辨率法的编辑系统。这些系统操作较小的,即低分辨率的图象,从而为操作员建立改善的响应时间。采用这个方法时,操作员对图象的每次修正行为顺序地存储到一份底稿里。当完成修正时,该底稿通常要通过一个更高效的和更贵的服务器并且“受到执行”。作为对该底稿执行的结果,把包含在该底稿里的修正行为施加到一个高分辨率的图象,最初编辑系统是从这个高分辨率图象上推导出该低分辨率图象的。因此,高分辨率/低分辨率法产生一个高质量最终图象,该最终图象包含着对低分辨率图象进行的修正。这个方法的一个问题是操作员不修正和不处理实际的(高分辨率)图象。因此,不是总有可能进行高度细致的如剪影和掩蔽的修正行为的。1992年8月25日授权给Kellas等的美国专利号5,142,616公开了在主计算机上执行的高分辨率/低分辨率法的一个例子。
图象处理中一种供选择的方法是表达式树方法,在该方法里图象是由一组操作规定的,这些操作或者由计算机程序或者由数学公式实现。G、J、Holzmann在BEYOND PHOTOGRAPHY:THEDIGITAL DARKROOM 31—41(Prentice Hall,1988)书中揭示利用文本表达式来规定定义图象修改的方程式。当用可执行的代码写出这些文本表达式时,程序建立表达式树以简化在计算机系统上对该表达式的计算。在现有技术中使用的这个方法的缺点在于用户不仅必须在图象生成及编辑的制作方面上而且必须在编程及数学上都是非常有经验的。这种技能对于初始生成表达式树以及随后为完成图象修改而对树进行修正都是必需的。
总而言之,目前的用于编辑高分辨率图象的计算机化图象处理为了实现图象修正的全部要求需要太强的处理能力、太多的存储器或者对操作员需要太高的编程和数学技能。此外,许多现有技术对于最终结果的质量施加了不令人满意的限制。因此,在技术上需要一种计算化的图象处理方法和设备,其能使数学上或编程上不熟练的操作员迅速地完成高级图形操作,并且允许在决不影响最终图象的分辨率或精度的情况下变换图象编辑决策。
本发明有益于克服与现有技术的图象处理系统相关联的缺点。具体地,本发明是一个利用台式计算机迅速编辑图象的图象处理系统。利用图形用户接口,本发明采用表达式树定义编辑操作。随着改变图象视图或修改图象,或者修改表达式树或者把表达式树合并到新的表达式树里。最终地,表达式树被计算并且显示或打印包含着图象修改的输出图象。通过利用表达式树,本发明的操作和构成本发明的输入的原始图象的分辨率无关,而且本发明的操作和本发明产生的输出图象的分辨率无关。这样,对于输入图象及输出图象的质量和格式本发明具备很大的灵活性。
本发明有利地采用所谓的函数插入变换系统(FITS),以利用常规的台式计算机大大提高图象编辑速度。FITS把图象处理分成三步,这三步由三个不同的计算机软件程序来完成:(1)预处理程序,(2)图象编辑程序和(3)FITS光栅图象处理(RIP)程序。该三步处理使得用户的各次图象操作及编辑瞬时地实际描绘到计算机显示监视器的屏幕上。
具体地,预处理程序建立图象的特定格式化型式以允许迅速地改进图象编辑。该特定的格式包括全分辨率图象(输入图象)以及一系列从全分辨率图象衍生出来的子图象。系列中每个子图象的分辨率低于系列中前一个子图象的分辨率,即该序列构成一个特定格式化子图象的图象塔状结构。从这个塔状结构中,本发明自动地选择一个子图象或子图象的一部分,以在一个选定的图象放大水平上对用户准确显示含有适当分辨率的图象。这样,如果放大水平连续地改变,可以从存储器里迅速地调用最好地在屏幕上描绘该图象的新子图象并且显示这个新子图象。
图象编辑程序向图象(或子图象)施加某一图象编辑操作。本发明是按照用户操作的图象处理软件程序包来实现的,或者是按照计算机控制的独立程序来实现的。不论在哪一种情况下,本发明的图象编辑程序向图象作用图象修改。典型的图象编辑操作包括组合图象,以及对目前显示的图象的颜色及其全部或一部分外形进行锐化、模糊化、亮化、暗化、变形和修改。对图象的修改被作为表达式树的一部分存储在所谓的FITS文件里。表达式树包括定义最终应作用到图象上的编辑操作的参数。光栅图象处理程序利用FITS文件的内容或利用尚未保存到FITS文件中的表达式树产生输出图象,用于在计算机监视器上进行显示,用于在高分辨率打印机上打印,或者用于输出到台式出版系统。
在两种情况下执行FITS光栅图象处理(RIP)程序:(1)每当产生一个在监视器上显示的新屏幕视图时,即每次图象修改或者图象视图改变之后,以及(2)当产生输出页面以打印编辑后图象或者把编辑后图象输出到如台式出版系统的另一个系统时。FITSRIP程序把输入图象(子图象)和图象编辑期间产生的修改(FITS文件层)结合起来建立一个屏幕图象或打印图象。由FITSRIP程序产生的输出图象可以具有任何分辨率;从而称为和分辨率无关的。
FITS RIP程序取出在图象编辑进程期间执行的图象处理的集合体(由表达式树代表),把该集合体和未编辑的图象组合起来,并且计算用于打印或在监视器上显示的单一图象。在图象编辑期间完成的对图象的修改是以和输入图象的分辨率或者最终输出图象的分辨率无关的表达式树为特征的。在执行FITS RIP程序期间,首先在数学上把表达式树的节点组合起来。其结果映象到输出图象的象素位置上。从而,对于输出图象的各个象素产生单一的数学函数,该数学函数描述在输出图象之内的该点上一个任意颜色空间中的颜色。这个函数包括与原始输入图象有关的以及与包含在表达式树中任何可施加的修改有关的信息。
通过研究下述详细说明及附图,可以很容易地理解本发明的原理。附图是:
图1示意表示表达式树的一般形式;
图2是图1的表达式树的一种特殊情况,其中各个节点表示零或者一个子节点;
图3是实现本发明的计算机系统的高层框图;
图4是在图1所描述的计算机系统中执行的FITS主程序的流程图:
图5示意地描述根据本发明的预处理程序建立的拼块式图象金字塔状结构;
图6是预处理程序的流程图;
图7是图象编辑程序的流程图;
图8是象素更新程序的流程图;
图9是FITS光栅图象处理(FITS RIP)程序的流程图;以及
图10概括地说明由FITS RIP程序使用的用于插入中间参数值的输出网格。
为了便于理解,只要可能,采用相同的参考数字指示各图中共同的相同部件。
本发明是一种图象编辑方法和系统,用于处理、改变及修正计算机化的即数字化的图象,并且用于把这些图象显示在计算机监视器上或者在打印机上。本发明利用函数插入变换系统(FITS),在这个系统里基础图象,即来自图象扫描仪、作图程序或某其它图象源的输入图象作为表达式树中的表达式被保留、被改变和被记录。通过只处理当前显示屏幕上所显示图象的变化,FITS只进行修改该图象所需的计算和只进行为准确显示这些修改所需的计算。并且,所有修改是和分辨率无关的而且可用于产生任何分辨率级别的输出图象(分辨率通常用每英寸上的点数或dpi来测量)。这样,一旦使用显示分辨率相对低的计算机屏幕进行编辑之后,该系统可以利用高分辨率打印机打印高分辨率图象。
具体地,在图象是以表达式树为特征的情况下本发明的图象处理方法和系统用于建立和编辑与分辨率无关的图象。在连续的二维空间的任一点(x,y)上根据需要可通过计算机子程序计算表达式树,以显示、打印或输出图象。
表达式树是一种常规的树数据结构,通晓计算机编程的技术人员对它是熟悉的。树中的每个节点定义一个图象(也可能是编辑操作期间的中间结果),该图象可以从该节点本身存储的数据计算出,可以从由该节点引用的任何子树中存储的数据计算出,以及可以从该节点或其子树能够引用的任何预处理图象文件的数据计算出。在最佳实施方式里,每个节点是一个对象(在诸如C++的面向对象的程序设计语言里),这个对象含有对象方法(和该对象相关的子程序),以便计算给定座标x和y的图象点的颜色F(x,y)。F(x,y)表示在如RGB、HSV或CMYK的某颜色空间里带有座标向量的一个颜色。
在表达式树中的各个节点(对象)包括下列数据:
一对零个或多个具有关联函数Fi(x,y)的子节点Ci的指针。
一对表示外部输入图象Ii(x,y)的对象的零个或者多个指针。
一对定义位置相关项D1(x,y)的对象的零个或者多个指针。
一零个或者多个位置无关项Gk(x,y)。
通常,位置无关项是图象内修改位置无关的修改参数。另一方面,位置相关项是作为图象内修改位置的函数随位置变化的修改参数。
计算F(x,y)的典型对象方法可表示为:
F(x,y)=H(F1(x,y),F2(x,y)…Fr(x,y)
I1(x,y),I2(x,y)…Is(x,y)
D1(x,y),D2(x,y)…Dt(x,y)
G1,G2…Gu(x,y))其中H是一个函数,定义在表达式树的给定节点上所需的编辑操作。备择地,函数H可以取决于(x,y)邻域中点上的Fi、Ii和Di值即F(x,y)的值是非严格地定位在位置(x,y)上的参数的函数。图1示意地描述表达式树的一般形式。
图2描述当所有的节点只具有不超过一个子节点(子女)时这种特殊情况下的表达式树结构。在这种情况下,树描述一序列“层”。根节点(层r)描述最顶层,它的子(女)描述下一层,并且一层一层地下降到没有子(女)的底层(层1)。对于图象修正,这是一种非常重要的特殊表达式树结构。修正艺术家所需的许多种类的修改可通过一系列的层来描述,不需要由如图1所示的表达式树提供附加的一般性。
为了促进快速处理,在最佳实施方式中,代表外部输入图象Ii(x,y)的对象通过访问按预处理IVUE格式(下面说明)存储的图象计算它们的结果。但是,一般地说,外部输入图象可按任何格式存储并且可通过这些对象得到访问。
图3是一个常规的计算机系统110的框图,这个计算机系统110能够执行FITS计算机程序118,从而允许用户对图象实行修改并把编辑后的图象显示在打印机110和/或显示监视器108上。具体地,计算机系统100包括图象输入设备102、计算机104、用户输入设备106、显示监视器108和打印机110。在操作上,通过图象输入设备102如常规的图象扫描仪建立一个原始图象。通过扫描仪扫描后的图象格式化为图象文件120,该图象文件存储到计算机104里的存储器116里。备择地,原始图象可由计算机104或另一计算机执行作图程序(广义地表示为图象处理程序122)所生成并且作为图象文件120存储到存储器116里。计算机104包括至少一个中央处理机(CPU)112、存储器116和各种众所周知的CPU支持电路114。这种计算机的一个例子是由加州Cupertino城的Ap-ple计算机公司制造的Macintosh Quadra 900型。在存储器116里存储着FITS程序118、图象编辑程序112以及一个或多个图象。根据用户的意思,由FITS程序改变的图象可以显示在显示监视器108和/或打印机110上。
在操作上,用户通常操作诸如鼠标器、跟踪球、光笔和/或键盘的用户命令输入设备106,通过计算机104来控制如图象扫描仪的图象输入设备102。图象扫描仪按常规方式扫描图象的硬拷贝并且把硬拷贝的数字化表示作为图象文件120存储到存储器116里。接着,用户可以指示CPU112执行FITS程序118并且还可以从存储器里调用图象文件(原始图象)。FITS程序118或者是一个和常规图象处理程序122接口的独立程序或者是图象处理程序里的嵌入程序。为了简便,这里把FITS程序描述为一个独立程序。通过对用户命令输入设备的操作,用户向FITS程序118发送指令以便利对原始图象的处理、修正、改变及其它编辑,即采用一个图形用户接口(GUI)。一般地说,FITS程序118向图象施加各种修改并且把编辑后的图象显示在显示监视器上。一旦完成所需的图象编辑之后,用户可以把编辑后的图象打印在打印机上。当然,可以用任何形式的把图象设置在例如胶片等的有形介质上的设备来代替打印机。
熟练的技术人员从上面的讨论中可以意识到,计算机系统当然可以是计算机网络中的一部分。如果这样,存储器116可以存在于和网络总线连接的服务器计算机中。此外,打印机和图象输入设备可以连接到网络总线的节点上,同时计算机、用户输入设备和显示监视器可以是和网络总线连接的计算机工作站或微计算机,从而用户的计算机通过总线可以访问打印机,图象输入和存储器设备。
应该理解FITS程序的各个子程序可以在不同的计算机和/或外设上执行。在这种情况下,由各子程序产生的不同的计算机文件可能存储在硬盘或者某些其它的可传送性存储媒体上。从而,所存储的文件能够在不同的计算机和外设之间进行传送和得到使用。
图4是用来实现FITS进程的计算机软件程序(FITS主程序118)的高层流程图。FITS主程序200包括图象预处理程序204、图象编辑程序208和FITS光栅图象处理(FITS RIP)程序212。包含在图象文件202里的数字化图象构成FITS主程序的输入。输入图象文件通常是由常规的图象扫描仪或者常规的作图程序产生的。在这两种情况下,输入图象文件可格式化为任何一种周知的格式,Tagged Image File Format(TIFF),EncapsulatedPost ScriptFormat(EPSF)等。Post Script是加州Mountain View城的AdobeSystems公司的注册商标。其它的输入包括图象编辑信息,FITS主程序把图象编辑信息应用到输入图象上。图象编辑信息是由和FITS程序一起运行的图象处理程序产生的。FITS主程序产生作为输出的图象文件216,其包含着作用到输入图象上的由图象编辑信息定义的修改。FITS主程序产生任意所需分辨率的输出图象文件,以精确地在打印页面上或显示监视器的屏幕上描述图象(或者一部分图象)。
通常,图象预处理程序204执行预处理功能以把输入图象文件格式变换成特别的文件格式,这种特别的文件格式可由FITS RIP程序迅速地显示在显示监视器上并且可由图象编辑程序交互式地编辑。这种特殊为图象文件称为“IVUE”文件。在下面将详细讨论IVUE文件格式的特殊性质。
沿着路径206把IVUE文件发送到图象编辑程序208,而且沿着路径214把IVUE文件发送到FITS RIP程序212。如下面将详细解释的那样,路径206上的IVUE文件可以是一个“全IVUE”文件或者是一个“压缩IVUE”文件。此外,熟练的技术人员可以意识到预处理程序不一定必须存在于FITS程序里。备择地,该程序可以存在于图象输入设备中。在这种情况下,图象输入设备,例如图象扫描仪,应该直接产生代表该设备所生成的图象的IVUE文件。
图象编辑程序208以一种交互的方式把任何修改作用到即由IVUE文件代表的图象上。该程序把这些修改作为一层,或者一个图象对象,施加到图象上,并且存储这些修改以及把这些修改表示为作为FITS文件存储的表达式树里的节点。因此,FITS文件包括一个或多个相互连接的定义对原始图象的修改的树。因为仅用代表对图象修改的方程式的参数来存储修改的,而不是用修改后图象的完整拷贝来存储修改的,所以比起现有技术例如虚拟图象法所需的存储量,本发明大大减少了存储器的使用。进而,通过只存储说明图象所需改变的信息,可以更快地更新图象。沿着路径210发送FITS文件以由FITS RIP程序212进行更多的处理。
最后,FITS RIP程序212把表达式树代表的所有修改和IVUE文件代表的原始图象结合起来,以产生单一的输出图象216。该图象包括由图象编辑程序208进行的各次修改。此外,FITS RIP程序把输出图象格式化为多个可获得的标准图象格式如TIFF、EPSE等等的任何一种格式。照此,该输出图象可被输出到许多可得到的台式出版系统中的任一系统。FITS RIP程序计算表达式树以为输出图象产生象素值。
备择地,FITS RIP程序可存在于图象显示设备如打印机中。照此,打印机或其它用于在有形媒体上产生图象的设备可设计成可利用FITS RIP程序的快速显示生成性能。
重要的是,当图象是以一系列表达式树上的节点为特征时,该FITS程序可设计为与分辨率无关的编辑图象,表达式树上的节点可被组合起来以产生任何分辨率的输出图象,供显示或打印。
此外,不象许多高档和中级的彩色图象编辑系统强迫操作员修改低分辨率图象,FITS程序在高分辨率图象上运行,即操作员在不受FITS处理法的限制下可以在任何时候访问包含在原始的全分辨率图象中的任何信息。并且,如下面将详细讨论的那样,通过用FITS程序,操作员不限于在一个固定的图象分辨率上工作。照此,可在任何放大级(图象分辨率)上实施图象编辑操作和把新的原始图象插入到正在编辑的图象上。
为使读者深入地了解FITS程序,下面将分别讨论各个程序,即预处理程序、图象编辑程序和FITS SIP程序。
A.预处理程序204
最初,按TIFF或其它标准格式的输入图象被预处理以建立一个特殊格式化的新文件,称为IVUE。在图象编辑期间以及在FITS RIP期间使用该IVUE文件。是按这样的方式预处理的,即能够快速地构造充满图象数据的新屏幕。并且对于全图象和特写细节能够利用屏幕的最好分辨率。
从一个抽样图象建立IVUE文件的第一步是根据现有技术中周知的技术构造一个较小抽样图象的塔状结构。在本发明的最佳实施方式中,塔状结构里的最精细图象是原始图象,并且在各维上各个较粗糙的图象的分辨率是下一个较精细的图象的分辨率的一半。可以从L.Williams、“Pyramidal Parametrics”、Proceedings of Sig-graph’83,PP.1—11(1983)和在颁布给Anderson的美国专利号4,718,104中所描述的“Burt Pyramid”中找到产生这些塔状结构的计算方法的两个例子。
在计算出塔状结构之后,按最粗糙的到最精细的顺序把图象的塔状结构写入到存储设备(存储器)里。把各个图象划分成一系列的p×q象素的矩形块,并按光栅扫描次序把各矩形块写入到存储设备里。在各个矩形块里,按光栅扫描次序把象素写入到存储设备里。在图5中表示了一个塔块式图象塔状结构的简单例子。
可以用图6所示的步骤顺序更准确地说明用来建立IVUE文件的预处理程序204。该顺序描述如下:
1.在IVUE文件的开头部分为文件标题信息及偏移表的指针保留空间。(步骤402)
2.输入离散抽样图象I(i,j)。(步骤404)
3.构造一系列的图象I1(i,j)、I2(i,j)、I3(i,j)…In(i,j),其中I1(i,j)=I(i,j)并且当K>1时根据计算图象塔状结构的现有技术通过低通滤波器和按2因子均分从Ik-1(i,j)导出Ik(i,j)。(步骤406)
4.对1到n的k循环下述5至8的步骤,从而把各个图象分块为p×q象素块。(步骤407、408、410、411、412、413)
5.当r小于或等于Ik(i,j)中的i的最大值时对i从1每次增加p循环步骤6和7。
6.当s小于或等于Ik(i,j)中的j的最大值时对s从1每次增加q循环步骤7。当i从r至r+p-1和q从s至s+q-1时p×q的矩形区域为一个塔块。
7.把属于该塔块的图象Ik的象素按光栅扫描顺序写呻到存储设备上。(步骤410)
8.把存储设备内各塔块的起始地址和偏移表相加。(步骤411)
9.把偏移表写入到存储设备。(步骤414)
10.把偏移表的地址和所有标题信息写入到存储设备中在步骤1里所保留的空间上。(步骤415)作为最常用的,标题信息应该包括原始图象的尺寸、p及q的值和其它程序员认为有用的任何其它信息。
11.返回FITS主程序。(步骤416)
很清楚,对于熟练的程序员有许多不同的方式实现偏移表。一般地讲,偏移表是存储设备上的一种数据结构,其允许一个程序利用IVUE文件来计算子图象里的塔块在存储设备中的位置。因此,简单的实施方式根据子图象和塔块的数量采用固定尺寸的指针表。较复杂的实施方式可采用变尺寸的数据结构以促进在其写入IVUE文件后对它的修改。
在最佳实施方式里p=q,但是在许多计算机系统里p和q的不相同值可能具有性能上的好处。塔块的尺寸的选择应使得图象修正系统具有最好可能的性能。在采用硬盘作为存储设备而且屏幕修正面积约为700×700象素的Apple Macintosh Quadra 900上的经验表明塔块尺寸的最佳值在100k字节至300k字节之间。Macintosh和Quadra是加州Cupertino城的Apple计算机公司的商标。其它计算机或者其它存储媒体的最佳塔块尺寸可能完全不同。
为了构造一个可能对网络访问更有效的较小的称之为IVUE/C的文件,预处理IVUE文件方法中的步骤7可按如下修改:
当i从r到r+p-1及q从s到s+q-1时p×q矩形区域是一个塔块。压缩属于该塔块的Ik的象素并把压缩后的结果写入到存储设备里。把存储设备上塔块的起始位置和偏移表相加。
压缩方法可以是JPEG、向量量化法或者任何其它的图象压缩方法。压缩可能是有损耗的或者无损耗的。采用压缩存在着两个基本优点:(1)在图象编辑期间只使用IVUE/C文件;这样,采用压缩文件可降低网络中给定修正工作站的磁盘要求,并且(2)在图象编辑期间如果图象在网络图象服务器上,使用压缩方案可以大大地减少由于从网络服务器上检索图象而产生的网络延迟而造成的操作员等待时间。
在屏幕编辑步骤期间可能采用压缩图象,此刻有损耗的压缩图象的质量可能是完全可接受的。但是,为了得到最终输出的最高质量的图象,用户在FITS RIP期间可以选择使用未压缩IVUE格式的全图象。从而,虽然为了提高处理速度和降低存储要求在编辑操作期间可能采用了有损耗的压缩,但它不会降低最终图象的质量。
技术上熟练的程序员可以理解,在IVUE或IVUE/C文件里可包括其它数据,诸如创造者、压缩方法的名字或者其它任何程序员认为有用的应该包括的。最方便的是在文件的开端或者结尾完成这些工作,但是如果出于某种原因而需要时也可按常规方法把它们和图象数据混杂在一起。技术上熟练的程序员还可以理解,相同的数据可以写入到几个文件中(例如,在塔状结构中一个图象一个文件),其不会根本性地改变本发明。
B.图象编辑程序208
图象编辑涉及图象的修正、创造和合成过程。利用图象编辑程序,操作员依次施加各种效果,诸如模糊、光滑和旋转及定标等的变换。可在任何时间插入其它的图象,如果需要的话,可以带有透明度和遮蔽。
在表达式树中表示各次编辑行为,并把各次编辑行为记录到名为FITS的文件里,FITS文件可被认为是命令或修改的数据库,并且是其一种紧致的表示法。
FITS提供一组操作类型,各个操作类型和表达式树中的一特定函数相关。在交互式编辑期间,用户具有一系列的行为能力以修改编辑操作中的与位置有关参数和与位置无关的参数。FITS操作包括:图象插入(插入扫描后的图象)、上色、明暗效果和反射等等。
在图象编辑期间,操作员利用本发明通过使用计算机指向器如鼠标器或数字化板规定所需图象修改的位置和程度。在图象修正系统中采用这些指向器在现有技术中是标准的。但是,把操作员的意思变成FITS系统里的图象修改的方法是创新的。
在现有技术,指向器被用作把“涂刷”效果作用到抽样图象网格上。操作员选择涂刷的大小和形状(通常为圆形),而计算机程序反复地更新位于涂刷区域里的被修改图象的所有象素。为了悦目并且为了建立用户和涂刷在屏幕上造成的外观之间的有效交互,必须每秒至少更新象素十次。因为被更新的象素的数量正比于圆形刷子的直径的平方,更新显示器所需要的计算量随着涂刷直径的增大迅速增加。因此,采用现有的技术时,可接收的更新速度的计算要求把实际的刷子限制在相对小的直径上。相反,采用本发明可有效地改进图象显示的更新速度,在不需要过分昂贵的计算设备以加速计算的情况下修正操作员可以交互式地采用特别粗的涂刷进行修改。
图7描述图象编辑程序208的流程图。具体地,该程序从步骤500开始,接着在步骤502询问用户是否希望从存储器里调用含有以前编辑过的图象的FITS文件。如果该询问得到肯定的回答,在步骤504调用适当的FITS文件。如果该询问的回答是否定的或者在FITS文件被调用之后,在步骤502该程序利用FITS RIP进程显示现有图象。该图象显示在显示设备的指定区域或窗口里。如果现有的表达式树是空的,例如没有调用到以前的FITS文件或未编辑的IVUE图象,FITS RIP进程在显示设备上产生黑色区域。因为该黑色区域被认为是一块画布,可以创造一个新图象。为简单起见,在本讨论的剩余部分里假定调用了一个FITS文件。从而,FITS RIP利用FITS文件里的表达式树产生所需的象素(在下面的“FITS RIP”一节中描述该进程的细节)。照此,在步骤506,在显示设备上显示指定的图象区域。
接着,用户可以或者选择一个修改操作或者选择一个当前显示图象的新视图。在判定框508里,用户可以开始或不开始对当前显示图象的修改。如果不开始,程序沿“NO”路径510前进到判定框516,在那里用户可以选择图象的一个新视图。通过选择周知的命令如上色(pan)和放大缩小(zoom),操作员可规定被编辑的图象部分并且同时在显示器上显示这部分。这些命令可以被用于规定图象坐标系统和显示设备上指定区域(窗口)的坐标系统之间的仿射变换。采用仿射变换的目的在现有技术中是周知的,关于这一点可参考:Foley、Van Dam、Feiner和Hughes,COMPUTERGRAPHICS:PRINCIPLES AND PRACTICE,Addison Wesley(1990)。
如果在步骤516选择新视图,程序进入步骤518。在步骤518,根据屏幕阵列的数据为该层建立PDP组。但是,因为尚未选定编辑操作,屏幕阵列尚未分配。因此,在此时刻在这步骤上什么都没有出现。在步骤520,利用FITS RIP程序(下面说明)在屏幕上产生一个新的图象视图。然后,该程序返回到步骤508,询问是否选择一个修改并且开始修改。利用上述进程步骤,在得到所需的视图之前用户可以在一个图象内动来动去并且放大或缩小图象。然后。将在步骤516得到否定的回答,并且程序沿“NO”路径前进到步骤522。
在步骤522,用户通常从能进行的操作的菜单上选择一个编辑操作(或者新的编辑操作)。在选择了操作之后,在步骤523根据屏幕阵列组的现行值修改各PDP,并且在步骤524建立表达式树里的一个新节点(对象),该新节点引用零个或者多个子节点。在最常见情况下,新的操作被看成为是在先前图象的顶上的一层,这样新的表达式树具有把先前图象表示为它的唯一子女的表达式树,从而,它只参照该图象。如果先前编辑操作已被使用,即屏幕阵列目前已被分配,则在分配新的屏幕阵列之前必须把屏幕阵列映射到表达式树里。该映射是在步骤523中实现的。该映射的特殊性质在下面说明。
每次编辑操作取决于一组零或多个位置相关参数(PDP),它们说明编辑效果。例如,“上一种颜色”是用单个PDP说明的,这规定了在各点该颜色的暗度。当利用RGB彩色空间时该单色是由三个与位置无关的参数规定的。“上多种颜色”的操作是用四个PDP说明的:三个规定各点的颜色和一个规定其暗度。
更具体地说,当用户选择一种操作和一个视图(例如通过扫视(pan)和缩放(zoom)并且试图执行图象编辑操作时,在步骤508的询问的回答是肯定的。从而,在步骤508,分配二维屏幕阵列并且用所选择编辑操作的现有PDP或缺省的PDP填值。对和现行所选编辑操作相关的各个PDP分配一个屏幕阵列。该阵列称之为屏幕阵列,因为它们代表在对于屏幕上的当前视图具有足够分辨率的条件下的与位置有关的各参数。通常,现行屏幕阵列的网格外分辨率是和被显示图象的象素分辨率是一样的。但是,在某些情况下屏幕阵列所具有的网格要比被显示图象粗糙。在这种情况下,通过对屏幕阵列进行插值从PDP值中计算最终的显示象素值。该插值进程是FITS RIP程序的一种功能,下面将进一步予以说明。在步骤514,在图象编辑操作期间修改这些阵列的。利用屏幕阵列的修改后内容,FITS RIP程序执行所谓的“屏幕RIP”以迅速地再显示该图象。在屏幕RIP里,FITS RIP程序只为经编辑操作更改的象素计算新值。照此,如下面所说明的那样,FITS RIP程序只作用在那些由编辑操作更改的象素上,即那些在屏幕阵列上具有更改PDP值的象素上。这样,随着在图象上执行编辑,在所显示的图象上迅速出现修改。
当用户选择新视图时(步骤516),在步骤518利用屏幕阵列的内容以修改各PDP的与分辨率无关的表示,即把屏幕阵列值映射到表达式树里的PDP值。重要的是,只存储现行屏幕阵列值和先前PDP数据结构(在该编辑操作的任何编辑之前的)之间的差别。照此,如果一个屏幕阵列没有被编辑操作改变,则对应的PDP不改变。此后,可以建立新的屏幕阵列(步骤512)以存储进一步的修改,一直到用户终止编辑对话为止。
在编辑对话期间用户可以通过步骤525和526周期性地保存前面的编辑结果到FITS文件。而且,通过步骤528和530,可由FITS RIP程序处理图象以产生高分辨率输出供打印或存储到存储器里。最后,在步骤532和534,用户可以退出编辑对话并返回到主程序。
为了迅速地描述屏幕上的修改,屏幕阵列可以具有和RIP区域里相同的元素号。备择地,对于已知为光滑的各个PDP,例如用高斯涂刷产生的PDP,屏幕阵列可按低分辨率存储并根据需要插值产生显示图象。这个第二种方法减少存储要求和提高处理速度。
此外,为了在用户以涂刷的效果上色时提供快速更新,FITS方法对于各种涂刷尺寸和对于受到限制的运动范围之内的可能的涂刷位移使用一个预先计算好的表。该思想是这样的:当涂刷移动时,FITS方法只重新计算涂刷在以前的位置上没接触过的而在新的位置上将接触的象素,而不是重新计算涂刷下的显示器上的所有象素。
更确切地说,令D为象素里一组允许的位移矢量,其描述两次更新之间的涂刷的平移。在最佳实施方式里,D是一组其项为整数的矢量(i,j)。在其它的实施方式里,其可用分数矢量或浮点矢量来代替,以在更多的计算代价下得到其它的灵活性。令A(0,0)为中心在某特定象素P1的受到涂刷作用的一组象素。令A(i,j)为以另一个图象点P2为中心的受到相同涂刷作用的一组象素。象素中从P1到P2的位移为矢量(i,j)。在本发明的这种概念下,本发明对各个允许的(i,j)预先计算一个涂刷数据结构,该计算产生一个除A(0,0)之外的A(i,j)里的所有象素的表,也就是说,象素(di,dj)表为涂刷沿矢量(i,j)移动后所影响到的新象素。该涂刷数据结构定义该涂刷的形状,而且照此,该数据结构定义包含在受影响的象素表里的象素。一般地讲,涂刷可具有任何形状;但是,通常涂刷具有圆的形状。如果涂刷具有对称的形状,可以采用较小的数据结构并且可按一种利用对称性的方式访问。例如,如果涂刷是圆形的,对于(i,j)、(-i,j)、(i,-j)、(-i,-j)、(j,i)、(-j,i)、(j,-i)、(-j,-i)的表可以相互很快地计算出来,从而只需显式地存储一个矢量。利用这种数据结构,本发明只重计算受到涂刷影响的新象素的值。具体地说,如果涂刷具有圆形、当涂刷移动时受到影响的新象素通常位于新月形的区域里。
更具体而言,如图8中所示,当在图象编辑操作中利用涂刷上色时指点器每移移一次本发明执行一次涂刷程序800,该程序按下述步骤进行:
1.访问涂刷数据结构(步骤804)并且访问新位置P2=(i2,s2),从旧位置P1=(r1,s1)减去新位置以产生矢量(i,j)(步骤806)。
2.如果矢量(i,j)太大不能在涂刷数据结构中找到它,用所有在涂刷数据结构中能找到的矢量(i1,j1)、(i2,j2)、…(in,jn)的和来近似它,并使i=i1+i2+…+in和j=j1+j2+…+jn。在相反情况下,如果在涂刷数据结构中找到(i,j)本身,令n=1、i1=i、j1=j。
3.对k从1到n循环步骤4至7。(步骤812)
4.对从涂刷数据结构中访问到的受影响象素表上的各个元素(di、dj)为偏移(ik、jk)循环步骤5至7。
5.在象素位置(di+r1,dj+s1)上更新显示,即执行屏幕RIP以更新受影响的象素的值。(步骤808)
6.用这次修改更新屏幕阵列。(步骤810)
7.把r1的新值置为r1+ir和把s1的新值置为s1+jk。
8.返回到图象编辑程序。(步骤814)
我们现在转向PDP的具体细节和在图象编辑程序里它们的处理。一般地讲,在表达式树的一给定层(或节点)内的各个PDP是由所谓的子PDP的聚集定义的。各个子PDP是从一特定的屏幕阵列中推导出来的,每当修改了一个新的图象视图或者在现行图象视图上完成一次新的编辑操作后总是要生成屏幕阵列。照此,对于一给定的PDP D(X、Y),多个子PDP合起来构成该PDP。从数学上该PDP结构由下式表示:D(x,y)=D1(T1(x,y))+D2(T2(x,y))+D3(T3(x,y))…+Dn(Tn(x,y))
(1)其中:
T1、T2、T3…TN代表仿射变换;而
D1、D2、D3…DN代表子PDP值。仿射变换利用下列方程把PDP从位置(X,Y)变换到位置(X′,Y′)
(x′,y′)=Ti(x,y)=Mi(x,y,1)t(2)其中Mi是一个三列二行的矩阵;而上标七代表矩阵的转置。
在PDP中存在仿射变换使得编辑程序具有图象编辑操作中的快速平移和快速仿射变换的能力。例如,如果操作员利用上色工具以建立表示一序列涂刷笔划的一个PDP,通过修改矩阵Mi的项可以同时变换所有的涂刷笔划。
此外、函数Di是按具有例如均匀网状栅格的数值表存储的,以构成屏幕阵列。为了确定落在网格点之间的子PDP值,采用双线性插值。备择地,为了更精确地生成子PDP,可采用塔形表示法表示网状栅格并且利用三线插值找出子PDP值。
在本发明的面向对象的实现中,通过含有子PDP表的对象计算D(x,y),该子PDP对应于编辑操作D1,D2,…Dn。计算D(x,y)的对象方法依次调用用于D1,D2,…Dn的对象方法并把结果相加起来。用于Di的对象可能存储着矩形区域Ri,这些矩形区域Ri规定那些在它们的外面Di等于零的区域。利用这些区域,用于Di的对象方法首先检验(x,y)是否在矩形区域的里面。如果(x,y)在外面,该对象回送零。如果(x,y)在区域的里面,利用方程式2对象方法计算被变换的点(x′,y′)并且然后把内部函数Di施加到该变换后的点上。
举例来说,在某图象区域里完成一次具体的编辑操作并且为该屏幕阵列编辑操作计算之后,从该阵列里的各点上的现行PDP值D(x,y)中减去一给定的屏幕阵列值。这样产生所谓的差分更新阵列,其被施加到PDP D(x,y)上。为了生成一个新的子PDPDn+1,把该差分更新阵列作为子PDP的一个对象和作为代表当前视图的变换矩阵例如pan和zoom存储起来。从该差分更新阵列,用产生图象塔形结构的同样方法,产生一个阵列的塔形结构,例如反复地用低通滤波该阵列值并且按2因子均分该阵列。因此,如果必须在后续计算中利用该子PDP,可以进行三线插值以在任何(x,y)位置上产生子PDP值。C.FITS光栅图象处理(FITS RIP)212
本发明提供建立光栅图象的计算机化过程。该过程用于在计算机监视器上建立图象的新视图,用于建立供输出的抽样图象,或者用于建立供打印高高分辨率输出图象。其目的是计算某特定象素位置上的颜色值,该特殊象素位置是由因施加了表达式树中的所有操作所得。该颜色值位于一任意的颜色空间里。通常,它或者位于由三种基色红,绿,蓝定义的称为RGB的颜色空间里,或者位于由三种颜色青,洋红,黄及辅助的黑色值所定义的CMYK彩色空间里。请注意在下面的讨论中,象素坐标是用整数(i,j)定义的,而图象空间是用连续值(x,y)定义的。通常,FITS RIP程序用于确定一任意象素位置(i,j)上的用图象空间的一个位置(x,y)上的颜色值定义的象素颜色值。
RIP的最简单方法(称之为全RIP)是直接为各个输出象素计算由表达式树描述的操作组合。该过程在图9中描述并可说明如下:
1.对输出图象里的每个象素位置(i,j)利用常规的逆变换找出在已编辑图象的对应点(x,y)并且循环步骤2至5。(步骤902)
2.计算对应于所需输出象素(i,j)的连续参数(x,y)。(步骤904)
3.调用对象方法并提供步骤2中计算的参数(x,y)来计算表达式树的根结点的象素颜色值F(x,y)。(步骤906)
4.把步骤3所计算的象素值F(x,y)存储到缓冲器里。(步骤908)
5.如果缓冲器满了,在显示器上显示被缓冲的象素或者把它们写入到存储设备里。(步骤910)
6.返回。(步骤912)
对于屏幕RIP,各PDP值仍旧包含在一个屏幕阵列里,因此,一旦一个屏幕RIP被处理,即在编辑进程期间显示图象的改变,在步骤904期间,FITS RIP程序必须首先把被改变象素上的屏幕阵列值转换为上面所述的子PDP值。把该子PDP值和其它的适当的子PDP值结合起来以产生适当的象素值。下面说明计算表达式树以产生象素值的方法。
一种备择的RIP过程利用插值来达到更快的速度。在输出网格上选择出点的子集以对其进行下面所述的精确计算,而其余的点则由插值处理。精确计算的子集可以方便地作为每4×4输出象素的块的一个象素。在这些点上,计算那点颜色值的通用表达式F(x,y)。在实际中,一般利用一个能够描述大部分图象编辑行为的通用表达式的简化形式。该形式称之为“基本操作”,其具有计算起来相对简单的优点。
如果表达式树是这样的以致各个节点不带有多于一个的作为子女的子树,则在表达式树中的各个节点可以描述为层(见图2及其有关的讨论)。根节点称之为最顶层,它的子(女)作为下面的一层,并依次类推。底层为不具有任何作为子女节点的节点。当我们具有这种类型的表达式树时,我们将令Li代表第i层而且层号从底节点开始至顶(根)节点。
基本操作本身又分解成三项,它们结合起来基于先前基本操作(层i-1)的结果产生新的结果(层i)。这三项是:
-第一,在点(x,y)上带有范围从-1到1的权αi(x,y)的先前层(i-1)的颜色。
—第二,在几何变换点pi(x,y)上的外部图象(Ii)的颜色并乘以值为-1至1的标量β(x,y)。
—第三,作用在层(i)的点(x,y)上的辅助颜色项γ(x,y)。该项可考虑上色作用或其它的色彩作用。
α、β、γ的值取决于所需的特定修正操作。α和β的值控制它们的作用与本功能相结合的程度。例如,如果引入一个图象以覆盖它下面的所有层则βi=1、αi=0和γi=0。
从而,层(i)中的各次基本操作是由一个方程定义的,该方程考虑先前层或编辑操作(i-1)。该方程如下:
Fi(x,y)=αi(x,y)·Fi-1(x,y)+βi(x,y)·Ii(Pi(x,y))+γi(x,y)(3)其中:αi(x,y)是(x,y)的标量函数,对应于由先前的基本操作Fi-1(x,y)产生的图象在该位置上的存在;Fi-1(x,y)是一个函数,代表着由先前层Li-1定义的图象;βi(x,y)是一个标量函数,对应于在(x,y)上存在着输入图象Ii的颜色;Ii(x,y)代表按IVUE格式表示的输入图象;Pi(x,y)表示几何变换,包括对输入图象Ii的旋转、定标和变形;以及γi(x,y)是一个辅助的与位置有关的项,它可影响象素(x,y)的颜色值。
由于基本操作的嵌套形式,即每个基本方程Fi(x,y)包括另一个直到底层的基本方程Fi-1(x,y),这些方程可以结合起来以产生代表整个表达式树的全局函数。如下式定义的全局函数定义在由多层Li组成的图象中任一点(x,y)上的颜色值: 其中γ′和α′j的作用类似于它们在基本操作中的作用,但如下面所讨论的那样是从基本操作的βi、αi和γi中计算出来的。q是扫描输入图象数,这些扫描输入的图象对(x,y)处的最终结果作出贡献。
利用下述步骤可在任何所需点(x,y)上把各层结合到上述形式中:
1.设γ′=0,q=0。
2.对从1至该层号每层i循环步骤2至8。
3.设γ′=αi·γ′+γi。
4.对从1至q的j,设α′j=αiα′j。
5.如果βi不为零则执行步骤6至8。
6.q=q+1
7.α′q=βi
8.K(j)=i
在本过程里,可为输出网格里的点(Z)的子集(在图10中描述)生成和计算全局函数。因为网格代表着RIP所需的象素子集,必须产生各网格里的剩余点(O)。如果在水平线上和垂直线上每隔3个象素计算一个象素的全局函数,本发明利用四个其全局函数已被计算的周围的象素对4×4块中的15个剩余象素进行插值。令这四个周围象素称之为插值结点。
注意本发明不是从四个象素值进行插值来产生插值象素值的。这种插值不能产生高质量的图象。相反,本发明利用四个带圆圈的点Z上的全局方程的已知各参数对点(0)上的各参数进行插值。这些插值后的参数然后再应用到各个位置上的全局方程中以确定其对应的象素值。因此,比起用象素值插值所产生的图象,本发明产生质量好得多的插值图象。
更具体地,为了保证图象质量的前提下使速度为最高,可以根据四个周围网格点上计算出的值双线性地插值得到中间点上的参数γ′(x,y)、α′j(x,y)和PK(j)(x,y)。图象项IK(j)(PK(j)(x,y))可以从下述步骤中得出:
1.通过双线性插值计算(x′,y′)=PK(j)(x,y)。
2.利用标准的文本映射技术(Foley及Van Dam)从四个插值结点上的(x′,y′)的值识别IVUE塔状结构的适当层次V。
3.输出颜色为在(x′,y′)处和层V上的IVUE塔状结构的三线插值。
出于两个原因本方法对于图象处理特别有效:全局函数具有相对简单的形式从而很容易计算,并且为生成插值函数只需要很少的计算。利用泛函插值可提供很大的时间节约。例如,当采用4×4网格的16个象素时,仅为总象素的1/16生成全局函数。这就是为什么可以利用相对不贵的硬件获得高速图象处理。
由操作员的动作而造成的图象的变化是交互式地进行和显示的。在任何时刻操作员可以返回和重新进行一次基本操作。这是因为不同的行为及它们的结果(即各层或表达式树)是用简单基本操作规定的。它们可被容易地修改。
以这种方式,本发明允许许多图象效果,诸如喷射、变模糊、对比、渐隐效果和颜色修改。本发明还允许几何变换或几何修改,诸如旋转、标度改变等等。利用FITS,计算机系统能够跟随操作员使用诸如鼠标器或数字笔等的输入装置按交互速度输入的动作。
这种输入(笔等)提供两种类型的命令信号:一种是给出所关心点的坐标(x,y)以及必要时其环境(例如喷射动作的路径)的位置信号,另一种利用笔在板上的压力建立第二种类型的信号。在喷射例子里,第二种信号将决定被喷颜色的密度。
当全局函数缓慢变化时,在一层中的图象编辑期间在其上生成全局函数的点的数量是相对少的。相反,当该函数迅速变化时,为获得相同的误差需要计算大量的全局函数。
即使最终图象是不令人满意的,例如进行了控制工作但打印出试样的图象,仍有可能返回并修改任何中间步骤以产生较好的结果。
本发明是按由人操作的一种建立和编辑图象的方法和系统来说明的。但是,应该理解,本发明包括着在另一个计算机程序的控制下运行该方法和系统的可能性。
此外,本发明的最佳实施方式被描述为是用面向对象的编程来实现的,但是,熟练的技术人员可以意识到该程序也可以以一种更传统的编程型式来体现。
D.基本操作的应用例子
下面讨论各种图象编辑效果,这些图象编辑效果以快速简化和快速插值所需要的形式如上面概括说明的基本函数来表达。
1)喷射:
喷射效果涉及形成带颜色的直线或曲线。当该线模仿是用喷枪造成时,它可被处理为是由喷枪喷射建立的带色区域。喷射点中颜色密度的分布近似为高斯函数。这意味着颜色的强度在点的中心取最高值并向点的边缘递减,如同高斯函数。在实际的喷枪里,强度取决于作用在扳机上的压力,扳机加宽或者改变空气喷管里的墨水喷射。在一个计算机化的系统里可以用一个其密度在中心和边缘之间按高斯函数变化的彩色圆来表示一个点以模仿这种压力。中心处的饱和可在0和1(或0和100%)之间变化。
根据基本方程(3)和喷枪的特性,该方程变成下式:
Fi(x,y)=αi(x,y)Fi-1(x,y)+γi(x,y) (5)
喷枪效果把新的颜色作用到现有部分的顶部上,所以它不引入新的输入图象。这样在该层的所有点上代表外部图象的系数βi为零。
喷枪的应用包括通过利用喷枪喷射的颜色的色调部分地或者全部地取代一个点的先前的色调。根据这一点,函数γi(x,y)表示为颜色C的函数并且表示为先前图象αi的存在系数的补数,即
γi(x,y)=[1-αi(x,y)]·C(6)
在各点上对标量αi(x,y)的选择可变换喷枪留下的颜色的密度。
颜色存在函数αi(x,y)可用一种高斯函数表示,这种高斯函数以一个点为中心,在圆的边缘上例如限制为10%。换句话说,在10%(或者任何其它可选的值)之外的高斯曲线的二条末端线被断掉。这意味着在选定的圆半径之外该高斯函数不起作用。
2)图象插入
该操作把一个外部图象插入到现有的图象上,根据基本方程,该输入操作定义如下:
Fi(x,y)=αi(x,y)Fi-1(x,y)+βi(x,y)Ii(Pi(x,)) (7)
函数γi为零并且系数αi和βi为互补的系数,即βi(x,y)=[1-αi(x,y)]。该操作的函数Pi(x,y)是双参数恒等函数,即,Ii(Pi(x,y))=Ii(x,y)。
如果αi为1,该输入图象完全地遮蔽着其下面的成分。如果αi小于1,结果将定界于输入图象和其下面成分的一种调和。
3)变亮/变暗
为了把一个图象变亮或变暗,我们可以利用函数γi(X,Y)。当αi=1和βi=0时,通用方程变为:
Fi(x,y)=Fi-1(x,y)+γi(x,y) (8)如果γi(x,y)是正的,最终效果将是变亮。如果γi(x,y)是负的,效果将是变暗。如果在该效果中不需要色调偏移,颜色γi(x,y)应该具有和Fi-1(x,y)相同的色调。
4)变形/失真:
该操作可以作用在插入的(输入的)图象上。对一个图象的变形/失真包括把各个结点和一个变形矢量相连接,该变形矢量具有对应于所需变形的方向和尺寸。为获得这种变形,通过使用定义图象输入的方程把层i的通用函数变成下式:
Fi(x,y)=αi(x,y)Fi-1(x,y)+βi(x,y)Ii(Pi(x,y)) (9)
形状改变在于对输入函数Pi(x,y)进行处理。
5)均色
在图象的一部分上均色,以肖象中为例,允许操作员取消局部的皮肤瑕疵,例如胎记。为达到这一点,在以颜色评定点为中心的一个圆上计算该颜色的平均强度。根据所选的半径,该颜色将多多少少变得比较均匀。该操作把常态的图象和平均后的另一个图象结合起来。对于均色操作,βi(x,y)=0,因为不存在新的输入图象。令S为点(x,y)周围的一个区域里的先前成分的平均颜色。则均色操作可由基本操作表示为:
Fi(x,y)=Fi-1(x,y)+γi(x,y) (10)其中γi(x,y)=[1-αi(x,y)]S(x,y)并且αi(x,y)在0和1之间。
6)对比
和上面处理的类型相反,对比涉及加重图纸或者照片中线条的细节。例如,在肖象中,它可以显示发型中的各根头发。
为达到这一点,需要相对于图象的低频成分提高图象的高频成分。要得到它可以利用和均色相同的基本操作,但是αi(x,y)在-1和0之间。
本发明是根据最佳实施方式说明的。在阅读本公开之后,对于熟练的技术人员各种修改是明显的。这些变更被认为是在本发明的范围和精神之内的,本发明的范围和精神仅以下述权利要求及权利要求的等价物为限。
权利要求书
按照条约第19条的修改
1.在图象处理系统中,用于编辑和显示图象的设备,包括:
产生第一图象的装置:
利用图形用户接口编辑所述第一图象的装置;
产生一个表达式树中的各参数的装置,各参数定义通过所述编辑装置施加到所述第一图象的修改;
存储所述表达式树的装置;以及
通过计算所述表达式树产生第二图象的装置。
2.权利要求1的设备,其中所述第一图象产生装置还包括:
产生原始图象的装置;以及
把所述原始图象预处理为一个图象塔状结构里的一系列子图象的装置,其中各子图象的分辨率要比所述子图象系列中的前一个子图象的分辨率低,并且其中所述子图象系列中的一个子图象被选为所述第一图象。
3.权利要求2的设备,其中所述选定的子图象具有的分辨率对应于一特定的显示器分辨率并且对应于所述第二图象的一特定放大水平。
4.权利要求1的设备,其中所述存储装置按表达式树中的节点存储和各次修改相关的所述参数。
5.权利要求1的设备,其中参数为和位置有关的参数。
6.在包括显示设备、计算机和输入设备的图象处理系统中,一种编辑图象的方法,包括下述步骤:
在所述显示设备上显示一部分所述图象;
通过操纵所述输入设备,选择一种编辑操作,以对所述图象的所述显示部分进行选择性的编辑;
分配含有元素的屏幕阵列,以定义施加到所述图象的所述显示部分上的编辑;
向所述屏幕阵列元素填充由所选编辑操作定义的与现有位置有关的参数;
当完成所述编辑时更新所述屏幕阵列元素;以及
为反映所述更新的屏幕阵列元素更新所述图象的所述显示部分,以便显示所述图象的所述显示部分的编辑后版本。
7.权利要求6的方法,还包括步骤:
通过操纵所述输入设备,选择所述图象的不同视图以供显示;
根据所述屏幕阵列元素的所述现行值修改所述与现有位置有关的参数;以及
在所述显示设备上显示所述图象的所述不同视图。
8.权利要求7的方法,其中所述不同的视图或者是与前面所述图象的所述显示部分不同的所述图象的一部分,或者是所述图象的前面所述显示部分的不相同的放大水平。
9.权利要求6的方法,还包括下述步骤:
通过操纵所述输入设备,选择一个不同的编辑操作;
利用更新后的屏幕阵列元素更新所述与现有位置有关的参数;以及
作为表达式树的一层保存所述更新后的与位置有关的参数。
10.权利要求6的方法,其中所述更新所述显示步骤进而包括对所述屏幕阵列元素和所述图象的所述显示部分的光栅图象处理步骤,以显示所述图象的所述显示部分的所述编辑后版本。
11.权利要求6的方法,还包括下述步骤:
通过操纵所述输入设备,选择一种把所述图象的编辑后版本打印到打印机上的操作;
根据所述屏幕阵列元素的所述现行值修改所述与现有位置有关的参数;以及
对所述图象的所述编辑后版本的光栅图象处理,以把所述图象的所述编辑后版本打印到所述打印机上。
12.权利要求10或11的方法,其中所述光栅图象处理步骤进而包括下述步骤:
利用所述屏幕阵列元素更新所述与现有位置有关的参数;
执行逆变换以把所述显示上的多个离散象素位置变换为连续空间里的多个位置;
利用更新后的与位置有关的参数计算连续空间里各个位置的象素颜色;以及
把所述计算后的象素颜色缓冲存储到缓冲器里;
当填满所述缓冲器时在所述显示设备上显示所述象素颜色。
13.权利要求12的方法,其中所述计算步骤进而包括步骤:
求解具有下边形式的一序列基本操作:
Fi(x,y)=αi(x,y)·Fi-1(x,y)+βi(x,y)·Ii(Pi(x,y))+γi(x,y)其中:
Fi(x,y)是连续空间里位置(x,y)上的象素颜色;
αi(x,y)是(x,y)的标量函数,代表先前已计算的基本操作Fi-1(x,y)在图象的该位置上所产生的存在度;
Fi-1(x,y)是一个函数,代表由表达式树中的先前层Li-1定义的图象;
βi(x,y)是一个标量函数,代表输入图象Ii的颜色在位置(x,y)的存在度;
Ii(x,y)代表一个输入图象;
Pi(x,y)表示几何变换,包括输入图象Ii的一次或多次的旋转、定标和变形,以及
γi(x,y)是一个可以影响位置(x,y)的颜色值的与位置有关的参数。
14.权利要求13的方法,其中所述计算步骤进而包括步骤:
求解具有下述形式的全局操作: 其中
γ′和α′j是参数βi、αi、和γi的函数;并且
q是对位置(x,y)处的象素颜色作出贡献的输入图象数。
15.权利要求14的方法,其中所述计算步骤进而包括下述步骤:
为所述图象的所述显示部分的所述多个位置的一个子集计算所述象素颜色;
从与该位置子集关联的参数中对不在该位置子集里的多个选择位置上的参数βi,αi和γi进行插值;以及
利用全局操作和所插值的参数计算不在该子集里的位置上的象素颜色。
16.权利要求6的方法,还包括步骤:
在选择供显示的一部分图象之前对该图象进行预处理;
其中所述预处理步骤包括下述步骤:
从所述图象生成一个图象塔,图象塔包括从所述图象衍生出来的多个降低分辨率的图象;
对所述图象和所述多个降低分辨率图象的各个所述降低分辨率图象进行分块;以及
所述图象的所述显示部分包含一个或多个来自所述分块后图象或来自一个所述分块后降低分辨率图象的被选择的分块。
17.权利要求16的方法,还包括步骤:
压缩所述分块后图象里的或者所述分块后降低分辨率图象里的至少一块所述分块中的图象信息。
18.在包括输入设备、计算机和显示设备的图象编辑系统里,一种利用涂刷编辑效果编辑图象的方法,包括下述步骤:
在已显示图象中的第一位置上定义一个要实行涂刷编辑效果的区域;
通过操纵所述输入设备,把所述已显示图象里的所述区域移动到第二位置上;
根据所述区域从所述第一位置到所述第二位置的平移的方向和距离定义一个位移矢量;
计算在所述第二位置上的所述区域里的但不在所述第一位置上的所述区域里的象素值;以及
显示计算后的象素值。
19.权利要求18的方法,其中所述区域的大小不受限制。
20.权利要求18的方法,其中所述第一和第二位置之间的运动速度不受限制。
21.权利要求18的方法,其中所述象素值计算步骤进而包括根据计算后的象素值更新屏幕阵列里元素的步骤。
22.权利要求21的方法,其中所述显示步骤进而包括为显示所述显示图象的编辑后版本对所述屏幕阵列元素和所述显示图象进行光栅图象处理的步骤。
23.权利要求22的方法,其中所述显示步骤进行包括为把所述显示图象的编辑后版本打印到打印机上对所述屏幕阵列元素和所述显示图象进行光栅图象处理的步骤。
24.权利要求22或23的方法,其中所述光栅图象处理步骤进而包括下述步骤:
利用所述屏幕阵列的所述更新后元素更新与位置有关的参数;
执行反变换以把所述显示器上的多个离散象素位置变换为连续空间里的多个位置;
利用更新后的与位置有关的参数计算连续空间里各个位置的象素颜色;
把所述计算后的象素颜色缓冲存储到缓冲器里;以及
当所述缓冲器被填满时,在所述显示设备上显示所述象素颜色。
25.权利要求24的方法,其中所述计算步骤进而包括下述步骤:
求解具有下述形式的一系列基本操作:
Fi(x,y)=αi(x,y)·Fi-1(x,y)+βi(x,y)·Ii(Pi(x,y))+γi(x,y)其中
Fi(x,y)是连续空间里的位置(x,y)上的象素颜色;
αi(x,y)是(x,y)的标量函数,代表由先前已计算的基本操作Fi-1(x,y)所产生的图象在该位置上的存在度;
Fi-i(x,y)是一个函数,代表由表达式树中的先前层Li-1定义的图象;
βi(x,y)是一个标量函数,代表输入图象Ii的颜色在位置(x,y)的存在度;
Ii(x,y)代表一个输入图象;
Pi(x,y)表示几何变换,包括输入图象Ii的一次或多次的旋转,定标或变形;以及
γi(x,y)是一个可以影响位置(x,y)的颜色值的与位置有关的参数。
26.权利要求25的方法,其中所述计算步骤进而包括步骤:
求解具有下述形式的全局操作:
其中
γ′和α′j是参数βi、αi和γi的函数;以及
q是对位置(x,y)处的象素颜色作出贡献的输入图象数。
27.权利要求25的方法,其中所述计算步骤进而包括下述步骤:
为所述显示图象里的所述多个位置的一个子集计算所述象素颜色;
从与该位置子集关联的参数中对不在该位置子集里的多个所选择位置上的参数βi、αi和γi进行插值;以及
利用全局操作和所插值的参数计算不在该子集里的位置上的象素颜色。
28.一种编辑图象的方法,包括下述步骤:
输入一个输入图象;
把该输入图象预处理为一系列的降低分辨率的图象;
选择该一系列降低分辨率的图象中的一个以供编辑;
在连续颜色空间里编辑该图象;
定义显示设备里的多个象素位置;
把该显示设备里的这些象素位置映射到该连续颜色空间里的位置上;
在该连续颜色空间里的各被映射的位置上计算象素颜色;
在该显示设备上的关联象素位置上显示各象素颜色。
29.权利要求28的方法,其中所述预处理步骤进而包括对所述降低分辨率的图象进行分块的步骤并且所述选择步骤选择所述分块的一块或多块以供编辑。
30.权利要求28的方法,其中所述编辑步骤进而包括下述步骤:
分配含有元素的屏幕阵列,以定义施加到所述显示图象上的编辑;
向所述屏幕阵列元素填充由所选编辑操作定义的与现有位置有关的参数;以及
当完成所述编辑操作时更新所述屏幕阵列元素。
31.权利要求30的方法,其中所述显示步骤进而包括为显示所述显示图象的编辑后版本对所述屏幕阵列元素和所述显示图象进行光栅图象处理的步骤。
32.权利要求30的方法,其中所述显示步骤进而包括为在打印机上打印所述显示图象的编辑后版本对所述屏幕阵列元素和所述显示图象进行光栅处理的步骤。
33.权利要求31或32的方法,其中所述光栅图象处理进而包括下述步骤:
利用所述屏幕阵列元素更新与位置有关的参数;
执行反变换以把所述显示上的多个离散象素位置变换为连续空间里的多个位置;
利用更新后的与位置有关的参数计算连续空间里各个位置的象素颜色;
把所述计算后的象素颜色缓冲存储到缓冲器里;以及
当填满所述缓冲器时,在所述显示设备上显示所述象素颜色。
34.权利要求33的方法,其中所述计算步骤进而包括下述步骤:
求解具有下述形式的一系列基本操作:
Fi(x,y)=αi(x,y)·Fi-1(x,y)+βi(x,y)·Ii(Pi(x,y))+γi(x,y)其中
Fi(x,y)是连续空间里的位置(x,y)上的象素颜色;
αi(x,y)是(x,y)的标量函数,代表由先前已计算的基本操作Fi-1(x,y)产生的在图象在该位置上的存在度;
Fi-i(x,y)是一个函数,代表由表达式树中的先前层Li-1定义的图象;
βi(x,y)是一个标量函数,代表输入图象Ii的颜色在位置(x,y)的存在度;
Ii(x,y)代表一个输入图象;
Pi(x,y)表示几何变换,包括输入图象Ii的一次或多次的旋转,定标或变形;以及
γi(x,y)是一个可以影响位置(x,y)的颜色值的与位置有关的参数。
35.权利要求34的方法,其中所述计算步骤进而包括步骤:
求解具有下述形式的全局操作: 其中
γ′和α′j是参数βi、αi和γi的函数;并且
q是对位置(x,y)处的象素颜色作出贡献的输入图象数。
36.权利要求35的方法,其中所述计算步骤进而包括下述步骤:
为所述图象的所述显示部分中的所述多个位置的一个子集计算所述象素颜色;
从与该位置子集关联的参数中对不在该位置子集里的位置上的参数βi、αi和γi进行插值;以及
利用全局操作和所插值的参数计算不在该子集里的位置上的象素颜色。