專利名稱:配色系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明總體涉及操作系統(tǒng)軟件結(jié)構(gòu),具體說,是支持色彩處理的操作系統(tǒng)軟件結(jié)構(gòu)和方法。
計算機系統(tǒng)是信息處理系統(tǒng),設計用于處理包括文本和圖形在內(nèi)的各種信息。這些計算機系統(tǒng)包括軟、硬件,已越來越成熟,已經(jīng)可以處理色彩信息,只是支持和處理色彩信息的能力仍然有限。例如,計算機能力受限的一個領域涉及交互和支持多種外設,這些外設在計算機控制下顯示、打印、標繪色彩或把色彩展示給觀眾;另一受限制的領域是計算機程序員或用戶在計算機系統(tǒng)上在自己選擇的“色空間(是指把值賦予色彩以致該空間的所有色彩一致相關(guān)的系統(tǒng))”中對色彩信息進行處理方面。
有關(guān)上述的一個方面更具體而言,較為普遍的外設包括計算機顯示器和電視熒光屏之類的顯示設備,噴墨,激光及光刻印刷之類的打印機,以及靜電和轉(zhuǎn)筒/平板之類的繪圖儀。每種這類設備都可耦合到計算機系統(tǒng)或與之交互,而該計算機系統(tǒng)中的計算機系統(tǒng)硬件,操作系統(tǒng)軟件和應用程序軟件處理被顯示,打印或標繪的色彩信息。
這些彩色信號處理外設至少涉及兩個方面(1)它們運行的色空間,以及(2)它們的彩色的設備相關(guān)度。色空間是一個三維空間,其中的每一點都與一色彩對應。例如,RGB色空間是這樣一個設備色空間,其中每點都是由紅(R),綠(G),蘭(B)色素的加成量形成的色彩。彩色監(jiān)視器或電視屏幕通常就是在RGB色空間中操作,其中,監(jiān)視器上的紅、綠、蘭色熒光物質(zhì)發(fā)出的光被組合以顯示一特定顏色。另一例子是CYMK色空間。在這個色空間里,每一點是由深蘭(C),品紅(M),黃色(Y)和黑色(K)的基本量組成的顏色。噴墨打印機通常在CYMK色空間中操作,其中,油墨染料被組合形成在硬考貝介質(zhì)上的顏色。其他色空間與各種先有技術(shù)中已知色彩信息處理設備有關(guān)。
色彩信息處理設備相關(guān)性與每個設備本身所特有的“色域”有關(guān)。色域是在色彩空間內(nèi)由給定設備的一組著色劑熒光物質(zhì),油墨或其它著色劑產(chǎn)生的顏色的范圍。換言之,給定設備的色域構(gòu)成了可由設備產(chǎn)生可見色彩的特定范圍。例如,由一制造廠商生產(chǎn)的一種RGB彩色監(jiān)視器與另一廠商生產(chǎn)的RGB彩色監(jiān)視器可能有不同的色域。即使同一家廠商生產(chǎn)的不同型號的彩色監(jiān)視器亦可有不同色域,從而使產(chǎn)生的顏色有設備相關(guān)性。此外,每個設備都可以有自己的色“輪廓(它是一個包括色域和七個色調(diào)再現(xiàn)的數(shù)據(jù)集)”,它衡量該特定設備在其色域范圍內(nèi)實際產(chǎn)生的色彩偏離理想標準多少。例如,在兩個不同的彩色監(jiān)視器上顯示的同一紅色帶可能呈現(xiàn)不同的紅色,從而導致設備相關(guān)性和色彩偏差。為了更為詳細地解釋本說明書將描述和圖示的色彩,色空間,色域,以及其他有關(guān)色彩的原理,可參見由Fred W.Billmeyer Jr.和Max Salzman,John Wiley和Sons的《Principles of Color Technology》(1981年第二版以及由Foley等人所著并由Addison-Wesley出版公司1990年出版的《Color and the Computer》一書。
先有技術(shù)計算機系統(tǒng)中的色彩信息處理的一個特性與“配色”有關(guān)。計算機系統(tǒng)的用戶可能想用打印機把出現(xiàn)在彩色監(jiān)視器上的彩色圖象制成硬考貝,也可能想把出現(xiàn)在打印機的硬考貝上的一個彩色圖象顯示到監(jiān)視器上。由于這些外設操作在不同色空間并有不同色域和輪廓,所以出現(xiàn)在一個設備上的圖象的顏色與出現(xiàn)在另一設備上的顏色將不一致。但是計算機系統(tǒng)將有一個軟件操作系統(tǒng)結(jié)構(gòu),由它們實現(xiàn)配色,從而使在一個設備上出現(xiàn)的色彩與傳送到另一設備的色彩,即使不是實際上完全一致也盡可能一致。
先有軟件操作系統(tǒng)結(jié)構(gòu)體系的色彩處理能力受到限制。其限制之一為其不能支持一給定的外設。該外設的色空間無法被修改和設計以使體系結(jié)構(gòu)而得到支持。先有技術(shù)的體系結(jié)構(gòu)可以支持和匹配特定外設(例如有自己的色空間,色域和輪廓特性的彩色監(jiān)視器)和另一外設(例如有自己的色彩特性的特定的彩色打印機)的色彩。另一限制是當至少一種彩色監(jiān)視器和打印機的色彩特性與上述特定監(jiān)視器和打印機的色彩特性不同卻與計算機相耦合,以及/或還有其它種類的外設(例如繪圖儀或彩電攝像機)與計算機相連時,先有技術(shù)計算機系統(tǒng),尤其是其操作系統(tǒng)結(jié)構(gòu),便將不能支持這些不同外設的配色中任何一個。
就上述的另一方面而言,計算機系統(tǒng)的用戶可能想要工作在他們自己選擇的多個色空間中,這些色空間與先有的能力有限的操作系統(tǒng)體系結(jié)構(gòu)所支持外設的色空間不同。例如,除RGB和CYMK色空間之外的兩種已知色空間是單位光亮矢量(LUV)和LUV色調(diào),飽和和照明(HSL)色空間。但是,工作在有先有的能力有限的操作系統(tǒng)結(jié)構(gòu)的計算機系統(tǒng)中的用戶只能工作在監(jiān)視器的RGB色空間或打印機的CYMK色空間,而非其它色空間。
本發(fā)明提供了一個獨特的操作系統(tǒng)結(jié)構(gòu)以及能支持全部范圍內(nèi)的色信息處理。該方法和操作系統(tǒng)色彩體系結(jié)構(gòu)支持任意多個不同的色彩處理外設以及任意多個不同的配色處理。換言之,本發(fā)明的色彩體系結(jié)構(gòu)不受任何外設制造商對其設備的色彩使用方式的束縛,而且本體系結(jié)構(gòu)也不是一種配色處理方法。進一步說,由于新的色彩信息處理外設與裝有本發(fā)明的體系結(jié)構(gòu)的給定計算機交互,這種新設備的生產(chǎn)廠商可以保證該新設備與現(xiàn)有和系統(tǒng)交互的色彩信息處理外設能進行正確的通信。
操作系統(tǒng)色彩體系結(jié)構(gòu)及方法使該體系結(jié)構(gòu)的用戶可在他們選擇的任一色空間工作,而且該體系結(jié)構(gòu)可以完全擴展,當應用程序需要或生成了新的色彩模型或空間時,就可將該色彩模型或空間加入并由該體系結(jié)構(gòu)支持。同時,本發(fā)明的體系結(jié)構(gòu)確保在色彩模型被加入時,可完全被集成并可使用已被加到該系統(tǒng)中的任意其它色彩模型。
有兩種色空間存在。一種是未校準色或設備相關(guān)的而另一種則是校準色(在彩色顯示技術(shù)中,以絕對值指定的色彩,例如,其值等于(1.0,10.0,0.5)的XYZ也是標準色。)或設備無關(guān)的。根據(jù)本發(fā)明的另一特性,本體系結(jié)構(gòu)支持校準色和有自己色域的未校準色,而每個未校準色都知道如何將自身校準,即如何指定自己與校準色空間之間的關(guān)系。
本發(fā)明的操作系統(tǒng)色彩體系結(jié)構(gòu)由面向目標設計所實現(xiàn)以便實現(xiàn)上述特性。面向目標設計的理論和技術(shù)為已知技術(shù),為此可參照Grady Booch所著《Object Oriented Design with Applications》一書,該書由Banjamin/Cummings出版公司1991年出版。
根據(jù)本發(fā)明的一方面,本發(fā)明所涉及的面向目標的操作系統(tǒng)色彩體系結(jié)構(gòu)包括一個集成色彩模塊,它有一個界面層級類別(TColor)(在面向目標編程中,類別是生成目標的模式的數(shù)據(jù)結(jié)構(gòu)),該類別(Class)定義一個虛擬抽象主類別以及一個儲存器類別,該儲存器類別包括未校準色,類別(TcolorGamut)及其它具體色彩參數(shù),這些參數(shù)包括定義與體系結(jié)構(gòu)交互的每個外設的色域的數(shù)據(jù);以及一個類別(TcolorProfile),該類別包括定義每個外設的色調(diào)再現(xiàn)曲線的數(shù)據(jù);該體系結(jié)構(gòu)還包括一個輸入接口軟件模塊用于從外設把色數(shù)據(jù)輸入到集成的色模塊中;以及一個輸出軟件接口模塊,用于把經(jīng)集成的色彩模塊處理的色數(shù)據(jù)輸出到外設。
根據(jù)本發(fā)明的另一方面,本發(fā)明所涉及的面向目標軟件系統(tǒng)體系結(jié)構(gòu)有一個衍生所有色彩類別的類別(TColor),它是一個主類別以及一個用于校準色的儲存器類別;一個直接從類別(TColor)衍生下來的類別(TDevice Color),它是一個主類別和用于未校準色的儲存器類別;還有至少一個校準色類別(TXYColor)直接來自類別(TColor);至少一個未校準色類別(TRGBColor)直接來自類別(TDeviceColor);還有一個包括存儲至少一個外設的色域信息的樣板的類別(TColorGamut);以及一個類別(TColorProfile),它包括存有至少一個外設的色輪廓信息的樣板。
根據(jù)本發(fā)明的再一方面,本發(fā)明構(gòu)成了一個色彩信息系統(tǒng),它包括可與多個外設交互的數(shù)據(jù)處理器;以及面向目標的軟件操作系統(tǒng)結(jié)構(gòu),該結(jié)構(gòu)有至少以下特性之一(ⅰ)分別在對應的校準和未校準色空間中處理校準和未校準色;(ⅱ)將未校準色轉(zhuǎn)換成校準色;(ⅲ)每種色從自身獲取RGB色和XYZ色;(ⅳ)每種色彩由RGB色和XYZ色設定自身;(ⅴ)每種色彩由TColor構(gòu)成自身;(ⅵ)每種色彩從TColor設定自身;(ⅶ)與了解如何通過具有可測色調(diào)再現(xiàn)曲線而體現(xiàn)自己作為一個理想設備的特性的外設交互。
還有一方面,本發(fā)明所涉及的方法構(gòu)成了這樣的體系結(jié)構(gòu),它從一個源色彩處理設備接收源色彩數(shù)據(jù);調(diào)用一個類別(TColorGamut),該類別分別存有標識源色彩處理設備色域和目的色彩處理設備色域的數(shù)據(jù);又調(diào)用一個類別(TColorProfile),該類別分別存有標識源色彩處理設備和目的色彩處理設備的色輪廓的數(shù)據(jù);再調(diào)用一個類別(TColorMatcher),該類別存有使源色彩設備的色彩和目的色彩設備的色彩相匹配的方法功能,源色彩設備和目的色彩設備的色域數(shù)據(jù)和色輪廓數(shù)據(jù),以使目的色彩數(shù)據(jù)與源色彩數(shù)據(jù)相匹配,并將目的色彩數(shù)據(jù)送至目的色彩處理設備。
其他有關(guān)本發(fā)明的優(yōu)點和方面將結(jié)合附圖和說明書予以詳述。
圖1是根據(jù)本發(fā)明的最佳實施例具有操作系統(tǒng)色彩體系結(jié)構(gòu)的計算機系統(tǒng)框圖。
圖2是根據(jù)本發(fā)明最佳實施例的彩色圖表,用于說明色空間和色域。
圖3是幾何圖形,用于表示根據(jù)本發(fā)明最佳實施例的外設的一種著色劑的色調(diào)再現(xiàn)曲線或輪廓;
圖4展示了根據(jù)本發(fā)明最佳實施例的基本軟件部件的框圖;
圖5是根據(jù)本發(fā)明最佳實施例由面向目標編程設計實現(xiàn)的色彩體系結(jié)構(gòu)的類別圖;
圖6A和6B圖示了在最佳實施例中把色彩從一個色空間轉(zhuǎn)移到一個或多個其它色空間;
圖7A和7B示出了最佳實施例中的CIE配色功能;
圖8展示了根據(jù)本發(fā)明最佳實施例中所實現(xiàn)的配色處理過程的框圖;
圖10是最佳實施例中的系統(tǒng)部件框圖;
圖11是最佳實施例中的系統(tǒng)部件框圖;
圖12A和12B示出了最佳實施例中進行配色置換的兩種方法;
圖13是最佳實施例中的Booch Class的圖,它示出了TColorProfles、TColors以及TGImages;
圖14示出了一最佳實施例中的兩種色輪廓,ColorGamut和ColorProfile;
圖15示出了最佳實施例中的子分類操作,它來自于分類TColorProfile,用于把色輪廓提供給另一應用程序;
圖16示出了根據(jù)本發(fā)明最佳實施例中用于TColor-Matcher和三個系統(tǒng)預置配色分類實施的分類圖;三個系統(tǒng)預置配色分類實施包括TColormetric-ColorMatcher,TAppearance ColorMatcher,以及TExactColorMatcher。
圖1示出了一個計算機系統(tǒng)10,它包括一個計算機或數(shù)據(jù)處理器12,可用于與外設14中至少一個進行交互。每個外設14都是可被加入與處理器12進行交互或與該交互分離的色彩信息處理設備外設。外設14是可提供色彩信息給數(shù)據(jù)處理器12或可從數(shù)據(jù)處理器12處接收色彩信息的色彩信息處理設備的實例。例如色彩信息處理設備14可包括監(jiān)視器16和18,滾筒掃描儀20,平板掃描儀22,攝像和幀取樣機24,傳送打印機26,滾筒/平板繪圖儀28,點陣打印機30,靜電繪圖儀32,激光打印機34,噴墨打印機36和一個光刻印刷打印機38。雖然其中只示出一個數(shù)據(jù)處理器12,但本發(fā)明的操作系統(tǒng)軟件體系結(jié)構(gòu)也支持多個耦合在一并行式硬件結(jié)構(gòu)系統(tǒng)上的處理器12。
與數(shù)據(jù)處理器12交互的外設14是在不同色空間內(nèi)運行的真實設備,例如,監(jiān)視器16和18工作在RGB色空間而打印機36工作在CYMK色空間。此外,圖1示出了可與處理器12交互并在選擇的色空間中操縱色彩信息的虛擬設備40。例如,虛擬設備42可在已知的色空間HLS中控制色彩,而另一虛擬設備(44未示出)可在另一已知色空間xyY中控制色彩。
每個運行在給定色空間中的外設14中可有自己的色域和色輪廓。圖2和圖3分別以示例方式展示了每個外設14的色彩圖46和幾何圖48。圖2的二維圖46示出了色空間CS,例如監(jiān)視器16和18工作的RGB色空間。但是,監(jiān)視器16和18在圖2中有分別不同的色域CG,例如CG16和CG18。圖2中的信息被繪制在“Commission International de 1Eclairage”(CIE)色空間xyY中。雖然色域是三維目標,第三維空間Y未示出。曲線48示出了監(jiān)視器16和18對于一種顏色(即紅色)分別有不同的色輪廓或色調(diào)再現(xiàn)曲線TRC16和TRC18。這兩條曲線表示每個監(jiān)視器16和18在各自的色域CG16和CG18中再現(xiàn)紅色時相對于理想值的偏差。
曲線46和48各顯示色彩數(shù)據(jù),它們被儲存在與外設14交互的數(shù)據(jù)處理器12中并被本發(fā)明的操作系統(tǒng)色彩體系結(jié)構(gòu)利用來完成的下面詳述的色彩信息處理。例如,監(jiān)視器16和18可由不同廠家生產(chǎn),或即使由同家生產(chǎn)但型號不同,且兩者都能運行在RGB色空間中。但是,各自可有不同的色域(CG)以及色調(diào)再現(xiàn)曲線(TRC)。圖1所示所有外設14都有相同情況,因此,本發(fā)明的色彩操作系統(tǒng)體系結(jié)構(gòu)可擴展以支持所有不同類型外設和虛擬設備對色彩信息進行的處理。
圖4示出了操作系統(tǒng)軟件50(顯示于圖1中),它包括輸入界面模塊52,色彩模型體系結(jié)構(gòu)54以及輸出界面模塊56。輸入界面模塊52直接與外設14交互為色彩模型體系結(jié)構(gòu)54提供色彩信息以處理。輸出界面模塊56與外設14交互以把色彩模塊體系結(jié)構(gòu)54處理的色彩信息輸出到外設14。
圖5示出了由面向目標的編程設計實現(xiàn)的色彩體系結(jié)構(gòu)54的類別圖。該類別圖示出了體系結(jié)構(gòu)54的邏輯設計中存在的類別及其關(guān)系。在由Booch,supra,提出的常規(guī)類別圖術(shù)語中,例如TColor(框58)標識的云狀物表示一個類別,它是具有皺邊邊界的抽象概念。另外箭頭所示的其它圖符指出了類別之間的繼承關(guān)系,例如TXYZColor(框58A)標識的類別是從類別TColor繼承而來。而TSpectral Color(框58 Aa)標識的類別從類別TXYZColor繼承而來。通常,在面向目標設計中的一個類別或目標封裝結(jié)構(gòu)(即數(shù)據(jù))和操作在結(jié)構(gòu)上的行為(即方法功能)。
色彩體系結(jié)構(gòu)54可以任意一種面向目標的編程語言寫成,例如已知的Smalltalk,Ada,CLOS,C以及C++。本說明書中敘述的體系結(jié)構(gòu)是以C++寫成的。
以面向目標原理為基礎的體系結(jié)構(gòu)54有若干馬上就要敘述到的通用特性。數(shù)據(jù)被抽象和封裝,即表示色彩的目標或包含色彩的目標可以用有多種類型的數(shù)據(jù)格式的多種格式表示,而無需改變整個體系結(jié)構(gòu)54。對目標的界面將保持不變而目標本身是抽象和獨立的。在面向目標的設計中,一個界面是一個隱藏了類別或目標的結(jié)構(gòu)和行為的類別或目標的外視圖。
正如以下要涉及的詳細敘述的,所有自色彩主類別(例如主類別TColor)衍生出的目標將具有主類別所有的特性并且相對主類別操作而言是多形的,這被稱為繼承,其意為任何從主類別衍生出的色彩目標繼承主類別的特性并可被用作表示主類別的示例或在主類別被調(diào)用時被取代。這使得系統(tǒng)體系結(jié)構(gòu)54可使用和表示實際無限的色空間,而無需程序員或用戶準確理解數(shù)據(jù)內(nèi)涵如何表示。因此,在新的色彩模型和配色法得到開發(fā)時色空間和配色就可以得到擴展,這正是體系結(jié)構(gòu)54的可擴展特性。
此外,若一主類別由一樣板類別表現(xiàn)時,上述特性得到進一步發(fā)展。在C++編程語言中,樣板類別指一組共享同樣特性的類別,換言之,是多個類別的類別,以下敘述幾個樣板類別。
作為例子,考慮一個由一般抽象類別TColor表示的目標。假設該目標的內(nèi)容由四個分量部分C(深蘭色),M(品紅色),Y(黃色)和K(黑色)所表示。這些分量部分的大小和限定由目標掌握而使其不為用戶所知曉。再如另一TColor類別目標,其分量由國家電視標準控制(NTSC)的YIQ值組成,僅又要由目標本身進行定義。YIQ是電視標準,其中Y代表亮度(Intensity),I代表同相(In Phase),而Q代表顯示相位(Quantum Phase)。一種顏色可加至另一種之中(有限定的加入),或通過訪問界面的方法功能使一種色彩與另一色彩匹配或?qū)⑵淇钾惖搅硪簧噬?,在偽碼中,加入匹配或考貝這三種替換可編寫如下/*These are the definitions of two different types of color classes*/class TCMYKColorpublic TColor{…//Definition for CYMK color};
Class TYIQColorpublic TColor{//Definition for YIQ color];
/*Now instantiate one of each*/TYIQColor colorYIQ(i,y,q);//set with some predefined i,y,q valuesTCMYKColor colorCMYK(c,m,y,k);//set also with some predefined valuesTXYZColor colorXYZ;//some other color object/*Add the two colors together to make a third*/colorXYZ=colorYIQ+colorCMYK;
/*convert colorCMYK to match color YIQ*/=colorYIQcolorYIQ;//the original colorCMYK is goneat this point
由于相加操作,即存在類別Color(框58)中的方法功能已由主類別TColor定義,所以上述操作是完整的且被充分定義的。該加操作可由主類別完成的方式在于首先把色彩CMYK和YIQ轉(zhuǎn)換或變換成一通用和已知的校準色(在本例中為XYZ)。即采用給定的轉(zhuǎn)換處理或算法(作為方法功能存于類別TColor)把色彩YIQ和CMYK分別轉(zhuǎn)換成色彩XYZ。這兩個XYZ分量然后被加入XYZ色空間以獲得在XYZ空間合成色。若最終色是要XYZ色。則不用由給定的轉(zhuǎn)換算法(例如作為方法功能存在類別(Color中)把合成色XYZ再轉(zhuǎn)換成最終色并將其存在相應類別之中。
體系結(jié)構(gòu)54還支持在一個色空間中的操作,例如,TXXXColor=TXXXColor12+TXXXColor2,或在兩個色空間之間的操作,例如,TXXXColor=TFOOColor+TBARColor。在一個色空間中的操作由該色空間定義。在兩個色空間中的操作由變換到一校準色空間(例如XYZ)定義運行在該校準色空間中爾后不再變換。
體系結(jié)構(gòu)54的另一通用特性是所有色彩類別(校準的或未校準的)均來自主類別TColor(框58)。如下所述,這使得結(jié)構(gòu)54可以使用在色彩上的面向目標的多形原理。多形性是這樣一個概念,根據(jù)這個概念,一個名字(例如變量說明)可以代表由一個通用子類別(superclass)(例如類別TColor)聯(lián)系起來的許多不同類別的目標;如此,任何由該名字代表的目標可以不同方式響應某些操作比較集。
此外,圖5的類別圖表示的色彩結(jié)構(gòu)54實際上有兩個層級。第一層級由類別Color(框58及其子類別)指示。如已指出的,類別Color既是定義虛擬抽象主類別的界面,還是一個儲存器類別(該類別包含設備獨立或用于把色彩變換到另一色空間并進行配色的校準色,以下將詳述)。結(jié)構(gòu)54的第二層級由TDeviceColor(框60及其子類別)標識的類別所示。這一類別是定義基于虛擬抽象的分類的界面和一個儲存器類別(該類別用于下述的設備相關(guān)或未校準色空間)。每一類別Color(框58)或TDeviceColor(框60)都是一個抽象主類別,這些類別被編寫以使其子類別加到類別結(jié)構(gòu)(數(shù)據(jù))和行為(成員功能)之中。
除了上述普遍特性外,色彩體系結(jié)構(gòu)54具有下列至少之一的特殊特性1.體系結(jié)構(gòu)54在相對的色空間中分別處理每一色彩,無論是校準的或未校準的色彩,例如Lab或HSL。
2.體系結(jié)構(gòu)54處理變換為校準色的色彩;
3.每一色彩可從一給定未校準色(例如RGB色)和一給定校準色(例如XYZ色)中“設定”其本身。
4.每種色彩可將其本身“設定”成一給定的未校準色(例如RGB色)和一給定的校準色(例如XYZ色)。
5.每種色彩可從一種色中“設定”其本身。
6.每種色彩可用一種色彩構(gòu)成其本身。
7.體系結(jié)構(gòu)54可支持知道外設14可產(chǎn)生/紀錄何種顏色(即其色域CG為何)的任意外設。
8.體系結(jié)構(gòu)54可支持任何知道外設的理想程序(即其色調(diào)再現(xiàn)曲線(TRC)的外設。
由于每種色都在相關(guān)的色空間中進行處理,這意味著色彩被完全定義而且可變換到和變換出該空間。而且,由于所有色都會或可以被變換成校準色,所以把一種色彩從一個空間正確地變換到另一空間是可能的。但這并不意味著設備14可以生成該色彩。若源設備14(如監(jiān)視器16)的色彩超出了目的設備14(例如打印機34)的色域,則須采用配色算法。若目的色域不等于或不包括在源色域中,則配色將不是互逆的。
在使用色彩體系結(jié)構(gòu)54時,應該至少有一個可使所有色彩被變換到或變換出的色空間。舉例來說,這個空間就是XYZ色空間,因為該空間包含所有已知的可見色彩。但是實際上,將XYZ色空間選作供所有色變換進入和變換出的色空間并不完全令人滿意。另一可用的色空間是RGB色空間。這是由于使用已知算法可把幾乎所有的未校準色變換進入及變換出RGB色空間。因此,從實用觀點出發(fā),體系結(jié)構(gòu)54支持另一處理,即每種色彩可以由或從XYZ色空間及由或從RGB色空間設定/獲取其本身。
圖6A示出了體系結(jié)構(gòu)54提供的變換,它把一個給定的未校準色變換成在XYZ色空間中的色。圖6B圖示了體系結(jié)構(gòu)54把一給定校準色變換到RGB色空間的變換。如圖6A所示,用已知變換算法可把在色空間1中的一個未校準色變換成為未校準色例如在RGB色空間中RGB色,然后再用已知變換算法將其變換成XYZ色空間的XYZ色。如圖6B所示,用已知算法可把色空間2的校準色變換成XYZ色空間的XYZ色,然后再用已知算法將其變換成RGB色空間的RGB色。
進而,在本說明書中所用術(shù)語“未校準(uncalibrated)”色空間與不是基于CIE的色空間相關(guān)。即“未校準”涉及已知(RGB,HSV,HSL,CMY,CMYK)但未在一個CIE空間中有清楚定義的有代表性色空間,CIE空間即為校準空間(例如XYZ)。在上述未校準空間中的色彩通常取決于設備14,因為它產(chǎn)生該色彩或顯示該色彩。例如,從一個RGB空間或設備14產(chǎn)生出的飽和紅色可能都有值1.0,于是任何兩種未校準色都可以被認為在不同色空間,即使它們可能在同一類別中。例如,若色彩A和B都是RGB色,若其來自于不同設備14,則其可能實際處于不同色空間中。本發(fā)明的體系結(jié)構(gòu)自動支持這些色彩目標的處理,而無需用戶使用它們以了解其來源。
現(xiàn)在將簡述圖5所示本發(fā)明的色彩操作系統(tǒng)體系結(jié)構(gòu)的色彩類別。界面是以用C++語言的.h或標題文檔展示的,其文檔名與類別名一樣(無詞頭“T”)。
類別MCollectible(框62)圖5的框62所指名為Mcollectible的類別定義了所有其它類別都從此衍生的總目標類別。它是一個抽象類別,許多子類別將重新定義(即加入或修改)作為該類別(框62)說明的一部分的一些或全部方法功能。圖5所示的所有色彩類別重新定義Mcollectible(Block 62)的下述方法功能,以使它們正常運行IsEqualOperator=Operator>>=StreamingOperator<<=Streaming類別TAttribute(框64)屬性是表征和共享某些目標特性的通稱。屬性提供一種方式使色彩及其色特征被不同任務共享,并由體系結(jié)構(gòu)54的所有用戶匯集起來供共用。因此,類別TAttribute(框64)是一個管理共享處理的主類別,并可在或若這種共享需要時包括在體系結(jié)構(gòu)54中。
類別TColorGtamut(框66)類別TColorGamut衍生自類別TAttribute并存儲與數(shù)據(jù)處理器12交互的每個外設14的色域CG信息。如前所述,色域用于適當?shù)匕岩粋€外設(如監(jiān)視器16)的色彩轉(zhuǎn)換成另一外設(如打印機30)的色彩。雖然色彩是由色域轉(zhuǎn)換的,這并不是說該變換位肯定發(fā)生于色域之中。為確保色彩位于色域之中,可用一給定配色算法。執(zhí)行該配色算法的配色方法功能包括在類別TColorProfile之中見述于以下框68。
用于校準色空間XYZ空間中的一個色域由XYZ空間中八個XYZ點定義。它們分別是深蘭色,綠色,黃色,紅色,品紅色,蘭色,黑色和白色。通常,每個外設14(彩色打印機,彩色掃描儀,彩色監(jiān)視器等)都有自己的色域CG,例如圖2所示,而且該色域信息應由設備生產(chǎn)商具體說明。類別TColorGamut(框66)存儲兩個構(gòu)成程序,一個是例如定義蘋果計算機公司(Apple Computer,lnc,Cupertino,California)生產(chǎn)的13寸RGB監(jiān)視器的空構(gòu)成程序,而另一個則是將包括色域的文檔名視為其變量的文檔構(gòu)成程序。(一個構(gòu)成程序是一種生成一個目標和/或創(chuàng)立其初始化狀態(tài)的方法功能)類別TColorGamut(框66)包括幫助程序員寫標題(稱為.h文檔)以存儲該色域信息的樣板。當把新外設14加到數(shù)據(jù)處理器12時,如下所述,其特定的色域數(shù)據(jù)可用該樣板加到類別TColorGamnt中。
類別TColorProfile(框68)類別TColorProfile衍生自類別Color Gamut(框66)并存儲加到處理器12的每個外設14的色輪廓數(shù)據(jù)。此外,類別TColor Profile還有一種裝置可在類別TColor Matcher(框70)中“獲得”一給定配色程序(Color Matcher是一種具有輸出設備產(chǎn)生色彩的能力的信息的軟件模塊)的算法以執(zhí)行至少一種配色算法,它采用了類別TColorGamut的色域CG信息以及類別TColorProfile的色輪廓信息。類別TColorProfile(框68)包括一個樣板程序,它能幫助程序員編寫標題文檔并在新外設14耦合到數(shù)據(jù)處理器12時存儲該色輪廓信息。來自于類別TColor Profile的類別TAppleColorProfile(框72)也展示于圖5之中并將結(jié)合配色在下面予以詳述。
作為例子,一個給定外設14的色輪廓包括分別用于七種色彩的七條色調(diào)再現(xiàn)曲線(TRCs)。它們分別是深蘭色,綠色,黃色,紅色,品紅色,蘭色和黑色。換言之,為便于解釋,圖3只示出了用于兩個不同外設14的紅色的一條TRC,而類別TColor Profile(框68)分別為每個外設存儲了七條TRC。每一外設的TRCs可由外設14的生產(chǎn)廠商所說明的色域信息之類的TRC數(shù)據(jù)(它們相應于TRC曲線并存在類別TColorProfile中)通過實驗而測定。另一例子是彩色監(jiān)視器16,其中的TRCs可預置到一個稱為(gamma)改正曲線的曲線之中。
類別TColorProfile(框68)還存有兩個構(gòu)成程序,一個是定義一給定外設14(例如蘋果計算機公司生產(chǎn)的13(inch)RGB監(jiān)視器)的色輪廓的空構(gòu)成程序;而另一個則是將包括一色輪廓的文檔名作為其變量的文檔構(gòu)成程序。
類別Color(框58)如上述,類別Color構(gòu)成結(jié)構(gòu)54的一個層級,而且既是定義一個虛擬抽象主類別的界面又是一個用于校準色的儲存器類別。在色彩結(jié)構(gòu)(54)中,一給定色可變換成一個未校準RGB色(設備相關(guān))和/或一個校準的XYZ色(設備無關(guān)),類別Color(框58)有至少三個純虛擬成員功能,它們是GetXYZColor(TXYZColor&aXYZ Color)
GetRGBColor(RGBColor&aRGB Color)constSetColor(const TColor&aColor)這些成員功能保證所有自類別Color衍生出的色彩類別將支持根據(jù)面向目標設計原理的這一功能性。而且,類別Color具有給定色的部件的字段。XYZ色的字段部件是Tristimlus Coord類型,它可具有浮點所具有的全部值。RGB色的字段部件有Intensity類型,是從0.0到1.0之間的范圍。此外,類別Color可以有一不透明字段,其中,不透明值1.0意味著色彩是純粹不透明的而不透明值0.0意味著色彩是透明的。
類別TXYZ Color(框58A)類別TXYZ Color(框58A)衍生自類別Color(框58),從類別Color(框58)衍生出的每一色彩根據(jù)本發(fā)明以下將敘述的體系結(jié)構(gòu)都能將其自身轉(zhuǎn)換或變換到校準的XYZ色。
類別TSpectralColor(框58Aa)類別TSpectralColor(框58Aa)衍生自類別TXYZ Color(框58A)。該類別存儲使用已知的三個由圖7所示的積分式(1)、(2)和(3)表達的配色函數(shù)的方法功能。在這些表達式中,XXX是被配的色彩的光譜能分布而X(u)、Y(u)和Z(u)則是實驗確定的配色函數(shù)。這些函數(shù)定義了上文引用參考材料中敘述的視圖的一個兩度字段的CIE 1931 Standard Calorinetric Observer的配色特性。因此,類別TSpectral Color的CIE配色成功能作為加權(quán)函數(shù)使用以從光譜能量數(shù)據(jù)中獲得XYZ原色。如圖7中所示從光譜信息中計算XYZ的例子。類別TSpectralColor把圖7所示的三個CIE配色光譜能量曲線X、Y、Z作為由該類別的空構(gòu)成程序初始化的靜態(tài)排列存儲起來。
類別TLabColor(框58B)類別TLabColor來自于類別Color(框58)。TLabColor是一個定義一個均勻三色設備的校準色空間的類別。該色空間之值也已由CIE國際標準化了。在一均勻色彩圖中有一兩維坐標(a,b)。L是心理測驗光亮。類別TLabColor用感性線性方式和兩色之間的感性距離來表達色彩。該類別有三個靜態(tài)字段,用于定義參照白色。參照白色可用于把TLabColor(框58B)的成員功能執(zhí)行相關(guān)的亮度,色度,飽和度以及色差。類別TLuvColor變換成TXYZColor。系統(tǒng)預置是參照白色。
類別TLuvColor(框58c)。
類別TLuvColor衍生自類別Color(框58)。該類別也是一個定義均勻三色設備校準色空間的類別。該空間的值已由CIE國際標準化。在一均勻色彩圖上有一兩維坐標(u和v)。L是心理測驗光亮。TLuvColor類別用感性線性方式表達色彩而且兩色之間的感性距離與兩色之間的幾何距離成比例。TLuvColor(框58C)有三個靜態(tài)字段,用于定義參照白色。該參照白色可用于把TLuvColor變換成TXYZColor。系統(tǒng)預置為參照白色。類別TLuvColor的成員函數(shù)執(zhí)行相關(guān)的亮度,色度,飽和度,以及色差。
工業(yè)色彩測量儀之類的外設14采用CIE色彩系統(tǒng)(校準系統(tǒng))。該系統(tǒng)使色彩由光源、目標、及觀察者以一種與輸入和輸出設備都無關(guān)的方式指定。因此,按用戶要求,體系結(jié)構(gòu)54將把三色值XYZ(它們單值定義一種色彩)變換成色彩Lab坐標或色彩LUV坐標。Lab坐標可用于由反射光所檢查的設備14;而Luv坐標可用于光源之類的自照明外設。
類別TxyYColor(框58D)類別TxyYColor(框58D)衍生自類別Color(框58)。色空間xyY可來自類別TXYZColor(框58A)的色空間XYZ。對于在空間XYZ和xyY之間的變換說明見下文。對于色變換及其基礎算法的詳細討論可參見《Color ScienceConcepts and Methods,Quantitative Data and Formulae》該書由Wyszecki等人所著,John Wiley and Sons在1982年出版。
將XYZ變換為xyY(X)/(x=x+y+z) , (YZ)/(y=x+y+z) ,將xyY變換成XYZYYx=x y,Y=Y(jié),Z=(1-x-y)y類別TDeviceColor(框60)該類別來自類別Color(框58)。如上所述,它構(gòu)成兩級結(jié)構(gòu)54的另一層級。類別TDeviceColor既是一個定義虛擬抽象主類別的界面,又是在結(jié)構(gòu)54未校準色的儲存器類別。它包括一個對類別TColorGamut(框66)的構(gòu)成引用。該類別有至少三個純虛擬成員函數(shù)使所有設備相關(guān)或未校準色都既能轉(zhuǎn)換或變換成類別TRGBColor(框60A)中的未校準RGB色又能轉(zhuǎn)換或變換成類別TXYZColor(框60A)中的校準XYZ色,這些成員函數(shù)是GetXYZColor(TXYZColor&aXYZColor)GetRGBColor(RGBColor&aRGBColor)constSetColor(constTColor&aColor)這些成員函數(shù)確保來自TDeviceColor的所有色彩類別都將支持這一功能性。如前所述,為進行變換,取決于定義相關(guān)色被的特定設備14的色域CG應為所知并存儲在類別TColor Gamnt(框68)之中。
類別TRGBColor(框60A)該類別來自類別TDeviceColor(框60)且定義了基于笛卡兒坐標的紅、綠、蘭的色模型,原色可相加并用于大部分彩色監(jiān)視器和彩色光柵圖形系統(tǒng)。三種RGB原色之值應限于0.0至1.0范圍。所提供的該類別的成員函數(shù)把RGB原色限制于該范圍之中。RGB色空間是未校準的;因此RGB色必須相對具體外設14并通過其色域而定義。
類別TCMYKColor(框60B)
該類別衍生自類別TDeviceColor(框60)。它定義了深蘭色(C)、品紅色(M)、藍色(Y)和黑色(K)的色空間。這些色是用于打印機36之類的大部分硬考貝設備的相減合成基色。CMYK值通過首先確定的色彩中的CMYK值再計算。色彩中的黑色量是由關(guān)系式K=minimum(CX,M,Y)所決定。于是K就從CMYK值中被減去以定義該CMYK值。這一技術(shù)在色彩去除時被調(diào)用,它使硬考貝彩色設備通過打印四種而非三色彩來提高輸出質(zhì)量。四原色CYMK的值被限制于0.0原色1.0的范圍。類別TCMYKColor包括將CMYK原色限制在該范圍的成員函數(shù)。由于CMYK色彩模型是未校準的,CMYK色就得相對如打印機36之類的具體彩色設備14的色域CG而定義。
類別THSLColor(框60C)類別THSLColor衍生自類別TDeviceColor(框60)并定義已知色彩模型HSL。色調(diào)(H),亮度(L)及飽和度(S)色彩模型由在上述三維空間中的雙六光束(double-hexcone)所限定。色調(diào)由圍繞L軸的角度測量。紅色發(fā)生在H=0.0時,沿逆時針方向的橫向圍邊提供紅色,黃色,綠色,深蘭色,蘭色和品紅色。把180度加到H值上即可獲得一個色彩補數(shù)。飽和度是從垂直軸沿徑向測量的,其范圍是從0.0到1.0。光亮則從0為黑色(雙六光束的底)到1.0(雙六光束之頂)。該HSL色彩模型是未校準色空間,因此HSL是由一特定彩色外設14通過存儲于類別Color Gamut(框66)中的色域而定義的。
類別TGrayColor(框60E)該類別自TDeviceColor(框60)中衍生,定義灰度級模型,其中,灰度值可限于0.0基色1.0的范圍。該類別包括把灰度級鉗制于上述范圍的成員函數(shù)。灰度級色彩模型是未校準的,因此其是相對于一特定彩色外設14的色域而定義的。
加入新的色彩類別作為體系結(jié)構(gòu)54的擴展性部分,可在開發(fā)新色彩提型時將其它色彩類別加入。例如,假設開發(fā)了一個新的校準色空間ABC。為在該校準色空間ABC中表示一個色,可把一個新的色彩類別TNewCalColor(例如TABColor),(由圖5中的虛線所示)定義為衍生并繼承于類別Color(框58)。該新類別TNew Cal Color的成員函數(shù)即可由程序員作為類別定義的部分編寫,以便把色ABC變換到XYZ色空間以及把色ABC從XYZ色空間變換出來。同樣,可把色ABC變換到和變換出由類別Color提供的其它色空間。
作為一個特例,Tektronix公司(Beaverton,Oregon)已開發(fā)出一種校準色空間HVC以及把該空間轉(zhuǎn)換成其它空間的方法。通過定義一個衍生自類別Color(這種公開的轉(zhuǎn)換或變換被提供作為該類別定義的一部分)的類別THVCCdop(未示出),而擴展結(jié)構(gòu)54,便可很容易地提供了這一HVC色空間色變換由加到結(jié)構(gòu)54的校準色空間來定義,但它作為Color的主類別目標又與結(jié)構(gòu)54的其余部分交互。以類似方式,新開發(fā)的未校準色彩類別可通過定義一個類別TNewDeviceColor(這種公開的轉(zhuǎn)換或變換被提供了這一HVC色空間色變換由加到結(jié)構(gòu)54的其余部分交互。以類似方式,開發(fā)的新的未校準色彩類別可通過定義一個類別TNew Device Color(在圖5中由虛線所示)的方式而加入。該類別TNewDeviceColor衍生于并繼承于類別TDeviceColor(框60)。
現(xiàn)在將更加詳細地闡述圖5中所示的類別Color(框58)和類別(框60A)中的方法函數(shù)。
類別Color(框58)Gets(獲得)IntensityGetOpacity();
只是返回不透明字段的值。
GetXYZColor(TXYZColor&aXYZColor)=0;
每個子類別可置換該方法函數(shù),每個子類別應知道如何為其自己獲得XYZColor。
GetRGBColor(TRGBColor&aRGBColor)GetLuvColor(TLuvColor&aLuvColor)GetLabColor(TLabColor&aLabColor)GetGrayColor(TGrayColor&aGrayColor)GetCMYKColor(TCMYKColor&aCMYKColor)GetHLSColor(THLSColor&aHLSColor)GetxyYColor(TxyYColor&axyYColor)
GetHSVColor(THSVColor&aHSVColor)GetYIQColor(TYIQColor&aYIQColor)GetDEV3Color(TDEV3Color&aDEV3Color)GetCALColor(TCALColor&aCALColor)這些方法函數(shù)存儲在類別Color(框58)中以提高效率,子類別可任意置換這些方法功能。每個衍生自類別Color的色空間子類別應該在自己的類別中置換方法函數(shù)。例如,類別THSVColor(框58D)應置換存儲于類別Color中的GetHSVColor,以便避免對校準的XYZ的中間轉(zhuǎn)換,從而節(jié)省轉(zhuǎn)換時間。
GetTransformedColor(Tcolor&aColor)const;
該方法函數(shù)總是由中間轉(zhuǎn)換到XYZ色空間獲得的。因此,只要色彩在同樣色空間(例如RGB)中,但有不同色域CG,該方法函數(shù)都應該為使用。
Returns(返回)TRGBColorReturnRGBColor()const;
TLuvColorReturnLuvColor()const;
TLabColorReturnLabColor()const;
TGrayColorReturnGrayColor()const;
TCMYKColorReturnCMYKColor()const;
THLSColorReturnHLSColor()const;
TxyYColorReturnxyYColor()const;
THSVColorReturnHSVColor()const;
TYIQColorReturnYIQColor()const;
TDEV3ColorReturnDEV3Color()const;
TCALColorReturnCALColor()const;
這些方法函數(shù)存儲于類別Color中以提高效率,但子類別可對其中任意一個進行置換。每個衍生自類別Color的色空間子類別可在自己的類別中置換這些方法函數(shù)。例如,類別THSVColor(框60D)可在類別Color(框58)中置換方法函數(shù)ReturmHSVColor,以避免對于XYZ的中間轉(zhuǎn)換。
Index(索引)longFindListIndex(TColorList&colors)const;
該方法函數(shù)在色表中能找出最相近的配色。子類別可置換該方法函數(shù)以實施采用Color子類別的特定種類的TColorList方法。
Sets(設置)SetOpacity(GIntensity opacity);
Sets the opacity.
ClampOpacity();
Pins the Opacity to 0.0-1.0SetWithXYZColor(const TXYColor&aXYZColor)=0;
每個子類別都可置換該方法函數(shù)。因為每個子類別都知道如何由一個XYZColor來設定其本身。
SetColor(const TColor& aColor);
該方法函數(shù)用于多形性。每一色彩應能用一個Color多形地“設置”其本身。當置換SetColor時,用戶同一個色彩獲取其對等的XYZ,然后將其轉(zhuǎn)換成自己的格式(它已知如何進行),并對自身數(shù)據(jù)字段進行設定。
SetWithRGBColor(const TRGBColor& aRGBColor);
SetWithLuvColor(const TLuvColor& aLuvColor);
SetWithLabColor(const TLabColor& aLabColor);
SetWithGrayColor(const TGrayColor& aGrayColor);
SetWithCMYKColor(const TCMYKColor& aCMYKColor);
SetWithHLSColor(const THLSColor& aHLSColor);
SetWithxyYColor(const TxyYColor& axyYColor);
SetWithHSVColor(const THSVColor& aHSVColor);
SetWith YIQColor(const TYIQColor& aYIQColor);
SetWithDEV3Color(const TDEV3Color& aDEV3Color);
SetWithCALColor(const TCALColor& aCALColor);
為提高效率,類別Color的子類別可任意置換它們。例如,THLSColor(框60C)可置換SetWithHLSColor以避免到色XYZ的中間變換。
TRGBColor類別(框60A)該類別表示一個存儲下述方法函數(shù)的典型設備相關(guān)色類別。
Constructors(構(gòu)成程序)以下敘述類別構(gòu)成程序。在碼實施體系結(jié)構(gòu)54中調(diào)用該類別時,它們生成TRGBColor目標的新例證。
TRGBColor()該構(gòu)成程序為一空構(gòu)成程序。“空”的意思是指它無需自變量即可生成RGB色,它有兩個衍生物。在該色彩中的所有字段設置都為零。fRed=fGreen=fBlue,且fOpacity=1.0;且所用色域CG也是空的(參見在類別TColorGamut敘述中的構(gòu)成程序)。
TRGBColor(TColor&aColor)TRGBColor(TDeviceColor&aDeviceColor)這些構(gòu)成程序允許從任意校準色(如LabColor或任意未校準的TDeviceColor)中生成多形的RGBColor。如果構(gòu)成中使用了一個未校準色,則RGBVColor使其自己的字段(fRed…fOpacity)從一aDeviceColor空間(例如外設16的色空間)變換到RGB色空間。該RGBColor繼承aDeviceColor的色域CG。另一方面,如果構(gòu)成中使用了諸如Lab之類的Color,則RGBColor結(jié)束于上述的變換的字段而空色域被分配給該新的色彩。這些構(gòu)成程序也用于以下類型aRGBColor=(TRGBCOLOR)SomeOtherColorSpace.
TRGBColor(TRGBColor& aRGBColor)由于它從aRGBColor中生成一個新的RGBColor目標,該構(gòu)成程序是一復制構(gòu)成程序。生成的目標具有與aRGBColor相同的字段和色域CG。
TRGBColor(TColorGamut* the DeviceColorGamut)在新色彩中的所有字段被設置如下fRed=fGreen=fBlue=0,fOpacity=1.0而色域CG被設定為DeviceColorGamut.
TRGBColor(Red,Green,Blue,opacity=1.0);
在新色彩中的所有字段設置如下fRed=Red,fGreen=Green,fBlue=Blue.若什么都不提供,不透明度設定為1.0,或者其被設置為所提供的值。色域CG被設定為空色域。
TRGBC(TColorGamut*DeviceColorGamut,Red,Green,Blur,opacity=1.0);
在該新色彩中的所有字段設置如下fRed=Red,F(xiàn)Green=Green,F(xiàn)Blue=Blue.不透明度在什么都不提供時為1.0,相反則被設置成所提供的值。色域設定為DeviceColorGamut.
Gets(獲取)GetXYZColor(TXYZColor & aXYZColor);
GetRGBColor(TRGBColor & aRGBColor);
GetGrayColor(TGrayColor & aGrayColor);
顧名思義,一次獲取(get)就是從色彩目標中獲取特定的色彩目標。例如,成員函數(shù)GetXYZColor對RGBColor目標做必要的變換以返回aXYZColor。
GetComponents(Red,Green,Blue,opacity);
GetAll(Red,Green,Blue,opacity,theColorGamut);
GetClampedComponents(Red,Green,Blue,opacity);
GIntensity GetRed();
GIntensity GetGreen();
GIntensity GetBlue();
GetComponents只從目標中讀出部件值并將它們返回變量Red,Green,Blue及不透明度之中。
Returns(返回)TRGBColorReturnRGBColor();
該RetumRGBColor返回RGBColor目標,字段,以及色域的確切復制。
Sets(設置)SetWithXYZColor(TXYZColor& aXYZColor);
SetWithRGBColor(TRGBColor& aRGBColor);
SetWithGrayColor(TGrayColor& aGrayColor);
每次SetWith,顧名思義,將來自特定色目標的RGB色目標進行設置。例如,成員函數(shù)SetWithXYZColor做必要的變換以便從XYZColor中獲得RGBColor,并用該色彩設置RGBColor值。色域只在特定情況下才被設置成空域。
SetAll(TColorGamut*theDeviceColorGamut,Red,Green,Blue,opacity=1.0);
SetComponents(Red,Green,Blue,opacity=1.0);
SetRed(GIntensity Red);
SetGreen(GIntensity Green);
SetBlue(GIntensity Blue);
這些是簡單設置。通過的值被用于設置目標值。
SetColor(TColor&*aColor);
定義SetColor以使RGBColors可被設置成對任意種類色彩而言是多形的。
RGBColor Mathoperator<=(TRGBColor&Colorl,TRGBColor&Color2)
operator<(TRGBColor&Color1,TRGBColor&Color2);
operator>(TRGBColor&Color1,TRGBColor&Color2);
operator>=(TRGBColor&Color1,TRGBColor&Color2);
operator!=(TRGBColor&Color1,TRGBColor&Color2);
friend TRGBColor operator+(TRGBColor&Color,TRGBColor&Color2);
friend TRGBColor operator-(TRGBColor&Color1,TRGBColor&Color2);
friend TRGBColor operator*(TRGBColor&Color1,float aScalar);
friend TRGBColor operator/(TRGBColor&Color1,float aScalar);
friend TRGBColor operator*(float aScalar,TRGBColor&Color1);
friend TRGBColor operator/(float aScalar,TRGBColor&Colorl);
TRGBColor& operator+=(TristimulusCoord aScalar);
TRGBColor& operator-=(TristimulusCoord aScalar);
TRGBColor& operator*=(float aScalar);
TRGBColor& operator/=(float aScalar);
TRGBColor& operator=(TRGBColor& Source);
這些方法函數(shù)置換C++中的標準操作員程序,以致它們?yōu)镽GB色彩得到正確的定義。邏輯操作程序如果且僅僅如果條件適用于包括不透明度的Color1和Color2的每個字段部件時才返回一個TRUE。其余操作程序在每個獨立的字段部件(不透明度除外)上執(zhí)行規(guī)定的數(shù)學函數(shù)。
用色彩工作的例子這部分包括一些利用體系結(jié)構(gòu)54使用色彩的例子,給出的大部分例子使用設備相關(guān)(未校準色)的RGBColor或設備獨立(校準色)的XYZColor。如前所述,NullGamut和NullProfile可被定義為蘋果計算機公司生產(chǎn)的13寸彩顯的色域和色輪廓。
friend TRGBColor operator -=(TristimulusCoordaScalar);
如上文所指出的,RGBColor的字段部件RGB屬于GIntensity類型,即一個在0.0和1.0之間的范圍。但是,該限制無需強制實施。所以說在色彩變換期間,尤其是具有不同色域的色彩時,字段部件值處于該范圍之外的情況是有可能遇見的。
制成色彩的例子以下有六個構(gòu)成程序的例子,若調(diào)用,則目標的狀態(tài)被給出如下(1)TRGBColor aRGBColor;
StatefRed=fGreen=fBlue=0.0;
fOpacity=1.0;
fColorGamut=NullGamut;
(2)TRGBColor(0.5,0.7,0.3,0.5);
StatefRed=0.5;fGreen=0.7;fBlue=0.3;
fColorGamut=NullGamut;
(3)TRGBColor(theDeviceColorGamut,Red,Green,Blue);
StatefRed=Red;fGreen=Green;fBlue=Blue;
fOpacity=1.0(set by default);
fColorGamut=theDeviceColorGamut;
(4)TRGBColor aRGBColor(aRGBColor);
StatefRed=aRGBColor.fRed;
fGreen=aRGBColor.fGreen;
fBlue=aRGBColor.fBlue;
fOpacity=aRGBColor.fOpacity;
fColorGamut=aRGBColor->fColorGamut;
(5)TRGBColor aRGBColor(theDeviceColorGamut);
StatefRed=fGreen=fBlue=0.0;
fOpacity=1.0;
fColorGamut=theDeviceColorGamut;
(6)TRGBColor aRGBColor(aDeviceColor);
以下等效處理發(fā)生于該構(gòu)成之中。由于這是一個設備相關(guān)色,所以有其色域CG。此外,所有色彩都知道如何從其本身獲取一個RGB色。
Thus,TRGBColor a TempRGBColor;
aDeviceColor.GetRGBColor(aTempRGBColor);
StatefRed=aTampRGBColor.fRed;
fGreen=aTempRGBColor.fGreen;
fBlue=aTempRGBColor.fBlue;
fOpacity=aDeviceColor->fColorGamut;
設置和獲取的例子本部分說明如何使用某些設置和獲取與色彩工作。在下列例子中,下列色彩被定義成TXYZColor aXYZColor(20,80,90);
TRGBColor aRGBColor1(1.0,0.0,0),aRGBColor2(0.0,1.0,0.0)TRGBColor aRGBColorGamut2(<GHT-ColorGamut);
用一個RGBColor設置一個XYZColoraXYZColor.SetWithRGBColor(aRGBColorl);
該aXYZColor現(xiàn)在有修正的XYZ值,以一個NullGamut來對應aRGBColor。若現(xiàn)在執(zhí)行以下各函數(shù)aXYZColor.GetRGBColor(aRGBColor2);
則aRGB2的狀態(tài)為fRed=1.0;
fGreen=0.0;
fBlue=0.0;
fOpacity=1.0;
fColorGamut=NullGamut;
若下列被執(zhí)行從另一RGBColor中獲取RGBColor若執(zhí)行下述aRGBColor.Get GBColor(RGBColor Gamut2)則aRGBColorGamut2的狀態(tài)為fRed=1.0;
fGreen=0.0;
fBlue=0.0;
fOpacity=1.0;
fColorGamut=NullGamut;
把簡單數(shù)學運用于色彩的例子在結(jié)構(gòu)54中的所有色類別都有一個為它們定義的簡單數(shù)學集。在下例中,定義了下列XYZColorTXYZColor aXYZColor1(0.2,0.1,0.3);
TXYZColor aXYZColor2(0.3,0.2,0.2,1.0);
TXYXColor aXYXColor3;
對邏輯操作而言,色彩的每個獨立字段必須滿足被評價為TRUE的表達式的邏輯條件,因此,aXYZColor1<=aXYZColor2 would yield TRUEaXYZColor1<aXYZColor2 would yield TRUEaXYZColor1>aXYZColor2 would yield FALSE
aXYZColor3=aXYZColor1+aXYZColor2;
若aXYZColor3在求和操作前為fX=0.0fY=0.0fZ=0.0fOpacity=1.0;
在求和操作后aXYZColor3將為fX=0.5fY=0.3fZ=0.3;
fOpacity=1.0;
該色彩的不透明度不進入數(shù)學計算aXYZColor3=aXYZColor1-aXYZColor2;
若在減操作前aXYZColor3為fX=0.0fY=0.0fZ=0.0;
fOpacity 1.0;
在減操作后的aXYZColor3將為fX=-0.1fY=-0.1fZ=-0.1;
fOpacity=1.0;
aXYZColor3=0.5*aXYZColor1;
若在乘操作前的aXYZColor3為fX=0.0fY=0.0fZ=0.0fOpacity=1.0;
乘操作之后XYZColor3將為fX=0.1fY=0.05fZ=0.05fOpacity=1.0;
aXYZColor3=aXYZColor 1/0.5*;
若除操作前aXYZColor3為fX=0.0fY=0.0fZ=0.0;
fOpacity=1.0;
除操作之后的aXYZColor3將為fX=0.4fY=0.2fZ=0.2;
fOpacity=1.0;
使用有色彩的多形性的例2所有色類別衍生自主類別Color(框58)。可以編寫多形函數(shù)和方法函數(shù),它們將TColors。以下給出的即這種方式如何工作的例子。
確定色彩之間的色調(diào)差。
以下方法函數(shù)作為輸入兩個TColors并返回這些色彩之間的色調(diào)差。該色調(diào)差是在Lab或Luv色空間中被準確定義的量。以下例子使用了基于Luv的定義。
Coordinate HueDifference(TColor& RefColor1,TColor&Color2){//Construct two Luv ColorsTLuvColor aLuvColor1(RefColor1),aLuvColor2(Color2);
return(RefColor1.GetHueDifference(Color2));
}確定亮度的相關(guān)性另一例子是計算色彩亮度的相關(guān)性。
Coordinate CorrelateOfLightness(TColor& Color1){//Construct Luv ColorTLuvColor aLuvColor1(Color1)return(a Luv Color1.Get CorreleteOfLightness());
}
配色單色通常,配色發(fā)生在一個內(nèi)部色(在某些色空間,無論校準的或未校準的)被變換到另一色空間之時,尤其是對未校準的色空間(它精密地表示了在一特定設備上的特定色)而言。其逆過程也為如此。在本發(fā)明的結(jié)構(gòu)54中,配色處理及功能在一配色主類別TColorMather(框70)中得以實現(xiàn),該主類別在所有衍生自類別TDeviceColor(框60)的未校準目標內(nèi)部通過對每個這種設備色類別目標中的TColorProfile引用而獲得的。即,正是由于這類引用,TColorProfile(框68)就有了一種從類別TColorMacher(框70)中“獲取”配色程序儲存器的手段。可被配色程序利用的抽樣輪廓在圖5中顯示為類別TApple ColorProfile(框72)。
本發(fā)明的體系結(jié)構(gòu)54并不是指定某一特定配色算法而否定另一種。使用任一通用交換程序的接口(API)程序,都可把任意配色處理放入或存儲在類別TC Clor Matcher(框70)中。也就是說體系結(jié)構(gòu)54可容納任何配色機制。類別TColorMatcher的配色程序可隨意使用給定色中包含的色域和色輪廓以實現(xiàn)配色。放入結(jié)構(gòu)54中的用戶提供的配色程序可以解釋(只要存在的)系統(tǒng)預置色輪廓,或解釋(只要存在的)用戶提供的色輪廓中的專用信息。
圖8圖示說明了使用本發(fā)明的體系結(jié)構(gòu)54的多個外設14之間進行單個色彩配色的方式。所示例的多個外設是操作在輸入設備或源設備的RGB色空間的Color中的平板掃描儀22這類的彩色設備14,以及操作在輸出設備或目的設備的CYMK色空間的Color中的打印機36之類的彩色設備14。圖8也示出了作為數(shù)據(jù)結(jié)構(gòu)存儲在類別TColorProfile(框68)中的掃描儀色調(diào)再現(xiàn)曲線TRC22,作為數(shù)據(jù)結(jié)構(gòu)存儲在類別TColorGamut(框66)中的掃描儀色域CG22,作為數(shù)據(jù)結(jié)構(gòu)存儲在類別TColorGaimut(框66)中的打印機色域CG36,以及作為數(shù)據(jù)結(jié)構(gòu)存在類別TColorProfile(框68)中的打印機反向色調(diào)再現(xiàn)曲線TRC36。圖8中還示出了作為數(shù)據(jù)結(jié)構(gòu)存在類別TColorGamut(框66)中的色空間XYZ以及用于在打印機36的CYMK色空間和掃描儀22的RGB色空間之間進行配色的類別TColorMatcher(框70)的配色程序。
通常,參照圖8有了存儲在結(jié)構(gòu)54中的色域和色輪廓信息處理器12就被初始化,作為該彩色信息源的來自掃描儀22的原始色彩數(shù)據(jù)就被輸入到數(shù)據(jù)處理器12里。然后,結(jié)構(gòu)54將運用類別TColorProfile(框68)以及色調(diào)再現(xiàn)曲線TRC22修正該原始RGB數(shù)據(jù)。通過調(diào)用類別TColorGamut(框66)的色域CG22以及適當?shù)姆椒ê瘮?shù)結(jié)構(gòu)54就把修正后的RGB色彩數(shù)據(jù)變換到XYZ色空間。然后調(diào)用類別TColorProfile以獲取類別TColorMatcher(框70)的配色程序以便對RGB彩色設備22的XYZ色與對應于打印機36的CYMK色的XYZ色空間的色進行配色。然后用色域CG36將配好的XYZ色變換成CYMK色。進而,通過調(diào)用和使用類別TColorProfile(框68)的色調(diào)再現(xiàn)曲線TRC36將配好的CYMK色作預失真處理。該預失真的色彩數(shù)據(jù)最后被傳送到打印機36用配色過的CYMK色打印出來。因此,根據(jù)本發(fā)明的結(jié)構(gòu)特性,任意外設都可被加至處理器12而且可與任何其它外設14進行配色。
以上已對包括配色在內(nèi)的色彩處理進行了敘述。本發(fā)明之原理還可擴展到彩色圖象處理。該圖象不僅可包括單色,亦可包括成組的色或色集,就象一般舉例都用的三色圖象一樣。例如,一個圖象中的每個單色象素都可用上述配色處理進行變換。為優(yōu)化處理速度,配色處理可提供一輸入象素流(以某種色類別格式)和返回一輸出象素流(以另一類別格式)。
在一最佳實施例中,涉及了三種配色,(ⅰ)比色,它是色譜和亮度的等式;(2)外觀,它是源色域到目的色域的變形以使色彩或圖象看起來正確無誤;以及(3)準確性,它是色度和絕對亮度的等式。外觀配色是三種配色中最具主觀性的。
配色可發(fā)生在兩個層級中的任意層級。TColor層級通常用于光點色彩而TGImage通常用于圖象。如何以及怎樣完成配色是一比較復雜的過程。圖9,圖10和圖11示出了配色的控制流程。圖9示出了根據(jù)本發(fā)明最佳實施例的典型配置。處理始于由掃描儀900將文件進行掃描之時。在功能框910處修正掃描信息并在框920處將其轉(zhuǎn)換到XYZ圖形空間。然后,配色程序?qū)⑿畔⒆儞Q成打印機960可識別的信息。變換后的信息先儲存在設備空間940中并在被輸出至打印機960之前在設備修正功能框950處進行修正。光點配色發(fā)生于幾何再現(xiàn)(geometry rendering)而圖象配色發(fā)生于RenderImage之中。幸運地,使用和提供一種新的配色程序是直接的和簡捷的。圖12示出了一最佳實施例中進行配色置換的兩種方法。系統(tǒng)預置(0)示出了不存在置換預置配色情況下所發(fā)生的處理。若無置換出現(xiàn),則處理準確的色外形或進行彩色矩陣配色。若一個獨立的軟件銷售商(ISV)置換系統(tǒng)預置配色程序(1),則該ISV提供的配色程序使用預置的ColorProfile。若ISV提供一個ColorMatcher及一個Color Profile,則處理示于情況(2)中。
圖13示出了Booch色類別圖。在一個最佳實施例中的色彩類別對應于現(xiàn)實世界中的色空間。如圖13所示,每一色類別都知道如何將其本身轉(zhuǎn)換成和變換出RGB色和XYZ色。如圖13所示,參見圖13,直接從TColor衍生的色彩是校準色,這意味著若色彩的部件值已知,到該色彩絕對是已知的。校準色的例子是XYZColor。
諸如圖9中的掃描儀900和打印機960之類的輸入/輸出彩色硬件設備具有一內(nèi)部缺陷,即這些設備只產(chǎn)生人類視覺系統(tǒng)可見的色彩的子集。從現(xiàn)實世界設備輸入/輸出的DeviceColor的色彩通常不是已校準的,除非有一些其它信息與該色彩相聯(lián)。在一個最佳實施例中的其它信息就是該設備的ColorProfile。其例示于圖13中。
圖象處理圖象處理過程中,配色不是發(fā)生在單色之間而是在TGImage之間。
與色彩類似,TGImages有一個對一個色輪廓的引用。圖14示出了兩個一最佳實施例中的色輪廓,ColorGamut&ColorProfile。
配色實現(xiàn)用戶可在控制面板級接通或斷開配色操作。若配色操作被接通,用戶可選擇由操作系統(tǒng)提供的以下預置配色程序中之一比色,外觀,或準確性。在應用級,可通過生成一個配色程序并由SceneBundle采用來置換系統(tǒng)預置的配色程序。然后,系統(tǒng)可以決定采用哪一種配色程序。
此外,應用程序必須允許用戶選擇色輪廓以使用于每個設備而非只是預置的設備。
色域和輪廓圖14是一色輪廓,它包括根據(jù)本發(fā)明的一個最佳實施例圖示的數(shù)據(jù)。每個設備色彩和圖象都有對色輪廓的引用。色輪廓決定可在設備上產(chǎn)生并輸出何種色彩(色域)以及該設備制成這些色彩的質(zhì)量如何(色調(diào)再現(xiàn)曲線)。除定義一個設備之外,色輪廓也必須包括實現(xiàn)信息,以便在XYZ色和RGB色之間進行雙向轉(zhuǎn)換。由于期望置換系統(tǒng)預置配色的應用程序必須為彩色設備提供自身的色輪廓,所以上述特性尤其重要。盡管配色很重要,它仍必須與現(xiàn)有色彩結(jié)構(gòu)保持一致才能得以實現(xiàn)。
置換操作系統(tǒng)ColorProfile圖15示出了本發(fā)明的一個最佳實施例中來自類別TColorProfile的子分類操作,用于將色輪廓提供給另一應用程序。來自TColorProfile的子分類確保一個經(jīng)過子分類的ColorMatcher遇到一個它不明白的有一個可接受的系統(tǒng)預置行為。雖然這會使置換的輪廓變大,但因標準色輪廓目標很小所以這些色輪廓并不會太大。
在TColor Profile中有關(guān)該討論的重要方法是TColor Profile(const TColorGamut*theColorGamut);
Virtual void ConvertRGBtoXYZ(const TRGBColor&a RGBColor,TXYZColor&aConvertedXYZColor)const;
virtual void ConvertXYZtoRGB(const TXYZColor& a XYZColor,TRGBColor&aConvertedRGBColor)const;
ConvertRGBtoXYZ和ConvertXYZ to RGB方法是虛擬的,所以它們才可以被置換并與提供的色輪廓一起工作。若這些方法不被置換,則在RGB和XYZ之間的變換基于預置的變換。
配色類別在最佳實施例中執(zhí)行配色的目標是ColorMather。它在最佳實施例中必須是可再入的。雖然在ColorMatcher中并無存儲的狀態(tài),但事實上Color Mathers將產(chǎn)生一個可存儲在彩色高速緩沖存儲器(DeviceCache)中的狀態(tài)。在配色過程中所用的彩色高速緩沖存儲器被儲存在GrafDevice中。
配色可分為兩部分(1)色輪廓,用于表示數(shù)據(jù),以及(2)配色程序,用于表示操作數(shù)據(jù)的配色算法。配色是通過把輸入設備的色輪廓變換到輸出設備的色輪廓上完成的。一旦完成了該變換,它就會被用于TColor或TGImage。
圖16示出了根據(jù)一個最佳實施例的TColorMatcher類別圖和三個預置配色類別實施(TColorimetricColorMatcher,TAppeeramceColorMatcher,以及TExacColorMatcher)。
TColorMatcher是一個具有三個必須被置換的重要的純虛擬方法的抽象主類別,它們是virtual void ColorMatch(const TColor&theColor,TColor&theMatchedColor,constTColorCache*theColorCache)=0;
virtual void ColorMatch(const TGlmage& theImage,TGImage& theMatchedImage,const TColorCache * theColorCache)=0;
virtual TColorCache * CreateColorCache (const TColorProfile& Source,const TColorProfile&Destination,const TColorCache*theColorCache)=0;
每個Color Matcher必須提供一個可在TColor和TGimagez間進行配色的ColorMatch方法。若由于某種原因,源色以及匹配色(圖象)相同,則不會發(fā)生什么事,因為任何色彩或圖象已自動與其本身匹配。由于配色程序必須再進入,所以三種方法都能進入高速緩沖存儲器。
預置配色系統(tǒng)預置配色是否在再現(xiàn)過程中發(fā)生配色取決于SeneBundle的狀態(tài)。以下示出了TSceneBundle類別定義class TSceneBundlepublic MCollectible{public
…virtual void AdoptColorMatcher (TColorMatcher * Matcher);
virtual TColorMatcher*OrphanColorMatcher();
privateTColorMatcher*fColorMatcher;nil during construction.
…}在構(gòu)成過程中,指向TColorMatcher的指針被設置指向由用戶在控制面板級選作預置的配色程序。配色發(fā)生在再現(xiàn)途徑中的CopyBits里。
以下的偽碼段示出了系統(tǒng)預置配色的發(fā)生過程//default color matcher has been selected by the user.TSceneBundle mySceneBundle;
…//Create all Colors and or TGImages with STANDARD color profiles…theGrafPort.BeginFrame(mySceneBundle);
…//Color Matching will occur on every Draw in graf port Draw object1
Draw object2···Draw Object ntheGrafPort.EndFrame();
…置換預置的配色一個最佳實施例中提供了兩種置換配色的方法。首先,用戶Color Matcher使用并部分置換一組STANDARD Color-Profiles。第二種情況下,用戶可定義一組Color Profile并置換預置的ColorMatcher。下列偽碼示出了第二種情況下所需的步驟。
//Defining and implementing ColorProfiles for the source and destination colors.
class TISVColorProfilepublic TColorProfile{publicTISVColorProfile(const TTex & FileName,const TColorGamut*theDefaultGamut);
virtual void ConvertRGBtoXYZ(const TRGBColor& aRGBColor,TXYZColor& aConvertedXYZColor)const;
virtual void ConvertXYZ to RGB(const TXYZColor& aXYZColor,TRGBColor& aConvertedRGBColor)const…other methods…}//Define your own ColorMatcher class.
class TISVColorMatcherpublic TColorMatcher{publicTISVColorMatcher();
virtual void ColorMatch(const TColor& theColor,TColor&theMatchedColor,const TColorCache*the ColorCache);
virtual void ColorMatch(const TGImage&theImage,TGImage&theMatchedImage,const TColorCache*the ColorCache);
virtual TColorCache * CreateColorCache (const TISVColorProfile&aSource,const TISVColorProfile&aDestination,TColorCache*theColorCache);
…
other methods…]//create color profiles from information in File1 and File2TISVColorProfile aSourceProfile(File1,theDefaultGamut);
TISVColorProfile aDestinationProfile(File2,theDefaultGAmut);
//create the color matcher and cacheTISVColorMatcher*aColorMatcher;
aColorMatcher=new TISVColorMatcher();
aColorMatcher->GreateColorCache(aSourceProfile,aDestination,aColorMatcher)//create the colors from your source profileTRGBColor SourceColor(aSourceProfile,1.0,.5,.7);
TRGBColor DestinationColor(aDestinationProfile);
//create the SceneBundle and have the matching doneTSceneBundle mySceneBundle;
mySceneBundle.AdoptColorMatcher(aColorMatcher);
the GrafPort.BeginFrame(mySceneBundle);
…//Color Matching will occur on every Draw in graf portDraw Object1Draw Object2···Draw Object ntheGrafPort.EndFrame();
…
權(quán)利要求
1.一種系統(tǒng),其特征在于包括(a)處理器;(b)至少一個與該處理器相連的外設;(c)一個存儲器,該存儲器存有可輸出到上述至少一個外設的信息;(d)一個色空間,該色空間包括該至少一個外設的模型特性;以及(e)用于利用色空間把存儲的信息變換成最佳顯示圖象以輸出到所述至少一個外設的裝置。
2.權(quán)利要求1所述系統(tǒng),還包括(a)從一校準色設定一種色的方法;以及(b)存儲由上述外設之一所指定的色域的方法。
3.權(quán)利要求2所述系統(tǒng),還包括存儲一個色調(diào)再現(xiàn)曲線的裝置,該色調(diào)再現(xiàn)曲線對所述至少一個外設是最佳的。
4.權(quán)利要求1所述系統(tǒng),其中所述把存儲信息變換成最佳顯示圖象以供輸出到所述外設之一的裝置把一個未校準色變換成一RGB色空間中RGB色,并將該RGB色變換成XYZ色空間中的校準的XYZ色。
5.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換為最佳顯示圖象的裝置包括把一個校準色變換成校準色空間中的XYZ色并把該XYZ色變換成RGB色空間中的未校準RGB色的裝置。
6.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置可擴展以支持其它色空間。
7.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置有一個第一樣板類別供程序員使用以便加入一校準色空間。
8.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置有一個第二樣板類別供程序員使用以便加入一未校準色空間。
9.權(quán)利要求7所述系統(tǒng),其中,將存儲的信息變換成最佳顯示圖象的裝置有一類別(TColorGamut),該類別有一文檔構(gòu)成程序,程序員可用該文檔構(gòu)成程序存儲給定外設的色域數(shù)據(jù)。
10.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置有一類別(TColorPrfile),該類別有一供程序員使用以存儲給定外設的色調(diào)再現(xiàn)曲線數(shù)據(jù)的文檔構(gòu)成程序。
11.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置可擴展以支持不同外設的色彩配色的多個方法函數(shù)。
12.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換成最佳顯示圖象的裝置由C++編程語言實現(xiàn)。
13.權(quán)利要求12所述系統(tǒng),包括用于為C++編程語言優(yōu)化的繼承目標信息的裝置。
14.權(quán)利要求1所述系統(tǒng),其中,把存儲的信息變換為最佳顯示圖象的裝置采用了面向目標的操作系統(tǒng)。
15.可把信息輸出到與有存儲器的處理器相連的至少一個外設的方法,該方法包括以下步驟(a)在存儲器中存儲能輸出到至少一個外設的信息;(b)存儲包括至少一個外設的模型特征的色空間;以及(c)用該色空間把存儲的信息轉(zhuǎn)換成最佳顯示圖象以供輸出到至少一個外設。
16.權(quán)利要求15所述方法,還包括以下步驟(a)從一個校準色中設定一個色;以及(b)存儲由至少一個外設指定的色域。
17.權(quán)利要求16所述方法,還包括存儲為至少一個外設而優(yōu)化的色調(diào)再現(xiàn)曲線的步驟。
18.權(quán)利要求15所述方法,其中的步驟(c)把一個未校準色轉(zhuǎn)換成RGB色空間中的RGB色并將該RGB色變換成XYZ色空間中的校準的XYZ色。
19.權(quán)利要求15所述方法,其中的步驟(c)可擴展以支持其它色空間。
20.權(quán)利要求15所述方法,其中的步驟(c)有一個第一樣板類別供程序員使用以加入一校準色空間。
21.權(quán)利要求15所述方法,其中的步驟(c)有一個第二樣板類別供程序員使用以加入一未校準色空間。
22.權(quán)利要求20所述方法,其中的步驟(c)有一類別(TColorGamut),該類別有一文檔構(gòu)成程序,供程序員使用以存儲一給定外設的色域數(shù)據(jù)。
23.權(quán)利要求15所述方法,其中的步驟(c)有一類別(TColorProfile),該類別有一供程序員使用以存儲給定外設的色調(diào)再現(xiàn)曲線數(shù)據(jù)的文檔構(gòu)成程序。
24.權(quán)利要求15所述方法,其中的步驟(c)可擴展以支持用于不同外設的色彩配色的多個方法函數(shù)。
25.權(quán)利要求15所述方法,其中的步驟(c)是用C++編程語言實現(xiàn)的。
26.權(quán)利要求25所述方法,還包括為C++編程語言的繼承目標信息的步驟。
27.權(quán)利要求15所述方法,其中的步驟(c)采用面向目標的操作系統(tǒng)。
全文摘要
本發(fā)明涉及一種處理色彩信息的系統(tǒng)和方法,其最佳實施例是一種有兩個層級的面向目標設計,一個層級包括一個類別(色彩),它定義一個虛擬抽象主類別而且是包括校準色的儲存器類別,和另一類別,它定義以虛擬抽象為主類別并不是包含未校準色的儲存器類別(TDevice Color)。有幾種校準色類別,包括一個定義XYZ色空間的類別(TXYZcolor)直接來自類別(Color)而有幾種未校準色類別,包括一個類別(TRGBColor)則直接來自類別(TDeviceColor)。一個存儲可與體系結(jié)構(gòu)交互的多個外設的色域信息的類別(TColorGamut),和一個存儲這些外設的色調(diào)再現(xiàn)曲線的類別(TColorProfile),以及用于各種色彩處理的方法函數(shù)一起提供數(shù)據(jù)結(jié)構(gòu)。該體系結(jié)構(gòu)可擴展以便在新的色彩類別模型和設備被開發(fā)時更易于新色彩類別相結(jié)合,并根據(jù)需要加入新配色算法,使用戶在自己選擇的色彩空間工作,并與體系結(jié)構(gòu)交互的任意外設之間提供配色。
文檔編號H04N1/60GK1113671SQ94190631
公開日1995年12月20日 申請日期1994年1月10日 優(yōu)先權(quán)日1993年6月16日
發(fā)明者詹姆斯·安東尼·夸拉托, L·貝利斯·霍爾特, 杰里·哈里斯 申請人:塔里根特公司