專利名稱:字符處理裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及字符處理裝置及其方法,用于通過將相交筆畫數(shù)據(jù)轉(zhuǎn)換成不相交輪廓數(shù)據(jù),以提供高質(zhì)量字符圖案。
在根據(jù)相交筆畫字符產(chǎn)生大尺寸字符或輪廓字符的情況下,在產(chǎn)生處理之前,相交筆畫數(shù)據(jù)必須被轉(zhuǎn)換成不相交完整輪廓的數(shù)據(jù)。為此,使用了根據(jù)筆畫數(shù)據(jù)產(chǎn)生位映象數(shù)據(jù)和跟蹤這種位映象數(shù)據(jù)的輪廓以獲得整個(gè)輪廓坐標(biāo)數(shù)據(jù)的處理。
為了改善大尺寸字符或輪廓字符的質(zhì)量,在所希望的輸出尺寸產(chǎn)生位映象之后必須跟蹤所述輪廓,從而需要很長的處理時(shí)間。
由于位映象顯影存儲(chǔ)器的限制,產(chǎn)生的位映象有時(shí)被限制為某個(gè)尺寸。在這種情況下,為了獲得大尺寸的字符,不可避免地需要對從所產(chǎn)生輪廓獲得的坐標(biāo)值進(jìn)行擴(kuò)展,這樣,圖象質(zhì)量的惡化程度必然地依賴于存儲(chǔ)器的容量。
另一方面,為了實(shí)現(xiàn)高速處理,必須實(shí)現(xiàn)一種用于形成小尺寸位映象并跟蹤這個(gè)位映象的輪廓以獲得整個(gè)輪廓的坐標(biāo)和擴(kuò)展或減少所獲得的坐標(biāo)的方法。在這種情況下,不可避免在大尺寸輸出的字符中產(chǎn)生明顯的質(zhì)量失真。
本發(fā)明的目的就是要克服上述缺點(diǎn)和提供一種能夠根據(jù)相交筆畫數(shù)據(jù)高速產(chǎn)生不相交輪廓借此以輸出高質(zhì)量字符或圖案的信息處理裝置和相關(guān)方法。
根據(jù)本發(fā)明,上述目的可以通過用于根據(jù)寄存在可能相互交叉的多個(gè)筆畫內(nèi)每一個(gè)筆畫中的數(shù)據(jù)產(chǎn)生一個(gè)不相交輪廓的信息處理裝置來實(shí)現(xiàn)。所述信息處理裝置包括用于從字符的所有寄存筆畫中提取每一對筆畫的提取裝置;用于鑒別由所述提取裝置提取的每一筆畫對的筆畫段是否相互交叉的相交鑒別裝置;用于在所述相交鑒別裝置獲得肯定結(jié)果的情況下計(jì)算所述段交點(diǎn)坐標(biāo)的交點(diǎn)坐標(biāo)計(jì)算裝置;用于存儲(chǔ)由所述交點(diǎn)坐標(biāo)計(jì)算裝置計(jì)算的交點(diǎn)坐標(biāo)的交點(diǎn)坐標(biāo)存儲(chǔ)裝置;和用于根據(jù)預(yù)定法則并在存儲(chǔ)在相交坐標(biāo)存儲(chǔ)裝置內(nèi)相交坐標(biāo)的基礎(chǔ)上重新連接所述輪廓的重新連接裝置。
根據(jù)本發(fā)明,還提供了一種圖象處理裝置,用于根據(jù)寄存在可能相互交叉的多個(gè)筆畫內(nèi)每一個(gè)筆畫中的輪廓數(shù)據(jù)產(chǎn)生不相交輪廓數(shù)據(jù),所述裝置包括讀出裝置,用于讀出兩個(gè)筆畫的輪廓坐標(biāo);整直裝置,用于整直由所述輪廓坐標(biāo)表示的輪廓;鑒別裝置,用于根據(jù)所述兩個(gè)筆畫的輪廓坐標(biāo)鑒別兩個(gè)筆畫的的輪廓是否相互交叉;輪廓數(shù)據(jù)產(chǎn)生裝置,用于在由所述鑒別裝置識別相互交叉的情況下確定一個(gè)交點(diǎn)和改變包括這個(gè)交點(diǎn)在內(nèi)的輪廓點(diǎn)的連接借此以產(chǎn)生不相交輪廓數(shù)據(jù);判斷裝置,用于判斷在由輪廓數(shù)據(jù)產(chǎn)生裝置產(chǎn)生的不相交輪廓數(shù)據(jù)中的曲線部分;和曲線產(chǎn)生裝置,用于根據(jù)由所述判斷裝置判斷的曲線部分產(chǎn)生一個(gè)曲線。
圖1的方框圖示出了本發(fā)明的一個(gè)實(shí)施例;圖2的方框圖示出了圖1所示打印機(jī)11的結(jié)構(gòu);圖3示出了圖1所示RAM3的存儲(chǔ)器映象;圖4示出了存儲(chǔ)在圖1所示ROM2中一個(gè)控制程序流程的例子;圖5示出了由中心線和寬度表示的一個(gè)筆畫數(shù)據(jù)的例子;圖6示出了筆畫單元中的輪廓數(shù)據(jù);圖7示出了貝塞爾(Bezire)分解的原理;圖8A、8B和8C示出了在進(jìn)入輪廓轉(zhuǎn)換之前筆畫數(shù)據(jù)結(jié)構(gòu)的例子;圖9示出了相交線段的一個(gè)例子;圖10示出了不相交線段的一個(gè)例子;
圖11示出了不相交筆畫的一個(gè)例子;圖12A、12B和12C示出了在確定相交之后的數(shù)據(jù)結(jié)構(gòu);圖13A、13B、13C和13D示出了兩個(gè)筆畫的重新連接;圖14A、14B和14C示出了兩個(gè)筆畫重新連接之后的狀態(tài);圖15A和15B示出了筆畫轉(zhuǎn)換之后的數(shù)據(jù);圖16A和16B示出了多個(gè)筆畫重新連接之后的狀態(tài);圖17示出了筆畫轉(zhuǎn)換之后的狀態(tài);圖18示出了在計(jì)算機(jī)圖象框上編輯字符或圖形的狀態(tài);圖19示出了在指定全部編輯區(qū)域之后的處理;圖20和21示出了在指定部分區(qū)域之后的處理;圖22的流程示出了在構(gòu)成本發(fā)明實(shí)施例3的一個(gè)信息處理系統(tǒng)中的輪廓數(shù)據(jù)產(chǎn)生處理;圖23的流程示出了來自直線數(shù)據(jù)的曲線數(shù)據(jù);圖24示出了由根據(jù)曲線數(shù)據(jù)產(chǎn)生的直線數(shù)據(jù)組成的一個(gè)字符;圖25示出了根據(jù)直線數(shù)據(jù)產(chǎn)生曲線數(shù)據(jù)的模式;和圖26A和26B示出了直線數(shù)據(jù)和曲線數(shù)據(jù)之間的的區(qū)別狀態(tài)。圖1示出了本發(fā)明第一實(shí)施例的結(jié)構(gòu)。當(dāng)前實(shí)施例可以是由一個(gè)信號設(shè)備組成的包括多個(gè)儀器或裝置的系統(tǒng)。本實(shí)施例的系統(tǒng)還可以是一個(gè)字處理器、工作站或個(gè)人計(jì)算機(jī)。
參看圖1,CPU(中央處理單元)1執(zhí)行整個(gè)裝置的控制和各種操作。當(dāng)需要時(shí),CPU1參考存儲(chǔ)在外部存儲(chǔ)器9中的數(shù)據(jù),并將這種數(shù)據(jù)存儲(chǔ)在RAM3中。還提供了一個(gè)用于存儲(chǔ)用于啟動(dòng)所述系統(tǒng)、字符圖案和與字符轉(zhuǎn)換相關(guān)的數(shù)據(jù)的一個(gè)程序的ROM(只讀存儲(chǔ)器)2;用于暫存在CPU1操作中使用的數(shù)據(jù)和所述操作結(jié)果的RAM(隨機(jī)存取存儲(chǔ)器)3;用于向CPU1傳輸從鍵盤(KB)5接收的鍵入數(shù)據(jù)(字符碼和控制碼)的鍵盤控制單元4;用于顯示一個(gè)位映象圖象的CRT(陰極射線管)顯示單元7;用于讀出從一個(gè)字符碼轉(zhuǎn)換的位映象圖象和將該位映象圖象傳輸給CRT顯示單元7的顯示控制器(CRTC)6;用于存儲(chǔ)程序和數(shù)據(jù)且最好由軟盤(FD)91、硬盤(HD)92和CD-ROM93等組成的外部存儲(chǔ)器9,其中,所述硬盤存儲(chǔ)操作系統(tǒng);用于控制外部存儲(chǔ)器9數(shù)據(jù)傳輸?shù)谋P控制器(DKC)8;用于驅(qū)動(dòng)打印機(jī)(PRT)11的打印機(jī)控制器(PRTC)10,所述打印機(jī)最好是激光打印機(jī)、熱噴射打印機(jī)或熱傳輸打印機(jī);和用于在CPU1、ROM2、RAM3、鍵盤控制器4、顯示控制器6、盤控制器8和打印機(jī)控制器10之間進(jìn)行數(shù)據(jù)交換的系統(tǒng)總線12。
所述程序和相關(guān)數(shù)據(jù)由軟盤91或CD-ROM93提供,并且安裝到硬盤92中一次,并且從該硬盤裝載到RAM3中以便執(zhí)行。另外,它們也可以直接從軟盤91或CD-ROM93裝入RAM3執(zhí)行而不必安裝到硬盤92中。
當(dāng)電源接通時(shí),利用存儲(chǔ)在ROM2中基本I/O程序的IPL(啟動(dòng)程序裝載)功能通過從硬盤92讀出操作系統(tǒng)并加載到RAM3,啟動(dòng)當(dāng)前系統(tǒng)。當(dāng)前系統(tǒng)通過執(zhí)行基本I/O程序、操作系統(tǒng)(如窗口系統(tǒng))211和應(yīng)用程序212來產(chǎn)生作用。
圖2示出了圖1所示打印機(jī)的結(jié)構(gòu)。參看圖2,這里提供了一個(gè)用于控制整個(gè)裝置和執(zhí)行各種操作的CPU161;用于存儲(chǔ)系統(tǒng)啟動(dòng)程序、字符圖案和數(shù)據(jù)的ROM162;構(gòu)成在使用中不受限制的數(shù)據(jù)存儲(chǔ)區(qū)域并用于在每次處理中裝載程序和數(shù)據(jù)的RAM163;和用于控制記錄頭1611的打印機(jī)控制器(PRTC)1610。上述構(gòu)件經(jīng)過系統(tǒng)總線1612相互連接。
圖3示出了圖1所示RAM3中內(nèi)存映象的例子。區(qū)域210被用于裝載基本I/O程序,區(qū)域211被用于裝載諸如窗口系統(tǒng)的操作系統(tǒng),區(qū)域212被用于裝載應(yīng)用程序,區(qū)域213被用于裝載相關(guān)數(shù)據(jù)。區(qū)域214被用做與裝載所述程序相關(guān)的工作區(qū)域。
圖4的流程示出了存儲(chǔ)在圖1所示ROM2等外部有貯器9中控制程序的一個(gè)例子。字符碼、輸出尺寸、字型、變形信息等被作為所述程序接口傳輸。
步驟S201根據(jù)字符碼和字型讀出一個(gè)目標(biāo)字符的數(shù)據(jù)。如此讀出的數(shù)據(jù)是寄存在筆畫單元中的字符數(shù)據(jù)。每個(gè)筆畫可以由圖5所示的中心線和寬度組成的數(shù)據(jù)或圖6所示的輪廓數(shù)據(jù)表示。在前者的情況下,由所述中心線和寬度表示的數(shù)據(jù)被轉(zhuǎn)換成每個(gè)筆畫的輪廓坐標(biāo)。
步驟S202根據(jù)由預(yù)先存儲(chǔ)在諸如硬盤92或ROM2等外部存貯器9中的數(shù)據(jù)表示的所述字符的寬度和高度和以及所述接口請求的輸出尺寸執(zhí)行諸如放大/縮小或變形等坐標(biāo)轉(zhuǎn)換。然后,如果存在曲線數(shù)據(jù),步驟S203產(chǎn)生短矢量數(shù)據(jù)。利用(比方說)三階貝塞爾函數(shù)、三階B-樣條函數(shù)、二階貝塞爾函數(shù)和二階B-樣條函數(shù)預(yù)先規(guī)定所述曲線數(shù)據(jù)。下面解釋由圖7所示在形成由三階貝塞爾函數(shù)規(guī)定的一個(gè)曲線的短矢量截?cái)嗟那闆r。
通過如圖7所示分解由三階貝塞爾函數(shù)規(guī)定的原始點(diǎn)A、B、C、D,形成段AB的中點(diǎn)a、段BC的中點(diǎn)b、段CD的中點(diǎn)c、段ab的中點(diǎn)x、段bc的中點(diǎn)z和段xz的中點(diǎn)y,借此,產(chǎn)生了兩組Aaxy、yzcD新的貝塞爾點(diǎn)。在這樣的新貝塞爾點(diǎn)組Aaxy,yzcD上繼續(xù)分解,直到滿足預(yù)定轉(zhuǎn)換狀態(tài)。新獲得的點(diǎn)構(gòu)成短矢量的多個(gè)點(diǎn)。然后,表示由如此確定的貝塞爾曲線獲得的短矢量的點(diǎn)組和原來作為直線段寄存的點(diǎn)組以保持原來輪廓順序的寄存方式被寄存。圖8A示出了如此寄存坐標(biāo)組的模式。寄存內(nèi)容首先包含有用于指出輪廓信息和包括每個(gè)輪廓旋轉(zhuǎn)(順時(shí)針或逆時(shí)針)方向、起點(diǎn)號、終點(diǎn)號和輪廓數(shù)據(jù)最大和最小坐標(biāo)的輪廓數(shù)據(jù)管理信息部分(圖8B),其次,包含有用于實(shí)際存儲(chǔ)輪廓坐標(biāo)的輪廓坐標(biāo)部分。在輪廓數(shù)據(jù)管理信息部分中表示的起點(diǎn)和終點(diǎn)號處,存儲(chǔ)有所述輪廓的坐標(biāo)、直接在前點(diǎn)的號和直接在后點(diǎn)的號。圖8C示出了輪廓坐標(biāo)數(shù)據(jù)表。
然后,步驟S204鑒別一個(gè)字符的所有筆畫數(shù)據(jù)是否都已被產(chǎn)生。如果將被處理的一個(gè)字符的筆畫還有剩余和數(shù)據(jù)產(chǎn)生還沒有完成,所述順序返回到步驟S202。另一方面,如果一個(gè)字符所有筆畫曲線數(shù)據(jù)的坐標(biāo)轉(zhuǎn)換和弄直都已完成,所述順序前進(jìn)到步驟S20S以檢查在步驟S204之前寄存的輪廓數(shù)據(jù),和如果發(fā)現(xiàn)輪廓的交叉點(diǎn),將這個(gè)輪廓重新連接以產(chǎn)生新的輪廓。新連接以產(chǎn)生新的輪廓。
更具體地說,在步驟S205.如圖8A所示的初始寄存的輪廓數(shù)據(jù)被用做基準(zhǔn)輪廓數(shù)據(jù)。下一個(gè)步驟S206將接近步驟S205中設(shè)置成基準(zhǔn)輪廓數(shù)據(jù)的輪廓數(shù)據(jù)作為目標(biāo)輪廓數(shù)據(jù)。然后,步驟S207在基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)的基礎(chǔ)上檢查是否有線段相交。特別是,在圖8A所示輪廓信息的基礎(chǔ)上,在基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)中較大最大坐標(biāo)和較小最小坐標(biāo)之間具有較小最大坐標(biāo)和較大最小坐標(biāo)的兩個(gè)線段被認(rèn)為是相互交叉。
然后,步驟S208根據(jù)被認(rèn)為相互交叉的兩個(gè)線段的數(shù)據(jù)計(jì)算相交點(diǎn),并在步驟S209在所獲得交點(diǎn)位于較小最大坐標(biāo)和較大最小坐標(biāo)之間的情況下判定存在一個(gè)交點(diǎn)。如果如圖9所示所述交點(diǎn)被同時(shí)包含在兩個(gè)線段之中,所述交點(diǎn)被最終確定為存在,但是,如果如圖10所示,所述交點(diǎn)存在于兩個(gè)線段的外面,則所述交點(diǎn)被確定為不存在。在基準(zhǔn)輪廓數(shù)據(jù)的線段和目標(biāo)輪廓數(shù)據(jù)的線段的所有線段組合中檢查相互交叉的線段,然后,在所有基準(zhǔn)輪廓數(shù)據(jù)線段和目標(biāo)輪廓數(shù)據(jù)線段上檢查是否存在交點(diǎn),和計(jì)算任一存在交點(diǎn)的坐標(biāo)。
在步驟S209識別至少存在一個(gè)交點(diǎn)的情況下,步驟S210執(zhí)行重新連接處理。特別是,在兩個(gè)線段彼此相交的情況下,通過加上步驟S208確定的交點(diǎn)使兩個(gè)輪廓數(shù)據(jù)被重新連接。
圖12A到圖12C和圖13A到圖13D示出了這種重新連接的模式。在圖12A所示的例子中,基準(zhǔn)輪廓數(shù)據(jù)線段DA和目標(biāo)輪廓數(shù)據(jù)線段EF的交點(diǎn)被取做α,位于線段BC和EF之間的交點(diǎn)被取做β,位于線段BC和GH之間的交點(diǎn)被取做γ,位于線段DA和GH之間的交點(diǎn)被取做δ。由于例如在重新連接具有交點(diǎn)Z的線段AB和CD的情況下,這些交點(diǎn)被被以每兩個(gè)一組的形式存儲(chǔ)在輪廓坐標(biāo)數(shù)據(jù)表(圖12C)中,所以,需要諸如A→Z→D和C→Z→B的新坐標(biāo)組。另外,在輪廓數(shù)據(jù)重新連接后由于只需要一個(gè)輪廓的起點(diǎn)和終點(diǎn),所以,目標(biāo)輪廓數(shù)據(jù)通過在輪廓坐標(biāo)數(shù)據(jù)表中刪除在號9處的終點(diǎn)并將其連接到起點(diǎn)上以回路形式重新連接,如圖12C所示。實(shí)際上,兩個(gè)輪廓被如圖13A到13D所示重新連接。
下面的描述給出了圖13A的詳細(xì)解釋。當(dāng)基準(zhǔn)輪廓數(shù)據(jù)的線段DA和目標(biāo)輪廓數(shù)據(jù)的線段EF在交點(diǎn)α處相交時(shí),通過將基準(zhǔn)輪廓數(shù)據(jù)的線段起點(diǎn)D經(jīng)過交點(diǎn)α1連接到目標(biāo)輪廓數(shù)據(jù)線段終點(diǎn)F,所述連接為D→α1→F。通過將目標(biāo)輪廓數(shù)據(jù)的線段起點(diǎn)E經(jīng)過交點(diǎn)α2連接到基準(zhǔn)輪廓數(shù)據(jù)線段的終點(diǎn)A可以獲得另一種連接E→α2→A。根據(jù)這種重新連接改變下一個(gè)點(diǎn)的號和前一個(gè)點(diǎn)的號。在下面的描述中,將參照圖13B解釋圖12所示基準(zhǔn)輪廓數(shù)據(jù)的線段BD和目標(biāo)輪廓數(shù)據(jù)的線段EF的重新連接。由于線段EF已經(jīng)被分成線段Eα2和α1F,所以包含有交點(diǎn)的線段α1F被選擇作為目標(biāo)輪廓數(shù)據(jù)的線段。然后,線段BC、α1F和交點(diǎn)β被重新連接為B→β1→F和α1→β2→C。然后,根據(jù)這種重新連接改變下一個(gè)點(diǎn)的號和前一個(gè)點(diǎn)的號。
在下面的描述中將結(jié)合圖13C解釋基準(zhǔn)輪廓數(shù)據(jù)的線段BC和目標(biāo)輪廓數(shù)據(jù)線段GH的重新連接。具有交點(diǎn)γ的基準(zhǔn)輪廓數(shù)據(jù)線段β2C和目標(biāo)輪廓數(shù)據(jù)線段GH被重新連接為β2→γ1→H和G→γ2→C。另外,根據(jù)這種重新連接修改輪廓坐標(biāo)表。最后,結(jié)合圖13B解釋基準(zhǔn)輪廓數(shù)據(jù)線段DA和目標(biāo)輪廓數(shù)據(jù)線段GH的重新連接?;鶞?zhǔn)輪廓數(shù)據(jù)線段Dα1和目標(biāo)輪廓數(shù)據(jù)線段γ1H被重新連接為D→δ1→H和γ1→δ2→α1,根據(jù)這個(gè)重新連接修改輪廓坐標(biāo)數(shù)據(jù)表。圖13D示出了在步驟S20重新連接操作之后的輪廓坐標(biāo)數(shù)據(jù)表。
然后,步驟S211執(zhí)行通過在步驟S210消除的輪廓寄存的刪除和新產(chǎn)生的輪廓寄存的添加。當(dāng)在步驟S210產(chǎn)生如下的連接A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A(見圖14A)時(shí),目標(biāo)輪廓數(shù)據(jù)E→F→G→H被吸收在基準(zhǔn)輪廓數(shù)據(jù)中。然后,為了指示已經(jīng)被消除的基準(zhǔn)輪廓數(shù)據(jù),如圖14B所示,將起點(diǎn)號和終點(diǎn)號改成(-1)。另外,還產(chǎn)生了不屬于上述輪廓的新輪廓α1→β2→γ1→δ2(見圖14A)。由于圖13D所述的狀態(tài)是一個(gè)沒有起點(diǎn)或終點(diǎn)的回路,所以通過選擇多個(gè)點(diǎn)中的一個(gè)作為起點(diǎn)并加上一個(gè)終點(diǎn)寄存該新輪廓。所述寄存是在輪廓數(shù)據(jù)管理信息部分的末端進(jìn)行的。然后,檢查和寄存這個(gè)輪廓的旋轉(zhuǎn)方向和最大和最小坐標(biāo),如圖14A和14C所示。步驟S207到步驟S211用于檢查基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)的連接狀態(tài),然后,完成一個(gè)目標(biāo)輪廓數(shù)據(jù)的處理。
然后,步驟S212例如通過檢查在步驟S211的目標(biāo)輪廓數(shù)據(jù)處理之后是否存在其它的輪廓數(shù)據(jù)來搜索下一個(gè)侯選目標(biāo)輪廓數(shù)據(jù)。然后,步驟S213鑒別所述目標(biāo)輪廓數(shù)據(jù)是否以被用盡,如果不是,步驟S214將在步驟S212搜索到的目標(biāo)輪廓數(shù)據(jù)寄存為將被新檢查的輪廓數(shù)據(jù),然后所述順序前進(jìn)到步驟S207。另一方面,如果所述目標(biāo)輪廓數(shù)據(jù)不再存在,即如果對一組基準(zhǔn)數(shù)據(jù)的處理已經(jīng)完成,所述順序前進(jìn)到步驟S215。步驟S215通過檢查在步驟S214之前處理的基準(zhǔn)輪廓數(shù)據(jù)之后是否存在下一個(gè)數(shù)據(jù)來搜索新的基準(zhǔn)輪廓數(shù)據(jù)。
然后,步驟S216鑒別所述基準(zhǔn)輪廓數(shù)據(jù)是否被用盡,如果不是,步驟S217將在步驟S215搜索到的基準(zhǔn)輪廓數(shù)據(jù)寄存為將被新檢查的基準(zhǔn)數(shù)據(jù),然后所述順序返回到步驟S206。另一方面,如果基準(zhǔn)輪廓數(shù)據(jù)不再存在,所述順序前進(jìn)到步驟S218。(在步驟S212或S215搜索目標(biāo)或基準(zhǔn)輪廓數(shù)據(jù)的過程中,如果起點(diǎn)和終點(diǎn)值不是(-1),則這個(gè)值被判斷為存在)。在這些值是(-1)的情況下,所述輪廓數(shù)據(jù)被識別為已經(jīng)被消除和繼續(xù)搜索下一個(gè)輪廓數(shù)據(jù)。步驟S218輸出在步驟S216之前確定的輪廓數(shù)據(jù),以作為不包括交點(diǎn)的完整輪廓數(shù)據(jù)。這種不相交完整輪廓數(shù)據(jù)不必包括所有寄存在輪廓數(shù)據(jù)管理信息部分中的輪廓。在圖14A所示的例子中,輪廓A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A是將被最終寄存的輪廓,但是,輪廓α1→β2→γ1→β2不是將被最終寄存的輪廓。這種輪廓的區(qū)別是由下述方式執(zhí)行的。
最初寄存在輪廓數(shù)據(jù)信息部分中的輪廓數(shù)量被存儲(chǔ),并且,最終寄存在所述位置中的輪廓數(shù)據(jù)的量不超過這個(gè)數(shù)量,不表示旋轉(zhuǎn)方向(圖14A舉例所示的A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A)相反方向的輪廓將被判斷為將被寄存的數(shù)據(jù)。在超過上述數(shù)量的位置內(nèi)寄存的這些輪廓數(shù)據(jù)當(dāng)中,即在這些被新寄存的輪廓數(shù)據(jù)當(dāng)中,只有表示相反旋轉(zhuǎn)方向的輪廓數(shù)據(jù)被判斷為將被寄存的輪廓數(shù)據(jù)。在圖14A所示的例子中,沒有數(shù)據(jù)與這種規(guī)定對應(yīng)。
下面將解釋圖15A和15B所示的輪廓數(shù)據(jù)組的例子。在這個(gè)例子中,輪廓的最初數(shù)量是4。根據(jù)上述解釋算法,這些輪廓數(shù)據(jù)的處理最終提供如圖16A和16B所示的數(shù)據(jù)。在這種情況下,由于最初輪廓的數(shù)量是4,所以被寄存在沒有超過最初數(shù)量位置處且不表示旋轉(zhuǎn)方向相反方向的狀態(tài)僅由最初輪廓滿足。另外,被寄存在超過最初數(shù)量位置處和表示旋轉(zhuǎn)方向相反方向的狀態(tài)僅由最終輪廊滿足。然后,這兩個(gè)輪廓只是在最后被寄存,并能夠產(chǎn)生不相交完整輪廓數(shù)據(jù),如圖17所示。
因此,可以通過檢測輪廓交點(diǎn)、重新連接相互交叉的輪廓和最終提取所需數(shù)據(jù)根據(jù)包括輪廓數(shù)據(jù)在內(nèi)的交點(diǎn)產(chǎn)生不相交輪廓數(shù)據(jù)。
另一方面,如果在步驟S207識別出基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)確實(shí)不相交,所述順序前進(jìn)到步驟S212。
另外,如果在步驟S209識別出在基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)之間確實(shí)沒有交點(diǎn),所述順序前進(jìn)到步驟S212。特別是,在步驟S207判斷所述交點(diǎn)存在而實(shí)際在步驟S208的線段檢查中識別為不存在這個(gè)交點(diǎn)(如圖11所示)的情況下,所述順序前進(jìn)到步驟S212。本發(fā)明的第二實(shí)施例在可由用戶規(guī)定字型編輯圖象框或圖形編輯圖象框的基礎(chǔ)上根據(jù)用戶的指令執(zhí)行相交筆畫交點(diǎn)的刪除。
圖18示出了在圖1所示CRT顯示單元7上顯示的字符-圖形編輯對話框。當(dāng)由用戶選擇這個(gè)對話框中的集體轉(zhuǎn)換171時(shí),設(shè)置一個(gè)用于將包括交點(diǎn)的輪廓數(shù)據(jù)轉(zhuǎn)換成不相交輪廓數(shù)據(jù)的集體轉(zhuǎn)換模式,適用于在編輯圖象框上顯示的所有數(shù)據(jù)。另外,當(dāng)用戶在這個(gè)對話中選擇部分轉(zhuǎn)換172的情況下,設(shè)置一個(gè)部分轉(zhuǎn)換模式,其中,由用戶指定轉(zhuǎn)換目標(biāo)區(qū)域和從包括交點(diǎn)的輪廓數(shù)據(jù)到不相交輪廓數(shù)據(jù)的轉(zhuǎn)換僅對涉及這些區(qū)域的筆畫執(zhí)行。
如果用戶選擇集體轉(zhuǎn)換171以用于字符“吉”(發(fā)音為“kichi”意思是“l(fā)ucky”(幸運(yùn))),以圖19所示模式對所有的筆畫或編輯圖形框上的圖形進(jìn)行集體轉(zhuǎn)換。在這個(gè)操作中,如第一實(shí)施例所解釋,對所有被編輯的數(shù)據(jù)檢查是否有交點(diǎn),如果存在有任何一個(gè)交點(diǎn),轉(zhuǎn)換到不相交輪廓數(shù)據(jù)。
在對圖18所示的字符“吉”進(jìn)行部分轉(zhuǎn)換的情況下,用戶選擇字符-圖形編輯對話的部分轉(zhuǎn)換172并指定一個(gè)部分區(qū)域。作為一個(gè)例子,如圖20左側(cè)所示,利用鼠標(biāo)敲擊出由虛線框圖出的一個(gè)部分區(qū)域190,并檢查是否存在與部分區(qū)域190相關(guān)的筆畫。如果存在,識別這個(gè)相關(guān)筆畫。在圖20所示的例子中,筆畫191和192被識別為與部分區(qū)域190相關(guān),但是,其它筆畫193到197被識別為無關(guān)。在每個(gè)這種相關(guān)筆畫上設(shè)置一個(gè)用于表示這種關(guān)系的標(biāo)記,且這個(gè)標(biāo)記對于那些無關(guān)筆畫被清除。然后,提取設(shè)置有這種標(biāo)記的筆畫并且這種筆畫被單獨(dú)執(zhí)行第一實(shí)施例所解釋的處理。因此,對于包括被顯示包含交點(diǎn)的筆畫來講,在部分編輯區(qū)域內(nèi)執(zhí)行產(chǎn)生不相交輪廓的處理,和如果用于產(chǎn)生不相交輪廓的區(qū)域被規(guī)定,提取與這個(gè)區(qū)域相關(guān)的筆畫,并且鑒別每對如此提取的線段是否相互交叉。如果交點(diǎn)被識別為存在,計(jì)算并存儲(chǔ)交點(diǎn)的坐標(biāo),并根據(jù)預(yù)定法則在所存儲(chǔ)交點(diǎn)坐標(biāo)的基礎(chǔ)上重新連接所述輪廓。利用這種方式,可以實(shí)現(xiàn)與部分區(qū)域相關(guān)筆畫的從包含交點(diǎn)輪廓數(shù)據(jù)到不包含交點(diǎn)輪廓數(shù)據(jù)的轉(zhuǎn)換。
作為一個(gè)例子,如圖21左手側(cè)所示,通過鼠標(biāo)的敲擊用虛線框圈出一個(gè)部分區(qū)域200,檢查是否存在與部分區(qū)域200相關(guān)的任何一個(gè)筆畫。如果存在,識別這種相關(guān)筆畫。在圖21所示的例子中,筆畫204、205和207被識別為與部分區(qū)域190相關(guān),但是,其它筆畫201到203和206被識別為無關(guān)。在與部分區(qū)域200相關(guān)的每一個(gè)這種筆畫上設(shè)置一個(gè)用于表示這種關(guān)系的標(biāo)記,對于每個(gè)無關(guān)筆畫則清除這種標(biāo)記。然后,提取具有這種標(biāo)記的筆畫并以圖20所示相關(guān)解釋的方式單獨(dú)進(jìn)行處理。利用這種方式,可以實(shí)現(xiàn)與所述部分區(qū)域相關(guān)筆畫從包含交點(diǎn)輪廓數(shù)據(jù)到不包含交點(diǎn)輪廓數(shù)據(jù)的轉(zhuǎn)換。
在用于字符或圖形編輯操作的過程中用戶產(chǎn)生筆畫交點(diǎn)的情況下,可以通過指令刪除這些交點(diǎn),隨時(shí)可以自動(dòng)刪除兩個(gè)或多個(gè)輪廓的這種交點(diǎn),而不必由用戶做煩瑣的工作。
如在前面所解釋的,本實(shí)施例允許在高圖象質(zhì)量和高速執(zhí)行情況下根據(jù)包含交點(diǎn)的坐標(biāo)數(shù)據(jù)產(chǎn)生不相交完整輪廓的坐標(biāo)數(shù)據(jù)。圖22的流程示出了本發(fā)明第三實(shí)施例中執(zhí)行的處理。與這個(gè)處理對應(yīng)的程序被作為應(yīng)用程序212存儲(chǔ)。
首先,步驟S1接收字符代碼,輸出它的尺寸、字型和變形信息,并在這些字符碼和字型的基礎(chǔ)上獲得目標(biāo)字符數(shù)據(jù)。這時(shí)讀出的數(shù)據(jù)是寄存在筆畫單元中的字符數(shù)據(jù)。每個(gè)字符可以由圖5所示中心線和寬度組成的數(shù)據(jù)表示或如圖6所示的輪廓數(shù)據(jù)表示。在前者情況下,由中心線和寬度表示的數(shù)據(jù)被轉(zhuǎn)換成每個(gè)筆畫的輪廓數(shù)據(jù)。圖5和圖6表示與同一個(gè)輪廓對應(yīng)的筆畫,其中,O表示一個(gè)終點(diǎn)和Δ表示一個(gè)中點(diǎn)。
步驟S2在由預(yù)先存儲(chǔ)在諸如硬盤92或ROM2的外部存儲(chǔ)器9中的數(shù)據(jù)表示的字符高度和寬度以及在開始當(dāng)前處理之前由接口請求的輸出尺寸的基礎(chǔ)上執(zhí)行諸如放大/縮小或變形的坐標(biāo)轉(zhuǎn)換。
然后,如果存在曲線數(shù)據(jù),步驟S3則產(chǎn)生短矢量數(shù)據(jù)。例如,預(yù)先利用三階貝塞爾函數(shù)、三階B-分離函數(shù)、二階貝塞爾函數(shù)或二階B-分離函數(shù)規(guī)定曲線數(shù)據(jù)。在當(dāng)前的情況下,如圖7所示由三階貝塞爾函數(shù)規(guī)定的最初點(diǎn)A、B、C和D被分解以形成線段AB的中點(diǎn)a、線段BC的中點(diǎn)b、線段CD的中點(diǎn)c、線段ab的中點(diǎn)x、線段bc的中點(diǎn)z和線段xz的中點(diǎn)y,借此產(chǎn)生貝塞爾點(diǎn)的兩個(gè)新組Aaxz、yzcD。在這新貝塞爾點(diǎn)組Aaxz、yzcD上繼續(xù)執(zhí)行分解,直到滿足預(yù)定的轉(zhuǎn)換條件。新獲得的點(diǎn)構(gòu)成短矢量的點(diǎn)。然后,表示由如此確定貝塞爾曲線獲得的短矢量的點(diǎn)組和作為直線段最初寄存的點(diǎn)組被寄存以保持所述輪廓的原來順序。
圖8A到圖8C示出了如此寄存坐標(biāo)組的模式。
圖8A示出了所述輪廓的例子,圖8B示出了對于每個(gè)輪廓來講都包括每個(gè)輪廓旋轉(zhuǎn)方向(順時(shí)針或逆時(shí)針)、起點(diǎn)和終點(diǎn)號的輪廓數(shù)據(jù)管理信息部分的數(shù)據(jù)結(jié)構(gòu),圖8C示出了輪廓坐標(biāo)數(shù)據(jù)部分的數(shù)據(jù)結(jié)構(gòu)。
寄存的內(nèi)容首先包含用于指出輪廓信息和包括每個(gè)輪廓旋轉(zhuǎn)方向(順時(shí)針或逆時(shí)針)、起點(diǎn)號(對應(yīng)于輪廓坐標(biāo)數(shù)據(jù)表的地址)、終點(diǎn)號(對應(yīng)于輪廓坐標(biāo)數(shù)據(jù)表的所述地址)和所述輪廓數(shù)據(jù)最大值和最小值的輪廓數(shù)據(jù)管理信息部分(圖8B),然后是用于實(shí)際存儲(chǔ)輪廓坐標(biāo)的輪廓坐標(biāo)數(shù)據(jù)部分(圖8C)。在輪廓數(shù)據(jù)管理信息部分中表示的起點(diǎn)和終點(diǎn)號處,存儲(chǔ)有“輪廓的坐標(biāo)”、“直接在前點(diǎn)的號”和“直接隨后點(diǎn)的號”。
然后,步驟S4鑒別一個(gè)字符所有筆畫的輪廓是否都已產(chǎn)生,如果一個(gè)字符所有筆畫的坐標(biāo)轉(zhuǎn)換和曲線整直都已完成,順序前進(jìn)到步驟S5,但是,如果仍然剩有需要被處理的筆畫,所述順序返回到步驟S2。
從步驟S5開始,執(zhí)行對在步驟S4之前寄存的輪廓數(shù)據(jù)的檢查,如果發(fā)現(xiàn)輪廓交點(diǎn),重新連接這些輪廓以產(chǎn)生新的輪廓。特別是,在步驟S5,最初寄存的輪廓數(shù)據(jù)被取做如圖8A所示的基準(zhǔn)輪廓數(shù)據(jù)。
下一個(gè)步驟S6將接近步驟S205中設(shè)置成基準(zhǔn)輪廓數(shù)據(jù)的輪廓數(shù)據(jù)設(shè)置成目標(biāo)輪廓數(shù)據(jù)。然后,在步驟S7根據(jù)基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)鑒別所述線段是否相交。在圖8A所示輪廓信息的基礎(chǔ)上通過檢查基準(zhǔn)輪廓數(shù)據(jù)(輪廓ABCD)的最大和最小坐標(biāo)和目標(biāo)輪廓數(shù)據(jù)(輪廓EFGH)的最大和最小坐標(biāo)并判斷是否相互重疊、即在其它輪廓數(shù)據(jù)的最大或最小值之間是否存在所述輪廓數(shù)據(jù)的最大和最小值在這個(gè)步驟中實(shí)現(xiàn)所述鑒別。如果存在,交點(diǎn)被識別為存在和所述順序前進(jìn)到步驟S8,但是,如果不存在,交點(diǎn)被識別為不存在,所述順序前進(jìn)到步驟S12,以便搜索下一個(gè)目標(biāo)輪廓數(shù)據(jù)。
步驟S8搜索基準(zhǔn)輪廓數(shù)據(jù)(ABCD)和目標(biāo)輪廓數(shù)據(jù)(EFGH)相互交叉的線段,計(jì)算每一個(gè)被發(fā)現(xiàn)交點(diǎn)的交點(diǎn)坐標(biāo)。對基準(zhǔn)輪廓數(shù)據(jù)每一個(gè)線段和目標(biāo)輪廓數(shù)據(jù)每一個(gè)線段所有的結(jié)合檢查線段的這種交點(diǎn)。如果在目標(biāo)輪廓數(shù)據(jù)一個(gè)線段最大和最小坐標(biāo)之間存在基準(zhǔn)輪廓數(shù)據(jù)一個(gè)線段的最大或最小坐標(biāo),即如果兩個(gè)線段相互重疊,則暫時(shí)判斷所述線段具有一個(gè)交點(diǎn),在這種情況下,兩個(gè)線段的交點(diǎn)被確定。
如果如圖9所示所述交點(diǎn)被包含在兩個(gè)線段之中,那么,最終判斷存在所述交點(diǎn)。另一方面,如果如圖10所示所述交點(diǎn)被置于所述線段外面,那么,這個(gè)交點(diǎn)是不合格的。對基準(zhǔn)輪廓數(shù)據(jù)的所有線段和目標(biāo)輪廓數(shù)據(jù)的所有線段進(jìn)行交點(diǎn)檢查,對于所有被如此發(fā)現(xiàn)的交點(diǎn),計(jì)算該交點(diǎn)的坐標(biāo)值。
然后,步驟S9鑒別步驟S8在基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)之間是否發(fā)現(xiàn)了交點(diǎn)。在發(fā)現(xiàn)至少一個(gè)交點(diǎn)的情況下,所述順序前進(jìn)到步驟S10以便執(zhí)行重新連接處理。另外,在步驟S7識別存在交點(diǎn)但在步驟S8實(shí)際檢查線段過程中被識別為不存在所述交點(diǎn)的情況(類似于圖11所示情況)下,所述順序也前進(jìn)到步驟S12。
在基準(zhǔn)輪廓數(shù)據(jù)和目標(biāo)輪廓數(shù)據(jù)具有交點(diǎn)的情況下,步驟S10通過加在步驟S8確定的交點(diǎn)執(zhí)行兩個(gè)輪廓數(shù)據(jù)的重新連接。
圖12A到12C和圖13A到13D示出了這種重新連接的模式。
在圖12A所示的例子中,基準(zhǔn)輪廓數(shù)據(jù)(ABCD)線段DA和目標(biāo)輪廓數(shù)據(jù)(EFGH)線段EF的交點(diǎn)被取做α,線段BC和線段EF之間的交點(diǎn)被取做β,線段BC和線段GH之間的交點(diǎn)被取做γ,和線段DA和線段GH之間的交點(diǎn)被取做δ。由于例如在重新連接具有交點(diǎn)Z的線段AB和CD的情況下,在諸如A→Z→D和C→Z→B的每一個(gè)坐標(biāo)新組中需要這個(gè)交點(diǎn)A,所以,這些交點(diǎn)以每兩個(gè)為一組的形式(例如α1、α2、β1、β2、γ1、γ2等)存儲(chǔ)在輪廓數(shù)據(jù)坐標(biāo)表(圖12C)中。另外,由于在重新連接所述輪廓數(shù)據(jù)之后的輪廓只需要起點(diǎn)和終點(diǎn),所以,通過刪除在輪廓坐標(biāo)數(shù)據(jù)表中號9處的終點(diǎn)和將其連接到所述起點(diǎn)上以回路形式重新連接所述目標(biāo)輪廓數(shù)據(jù),如圖12C所示。實(shí)際上,兩個(gè)輪廓的重新連接如圖13A到13D所示。
圖13A示出了重新連接在α處相交的基準(zhǔn)輪廓數(shù)據(jù)(ABCD)的線段DA和目標(biāo)輪廓數(shù)據(jù)(EFGH)的線段EF的方法。通過經(jīng)過交點(diǎn)α(α1)連接基準(zhǔn)輪廓數(shù)據(jù)所述線段的起點(diǎn)D和目標(biāo)輪廓數(shù)據(jù)所述線段的終點(diǎn)F,形成D→α1→ F連接。通過經(jīng)過交點(diǎn)α(α2)連接目標(biāo)輪廓數(shù)據(jù)所述線段的起點(diǎn)E和基準(zhǔn)輪廓數(shù)據(jù)所述線段的終點(diǎn)A形成另外一個(gè)連接E→α2→A。另外,根據(jù)這種連接改變下一個(gè)點(diǎn)和前一個(gè)點(diǎn)的號。
特別是,在圖13A所示的例子中,用于點(diǎn)D的“下一個(gè)點(diǎn)號”被變成“10”以指示點(diǎn)α1,同時(shí),用于點(diǎn)α1的“前一個(gè)點(diǎn)號”變成“3”以指示點(diǎn)D,“下一個(gè)點(diǎn)號”被類似地變成“6”以指示點(diǎn)F,和用于點(diǎn)F的“前一個(gè)點(diǎn)號”被變成用于指示點(diǎn)α1的“10”。類似的,用于點(diǎn)E的“下一個(gè)點(diǎn)號”變成“11”以指示點(diǎn)α2,同時(shí),用于點(diǎn)α2的“前一個(gè)點(diǎn)號”被變成“5”以指示點(diǎn)E,“下一個(gè)點(diǎn)號”被類似的變成“4”以指示點(diǎn)A,和用于點(diǎn)A的“前一個(gè)點(diǎn)號”被變成用于指示點(diǎn)α2的“11”。
圖13B所述了如圖12A所示基準(zhǔn)輪廓數(shù)據(jù)的線段BC和目標(biāo)輪廓數(shù)據(jù)的線段EF的連接。由于線段EF已經(jīng)被分成線段Eα2和α1F,所以,包含所述交點(diǎn)的線段α1F被選擇為目標(biāo)輪廓數(shù)據(jù)的線段。線段BC、α1F和交點(diǎn)β被重新連接為B→β1→F和α1→β2→C。然后,根據(jù)這個(gè)重新連接改變下一個(gè)點(diǎn)號和前一個(gè)點(diǎn)號。
與此類似,圖13C示出了基準(zhǔn)輪廓數(shù)據(jù)的線段BC和目標(biāo)輪廓數(shù)據(jù)的線段GH的重新連接。具有交點(diǎn)γ的基準(zhǔn)輪廓數(shù)據(jù)的線段β2C和目標(biāo)輪廓數(shù)據(jù)的線段GH被重新連接為β2→γ1→H和G→γ2→C。另外,根據(jù)這個(gè)重新連接修改輪廓坐標(biāo)數(shù)據(jù)表。最后,如圖13D所示,執(zhí)行基準(zhǔn)輪廓數(shù)據(jù)線段DA和目標(biāo)輪廓數(shù)據(jù)線段GH的重新連接?;鶞?zhǔn)輪廓數(shù)據(jù)的線段Dα1和目標(biāo)輪廓數(shù)據(jù)的線段γ1H被重新連接為D→δ1→H和γ1→δ2→α1,和根據(jù)這個(gè)重新連接修改輪廓坐標(biāo)數(shù)據(jù)表,如圖13D所示,該圖示出了在步驟S10重新連接操作之后的輪廓坐標(biāo)數(shù)據(jù)表。
然后,步驟S11執(zhí)行刪除在步驟S10通過重新連接消除的輪廓的寄存操作或加上新產(chǎn)生的輪廓的的寄存操作。在上述解釋過的實(shí)例中,當(dāng)步驟產(chǎn)生連接A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A,目標(biāo)輪廓數(shù)據(jù)E→F→G→H被吸收在基準(zhǔn)輪廓數(shù)據(jù)中。然后,為了指出基準(zhǔn)輪廓數(shù)據(jù)已經(jīng)被消除,目標(biāo)輪廓數(shù)據(jù)的起點(diǎn)號和終點(diǎn)號被變成“-1”,如圖14B所示。
另外,還產(chǎn)生了不屬于上述輪廓的新輪廓α1→β2→γ1→δ。由于圖13D所示的狀態(tài)是沒有起點(diǎn)和終點(diǎn)的一個(gè)回路,所以,通過選擇所述多個(gè)點(diǎn)中的任何一個(gè)點(diǎn)作為起點(diǎn)和終點(diǎn)寄存所述新的輪廓。這種新輪廓的寄存是在輪廓數(shù)據(jù)管理信息部分的終點(diǎn)處進(jìn)行的。然后,這個(gè)輪廓的旋轉(zhuǎn)方向和最大、最小值被檢查和寄存,如圖14B和14C所示。步驟S7到S11用于改變基準(zhǔn)輪廓數(shù)據(jù)(ABCD)和目標(biāo)輪廓數(shù)據(jù)(EFGH)的連接和完成一個(gè)目標(biāo)輪廓的數(shù)據(jù)處理。
然后,步驟S12例如通過檢查在步驟S11中處理的目標(biāo)輪廓數(shù)據(jù)之后是否存在其它的輪廓數(shù)據(jù)來搜索目標(biāo)輪廓數(shù)據(jù)的下一侯選數(shù)據(jù)。如果存在,步驟S13識別所述目標(biāo)輪廓數(shù)據(jù)沒有被用盡,所述順序前進(jìn)到步驟S14。另一方面,如果不存在,步驟S13識別目標(biāo)輪廓數(shù)據(jù)已經(jīng)被用盡,所述順序前進(jìn)到步驟S15。步驟S14將在步驟S12搜索到的目標(biāo)輪廓數(shù)據(jù)作為新檢測到的輪廓數(shù)據(jù)寄存,和然后所述順序返回到步驟S7,以便檢查與基準(zhǔn)輪廓數(shù)據(jù)的交點(diǎn)并執(zhí)行重新連接(如果存在所述交點(diǎn)的話)。在步驟S12或步驟S15搜索目標(biāo)或基準(zhǔn)輪廓數(shù)據(jù)的過程中,如果所述起點(diǎn)和終點(diǎn)不是“-1”,則這種交點(diǎn)被判斷為存在。在這些值是“-1”的情況下,所述輪廓數(shù)據(jù)被識別為被消除和搜索下一個(gè)輪廓數(shù)據(jù)。
步驟S17將在步驟S15搜索到的基準(zhǔn)輪廓數(shù)據(jù)作為將被新檢查的輪廓數(shù)據(jù)寄存,所述順序返回到步驟S6,以便檢查與目標(biāo)輪廓數(shù)據(jù)的交點(diǎn)和如果發(fā)現(xiàn)交點(diǎn)的話執(zhí)行重新連接。最后,步驟S18將在步驟S16之前確定的輪廓數(shù)據(jù)作為不包括交點(diǎn)的完整輪廓數(shù)據(jù)輸出。這個(gè)不包括交點(diǎn)的完整輪廓數(shù)據(jù)確實(shí)不需要包括寄存在輪廓數(shù)據(jù)管理信息部分中的所有輪廓。在圖14A所示的例子中,輪廓A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A是最后寄存的輪廓,而輪廓α1→β2→γ1→δ2不是最后被寄存的。
這種輪廓的識別是以下述方式執(zhí)行的。
在輪廓數(shù)據(jù)信息部分中最初寄存的一定數(shù)量的輪廓被存儲(chǔ),和最后在多個(gè)位置處寄存的輪廓數(shù)據(jù)當(dāng)中不會(huì)超過這個(gè)數(shù)量,不表示所述旋轉(zhuǎn)方向(圖14A所示例中A→B→β1→F→G→γ2→C→D→δ1→H→E→α2→A)相反方向的這些輪廓將被判斷為將被寄存的數(shù)據(jù)。在這些超過上述數(shù)量位置中寄存的輪廓當(dāng)中,即在這些新寄存的輪廓當(dāng)中,只表示旋轉(zhuǎn)方向相反方向的這些輪廓數(shù)據(jù)判斷為將被寄存的數(shù)據(jù)。在圖14A所示的例子中,沒有數(shù)據(jù)與與這種規(guī)定對應(yīng)。
作為另一個(gè)例子,圖15A和15B所示的輪廓數(shù)據(jù)組最初具有的輪廓數(shù)量是4。第一個(gè)輪廓數(shù)據(jù)由點(diǎn)號0到4組成,第二個(gè)輪廓數(shù)據(jù)由點(diǎn)號5到9組成,第三個(gè)輪廓數(shù)據(jù)由點(diǎn)號10到14組成和第四個(gè)輪廓數(shù)據(jù)由點(diǎn)號15到19組成。根據(jù)上述算法對這些輪廓數(shù)據(jù)的處理最終提供圖16A和16B所示的數(shù)據(jù)。在這種情況下,由于最初輪廓數(shù)量是4,所以,只有利用最初輪廓才能滿足在不超過最初數(shù)量和不表示旋轉(zhuǎn)方向相反方向的一個(gè)位置處寄存的條件。另外,只有利用最后輪廓才能滿足在超過最初數(shù)量和表示所述旋轉(zhuǎn)方向相反方向的一個(gè)位置處寄存的條件。因此,只有這兩個(gè)輪廓被最后寄存和能夠產(chǎn)生不相交完整輪廓數(shù)據(jù),如圖17所示。
步驟S19執(zhí)行將在后面根據(jù)圖23所示流程表示的一個(gè)處理,用于從在步驟S18提取的直線數(shù)據(jù)組中提取將被轉(zhuǎn)換成曲線數(shù)據(jù)的數(shù)據(jù)并將如此提取的數(shù)據(jù)轉(zhuǎn)換成曲線數(shù)據(jù)。
因此,通過檢測輪廓的交點(diǎn)、重新連接相互交叉的輪廓和最終只提取所需數(shù)據(jù)可以從包含交點(diǎn)的輪廓數(shù)據(jù)中產(chǎn)生不相交數(shù)據(jù)。
下面,為圖23所示流程設(shè)置一個(gè)基準(zhǔn),用于解釋圖22中步驟S19執(zhí)行的向曲線數(shù)據(jù)的轉(zhuǎn)換。
步驟S21從作為直線組寄存的數(shù)據(jù)中提取曲線區(qū)域和直線段區(qū)域。在所述直線段的長度超過某個(gè)閾值的情況下,通過將該線段末端處的點(diǎn)識別為終點(diǎn)來實(shí)現(xiàn)對這個(gè)直線段區(qū)域識別。在圖24所示的例子中,矩形被判斷為直線段的終點(diǎn)。在從目標(biāo)輪廓的點(diǎn)中提取所述直線段之后,所述順序前進(jìn)到步驟S22,該步驟識別在所述曲線區(qū)域中能夠被曲線方程表示的區(qū)域。執(zhí)行處理以提取拐彎位置,在該拐彎位置處,所述點(diǎn)的方向表示曲線區(qū)域中的一個(gè)急劇變化。該處理是通過檢測兩個(gè)相鄰點(diǎn)之間的方向和提取其中這個(gè)被檢測方向不同于到一個(gè)閾值角以外下一個(gè)相鄰點(diǎn)的方向的點(diǎn)實(shí)現(xiàn)的。在圖24所示的例子中,黑色圓表示曲線的終點(diǎn)。曲線區(qū)域和直線區(qū)域以這種方式提取。在圖24所示的例子中,從點(diǎn)A到點(diǎn)B的區(qū)域被判斷為是一個(gè)曲線區(qū)域,從B到C的區(qū)域被判斷為是一個(gè)曲線區(qū)域,從C到D的區(qū)域被判斷為是一個(gè)直線區(qū)域,從D到E的區(qū)域被判斷為是一個(gè)直線區(qū)域,從E到F被判斷為是一個(gè)直線區(qū)域,從F到G被判斷為是一個(gè)曲線區(qū)域,從G到A被判斷為是一個(gè)曲線區(qū)域。
步驟S23利用一個(gè)所希望的曲線等式執(zhí)行到在前述處理中被判斷為直線數(shù)據(jù)的近似。這種近似可以使用諸如二階B-分離曲線等式、二階貝塞爾曲線等式等各種等式,一個(gè)回路的等式是三階分離曲線等式或三階貝塞爾曲線等式。例如,在如圖7所示直線段組由三階貝塞爾曲線等式表示的情況下,如圖25所示首先確定經(jīng)過終點(diǎn)和直接相鄰點(diǎn)的一個(gè)直線,計(jì)算在這個(gè)直線延伸到第三階曲線控制點(diǎn)的位置。在如圖7所示的這個(gè)例子中,貝塞爾分解提供7個(gè)點(diǎn),同時(shí),兩次分解提供13點(diǎn),和n次分解提供(3x2n+1)個(gè)點(diǎn)。這樣,對于包含在一個(gè)單一曲線區(qū)域中的x數(shù)量個(gè)點(diǎn)來講,確定滿足一個(gè)整數(shù)n的關(guān)系(3x2n-1+1)<x<(3x2n+1),所述控制點(diǎn)被放置在經(jīng)過終點(diǎn)和直接相鄰點(diǎn)的所述直線延伸上與這兩個(gè)點(diǎn)之間距離的2n倍距離對應(yīng)的距離處。
在圖25所示的例子中,x=10,所以滿足上述關(guān)系的整數(shù)n被確定為“2”。然后,控制點(diǎn)被放置在與所述終點(diǎn)和所述相鄰點(diǎn)之間距離4倍對應(yīng)的位置(口)處,借此,可以實(shí)現(xiàn)從直線段組到曲線控制點(diǎn)的轉(zhuǎn)換。步驟S24提供了一個(gè)由在步驟S22確定的直線段的終點(diǎn)和在步驟S23確定的曲線區(qū)域的的終點(diǎn)和控制點(diǎn)構(gòu)成的用于規(guī)定所述輪廓的新點(diǎn)組。當(dāng)產(chǎn)生所述直線段數(shù)據(jù)和曲線數(shù)據(jù)時(shí),必須將一個(gè)識別標(biāo)記加到所述數(shù)據(jù)上以便進(jìn)行識別。
當(dāng)作為控制點(diǎn)x的終點(diǎn)O被提供用于圖16A所示的曲線時(shí),標(biāo)記“0”被附加到所述終點(diǎn)和標(biāo)記“1”被附加到所述控制點(diǎn)上,如圖26B所示。
然后,步驟25鑒別需要被處理的輪廓數(shù)據(jù)是否仍然存在,如果存在,所述順序返回到步驟S1以再次執(zhí)行直線數(shù)據(jù)組到直線和曲線數(shù)據(jù)組的轉(zhuǎn)換。如果這樣的數(shù)據(jù)不存在,順序結(jié)束。
如前所述,可以根據(jù)直線輪廓數(shù)據(jù)發(fā)現(xiàn)曲線輪廓數(shù)據(jù)。
本發(fā)明不僅可以應(yīng)用于由多個(gè)儀器(諸如主計(jì)算機(jī)、接口設(shè)備、閱讀器和打印機(jī)等)組成的系統(tǒng),而且可以應(yīng)用于由一個(gè)儀器(諸如復(fù)印機(jī)或傳真機(jī)等)構(gòu)成的裝置。
另外,本發(fā)明的目的還可以通過提供一個(gè)具有用于存儲(chǔ)實(shí)現(xiàn)前述實(shí)施例功能的軟件程序碼的存儲(chǔ)介質(zhì)的系統(tǒng)或裝置并利用這種系統(tǒng)或裝置的計(jì)算機(jī)(或CPU或MPU)讀出和執(zhí)行存儲(chǔ)在這個(gè)存儲(chǔ)介質(zhì)上的程序碼來實(shí)現(xiàn)。
在這種情況下,從所述存儲(chǔ)介質(zhì)讀出的程序碼本身實(shí)現(xiàn)前述實(shí)施例的功能,用于存儲(chǔ)程序碼的存儲(chǔ)介質(zhì)構(gòu)成本發(fā)明。
用于提供程序碼的存儲(chǔ)介質(zhì)例如可以是軟盤、硬盤、光盤、光磁盤、CD-ROM、CD-R、磁帶、非易失存儲(chǔ)卡或ROM。
除了利用計(jì)算機(jī)讀出程序碼實(shí)現(xiàn)前述實(shí)施例功能以外,本發(fā)明還可以根據(jù)上述程序碼的指令利用操作系統(tǒng)或類似的功能實(shí)現(xiàn)實(shí)際處理或部分處理。
此外,本發(fā)明還包括下述情況,即從所述存儲(chǔ)介質(zhì)中讀出的程序碼被存儲(chǔ)在在插入到所述計(jì)算機(jī)中一個(gè)功能擴(kuò)展板內(nèi)提供的存儲(chǔ)器中或其中的一個(gè)功能擴(kuò)展單元的存儲(chǔ)器中,和根據(jù)這些程序碼的指令利用在這個(gè)功能擴(kuò)展板或單元內(nèi)的CPU執(zhí)行實(shí)際或部分處理,以便實(shí)現(xiàn)前述實(shí)施例的功能。
如在前面所解釋的,本發(fā)明前述實(shí)施例在根據(jù)曲線數(shù)據(jù)產(chǎn)生直線段之后執(zhí)行交點(diǎn)的檢測,借此根據(jù)包含交點(diǎn)筆畫的坐標(biāo)數(shù)據(jù)高速產(chǎn)生不相交完整輪廓的輪廓數(shù)據(jù)。
還可以根據(jù)由筆畫單元輪廓數(shù)據(jù)構(gòu)成的包含交點(diǎn)的筆畫數(shù)據(jù)高速產(chǎn)生高圖象質(zhì)量的不相交輪廓坐標(biāo)。
還可以根據(jù)由中心線和寬度表示的數(shù)據(jù)構(gòu)成的包含交點(diǎn)的筆畫數(shù)據(jù)高速產(chǎn)生高圖象質(zhì)量不包含交點(diǎn)的輪廓坐標(biāo)。
如在前面所解釋的,本發(fā)明允許從包含交點(diǎn)的筆畫中產(chǎn)生不相交完整輪廓數(shù)據(jù)。
另外,本發(fā)明還提供了一個(gè)優(yōu)點(diǎn),即可以高速和高質(zhì)量地產(chǎn)生一個(gè)圖象圖案。
權(quán)利要求
1.一種用于根據(jù)在可能相互交叉的多個(gè)筆畫的一個(gè)筆畫中寄存的數(shù)據(jù)產(chǎn)生不相交輪廓數(shù)據(jù)的信息處理裝置,包括;讀出裝置,用于讀出兩個(gè)筆畫的輪廓坐標(biāo);整直裝置,用于整直由所述兩個(gè)輪廓坐標(biāo)表示的輪廓;鑒別裝置,用于在所述輪廓坐標(biāo)被所述整直裝置整直的基礎(chǔ)上鑒別所述兩個(gè)筆畫的輪廓是否相互交叉;和輪廓數(shù)據(jù)產(chǎn)生裝置,用于確定由所述鑒別裝置識別的交點(diǎn)和改變包括所述交點(diǎn)的輪廓點(diǎn)的連接,借此以產(chǎn)生不相交輪廓數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的裝置,還包括判斷裝置,用于判斷由所述產(chǎn)生裝置產(chǎn)生的不相交輪廓數(shù)據(jù)的曲線部分;和曲線產(chǎn)生裝置,用于在由所述判斷裝置判斷的曲線部分的基礎(chǔ)上產(chǎn)生一個(gè)曲線。
3.根據(jù)權(quán)利要求1所述的裝置,還包括輸出裝置,用于在由所述輪廓數(shù)據(jù)產(chǎn)生裝置產(chǎn)生的輪廓數(shù)據(jù)的基礎(chǔ)上輸出一個(gè)模式。
4.根據(jù)權(quán)利要求3所述的裝置,其特征是所述輸出裝置是一個(gè)打印機(jī)。
5.根據(jù)權(quán)利要求3所述的裝置,其特征是所述輸出裝置是一個(gè)顯示器。
6.根據(jù)權(quán)利要求1所述的裝置,其特征是所述筆畫的輪廓座標(biāo)表示所述筆畫的輪廓。
7.根據(jù)權(quán)利要求1所述的裝置,其特征是所述筆畫的輪廓座標(biāo)是表示一個(gè)中心線和寬度的數(shù)據(jù)。
8.根據(jù)權(quán)利要求1所述的裝置,其特征是所述鑒別裝置被用于在所述兩個(gè)筆畫輪廓座標(biāo)的最大和最小值的基礎(chǔ)上鑒別所述兩個(gè)筆畫是否相交。
9.根據(jù)權(quán)利要求1所述的裝置,其特征是所述輪廓產(chǎn)生裝置被用于通過確定經(jīng)過所述兩個(gè)筆畫交點(diǎn)的的連續(xù)輪廓和連接相同旋轉(zhuǎn)方向的連續(xù)輪廓產(chǎn)生所述輪廓數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征是所述輪廓數(shù)據(jù)產(chǎn)生裝置被用于產(chǎn)生組成旋轉(zhuǎn)方向不同于所述第一輪廓旋轉(zhuǎn)方向的第二獨(dú)立輪廓的輪廓數(shù)據(jù)。
11.一種用于從寄存在可能相互交叉的多個(gè)筆畫的一個(gè)筆畫中的數(shù)據(jù)產(chǎn)生不相交輪廓數(shù)據(jù)的信息處理方法,包括讀出步驟,用于讀出兩個(gè)筆畫的輪廓數(shù)據(jù);整直步驟,用于整直由所述輪廓座標(biāo)表示的輪廓;鑒別步驟,用于在被整直輪廓座標(biāo)的基礎(chǔ)上鑒別所述兩個(gè)筆畫座標(biāo)的輪廓是否相交;和輪廓數(shù)據(jù)產(chǎn)生步驟,用于確定由所述鑒別步驟識別的一個(gè)交點(diǎn)和改變包括所述交點(diǎn)在內(nèi)多個(gè)輪廓點(diǎn)的連接,借此產(chǎn)生不相交輪廓數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的方法,還包括判斷步驟,用于判斷由所述產(chǎn)生步驟產(chǎn)生的不相交輪廓數(shù)據(jù)的曲線部分;和曲線產(chǎn)生步驟,用于在由所述判斷步驟判斷的曲線部分的基礎(chǔ)上產(chǎn)生一個(gè)曲線。
13.根據(jù)權(quán)利要求11所述的方法,其特征是所述筆畫的輪廓座標(biāo)表示所述筆畫的輪廓。
14.根據(jù)權(quán)利要求11所述的方法,其特征是所述筆畫的輪廓座標(biāo)是表示中心線和寬度的數(shù)據(jù)。
15.根據(jù)權(quán)利要求11所述的方法,其特征是所述鑒別步驟被用于在所述兩個(gè)筆畫輪廓座標(biāo)最大值和最小值的基礎(chǔ)上鑒別所述兩個(gè)筆畫是否相交。
16.根據(jù)權(quán)利要求11所述的方法,其特征是所述輪廓數(shù)據(jù)產(chǎn)生步驟被用于通過確定經(jīng)過所述兩個(gè)筆畫交點(diǎn)的連續(xù)輪廓和連接相同旋轉(zhuǎn)方向的連續(xù)輪廓產(chǎn)生所述輪廓數(shù)據(jù)。
17.根據(jù)權(quán)利要求16所述的方法,其特征是所述輪廓數(shù)據(jù)產(chǎn)生步驟被用于產(chǎn)生組成旋轉(zhuǎn)方向不同于所述第一輪廓旋轉(zhuǎn)旋轉(zhuǎn)方向的第二獨(dú)立輪廓的輪廓數(shù)據(jù)。
18.一種用于執(zhí)行用于從可能相互交叉的多個(gè)筆畫的一個(gè)筆畫中寄存的輪廓數(shù)據(jù)中產(chǎn)生不相交輪廓數(shù)據(jù)的信息處理方法的程序,包括整直步驟模塊,用于整直由所述輪廓座標(biāo)表示的輪廓;鑒別步驟模塊,用于在被整直輪廓座標(biāo)的基礎(chǔ)上鑒別所述兩個(gè)筆畫的輪廓是否相交;和輪廓數(shù)據(jù)產(chǎn)生步驟模塊,用于確定由所述鑒別步驟模塊識別的一個(gè)交點(diǎn)和改變包括所述交點(diǎn)在內(nèi)的多個(gè)輪廓點(diǎn)的連接,借此,產(chǎn)生不交叉輪廓數(shù)據(jù)。
19.根據(jù)權(quán)利要求18所述的程序,還包括判斷步驟模塊,用于判斷由所述產(chǎn)生步驟產(chǎn)生的不相交輪廓數(shù)據(jù)的曲線部分;和曲線產(chǎn)生步驟模塊,用于在由所述判斷步驟模塊判斷的曲線部分的基礎(chǔ)上產(chǎn)生一個(gè)曲線。
全文摘要
本發(fā)明旨在以高速從包含交點(diǎn)的筆畫數(shù)據(jù)中產(chǎn)生不相交完整輪廓數(shù)據(jù),借此高速輸出高質(zhì)量的字符和圖象。從寄存字符的所有筆畫中提取每一對筆畫,然后,被提取筆畫的曲線數(shù)據(jù)被整直,并鑒別每一對被提取筆畫的線段是否相互交叉,如果存在交點(diǎn),這個(gè)交點(diǎn)的坐標(biāo)被計(jì)算和存儲(chǔ)。然后,在所存儲(chǔ)交點(diǎn)坐標(biāo)的基礎(chǔ)上根據(jù)一個(gè)預(yù)定法則重新連接所述輪廓。
文檔編號G06T11/20GK1188274SQ9712259
公開日1998年7月22日 申請日期1997年10月10日 優(yōu)先權(quán)日1996年10月11日
發(fā)明者吉田政幸 申請人:佳能株式會(huì)社