專利名稱:服裝紙樣的自動數(shù)字化的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及服裝式樣的數(shù)字化,更具體地講,涉及通過圖像掃描技術(shù)實現(xiàn)服裝式樣的自動數(shù)字化或半自動數(shù)字化。
背景技術(shù):
通常服裝是通過將多片布料縫合在一起制成的。那么,服裝的設(shè)計主要由這些布片的形狀決定。傳統(tǒng)上,用形狀和尺寸與布片完全相同的厚紙片記錄確定服裝設(shè)計的形狀。這些形狀各異的厚紙片在工業(yè)中被稱作“紙樣”。構(gòu)成整個服裝的紙樣的集合稱作式樣。給定一種式樣,就可以通過簡單拷貝紙樣的形狀制成布料片,然后,通過將布料縫合在一起制成理想設(shè)計的服裝。
在產(chǎn)生許多不同服裝設(shè)計和尺寸的工業(yè)環(huán)境中,主要的任務(wù)是對幾百種甚至更多種式樣進行正確地編制和管理。因此,在工業(yè)中引入記錄和管理服裝設(shè)計過程的計算機化。在計算機化的設(shè)計管理系統(tǒng)中,每個布片的形狀是以一組曲線和直線存儲的,形成數(shù)字紙樣。通過這種數(shù)字紙樣,很容易使用繪圖儀在紙片上畫出與原物一樣大小的形狀,甚至可以用具有刀具而不是筆的專用繪圖儀自動裁剪出紙樣或布片的形狀。
設(shè)計的計算機化具有許多優(yōu)點。當(dāng)每一片布料的形狀和尺寸以數(shù)字的形式記錄時,更容易記錄和管理大量設(shè)計。而且,數(shù)字化的設(shè)計可以傳送到遠距離外的服裝制造場所。但是,設(shè)計的計算機化的最大優(yōu)點是容易分級。通常,在工業(yè)環(huán)境中,需要生產(chǎn)同一基本設(shè)計的幾種不同尺寸的服裝。用于制成不同尺寸服裝的式樣修改被稱作分級。在計算機上實現(xiàn)時,分級的過程更為簡便和迅速。
系統(tǒng)的輸入和輸出是實物形態(tài)。當(dāng)然,輸出是制造出來的實際服裝。理論上,除了制造以外,整個過程都可以放在計算機中進行;時裝設(shè)計人員或設(shè)計師可以在計算機屏幕上設(shè)計服裝和套裝,并將結(jié)果發(fā)送到工廠,在那里設(shè)計第一次轉(zhuǎn)化為實物形態(tài)。但是,至少對于大多數(shù)當(dāng)代的設(shè)計師,使用實物形態(tài)更自如和容易,實物形態(tài)即厚紙片制成的實物紙樣。因此,在過程的開始,設(shè)計師產(chǎn)生式樣,即一組實物式樣,然后,由使用“數(shù)字化儀”描繪紙樣輪廓的“取模人員”將每個紙樣數(shù)字化為數(shù)字形式。
數(shù)字化實物紙樣的過程是緩慢和費力的。典型地,取模人員將紙樣固定在大的數(shù)字化儀板上,并通過在輪廓上逐個對準(采用專門的指示器)相關(guān)點來描繪紙樣的輪廓,并按下一按鈕通知數(shù)字化儀板定位并記錄儀板上的定位器的位置。
Bankart等人的美國專利4,575,628(1986)介紹了紙樣掃描儀。然而,該紙樣掃描儀沒有被廣泛使用的部分原因是其無法自動識別紙樣輪廓線上的拐角。紙樣的輪廓線是其最重要的特征,并且區(qū)分在輪廓線上的點是否是拐角是非常重要的。也就是說,拐角是輪廓線的形狀的最顯著的特征,并且被經(jīng)常用作分級點。目前正在使用的幾乎所有的計算機化的設(shè)計管理系統(tǒng)中都將拐角點與其它點區(qū)別對待。因此,在現(xiàn)有技術(shù)中,用戶或者用數(shù)字化儀板手動地進行數(shù)字化,或者使用現(xiàn)有的紙樣掃描儀,然后手動地標記拐角。
本發(fā)明涉及數(shù)字化實物紙樣的過程。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的一個目的是提供一種自動數(shù)字化服裝紙樣的方法。本發(fā)明的另一個目的是提供一種自動數(shù)字化服裝紙樣從而所得到的數(shù)據(jù)包括紙樣的形狀信息的方法,紙樣的形狀信息包括拐角的識別。
圖1示出了本發(fā)明的過程。首先,將實物紙樣(101),即與作為服裝的一部分的布料片的形狀相同的紙樣掃描成光柵圖像(102)。這可以使用任何一種目前的數(shù)字成像技術(shù)實現(xiàn)。例如,可以使用在辦公室中常見的平板掃描儀(103)或CCD數(shù)碼相機(104)。在工業(yè)環(huán)境中,可以使用大幅面掃描儀(105)。掃描的結(jié)果是實物紙樣的光柵圖像(102)或數(shù)字影印。第二階段識別諸如亮度邊緣之類的光柵圖像的特征并產(chǎn)生數(shù)字形式的數(shù)字紙樣(106)或?qū)嵨锛垬拥囊唤M相關(guān)信息。相關(guān)信息包括實物紙樣的形狀和尺寸,以及在實物紙樣上畫出的直線和曲線。信息應(yīng)當(dāng)以有用的形式數(shù)字表示,也就是說,以容易被機器處理的形式表示。例如,為了控制繪圖儀畫出紙樣的輪廓線,必須明確地知道在輪廓線上的連續(xù)點的坐標。因此,數(shù)字紙樣應(yīng)當(dāng)包括輪廓線的明確表示。這種明確表示可以是一系列點的坐標,或者諸如樣條參數(shù)之類的曲線的某些描述,但顯然不是光柵圖像。從光柵圖像中提取這些以完全不同的形式表示的信息是一項重要的任務(wù)。
階段1掃描第一階段(107)將實物紙樣掃描為光柵圖像。這可以使用任何一種當(dāng)前的數(shù)字成像技術(shù)實現(xiàn)。例如,可以使用在辦公室中常見的平板掃描儀(103),或者CCD數(shù)碼相機(104)。在工業(yè)環(huán)境中,可以使用大幅面掃描儀(105)。掃描的結(jié)果是光柵圖像(102),即,實物紙樣的數(shù)字影印。
階段2識別給定由第一階段得到的紙樣的光柵圖像(102),該方法從光柵圖像中提取相關(guān)信息。紙樣的最重要的信息是它的輪廓線(108),其它重要特性包括在紙樣上畫出的直線和曲線(109),下文中稱其為內(nèi)部曲線。在光柵圖像中出現(xiàn)的輪廓線和內(nèi)部曲線都作為曲線。因此,本方法識別光柵圖像中的曲線。存在不止一個可能的算法來檢測和識別曲線。任何能夠可靠地識別出光柵圖像中的曲線的算法都可以用于本發(fā)明。
這種算法找出在光柵圖像中如曲線一樣排列的特征象素。象素所具有的特征依賴于算法所要尋找的曲線的類型。在背景和紙樣紙的顏色已知的情況下,在紙樣的輪廓線上的象素的特征為兩種顏色的邊界。在內(nèi)部曲線上的象素的特征在于它的顏色不同于紙樣紙的顏色。雖然其本身的這種簡單特征不夠充分,但是它們作為局部標準來縮小曲線的軌跡。找到滿足局部標準的一組候選象素后,算法找出這些象素確定的曲線。
本階段的結(jié)果是一組數(shù)據(jù),稱為數(shù)字紙樣。它包括構(gòu)成輪廓線和內(nèi)部曲線的曲線的表示。該表示使得容易計算出曲線上的連續(xù)點的坐標。另外,數(shù)字紙樣還包括其它諸如識別碼、生產(chǎn)日期以及應(yīng)使用何種織物之類的附帶數(shù)據(jù),附帶數(shù)據(jù)可以手動輸入到系統(tǒng)中。數(shù)字紙樣甚至還可以包括原始的光柵圖像,這樣,即使第二階段中出現(xiàn)的錯誤在以后被發(fā)現(xiàn),也可以利用不同的參數(shù)重新進行識別。
階段3手動數(shù)據(jù)輸入(可選)每個紙樣具有某些諸如識別碼、生產(chǎn)日期以及使用何種織物之類的附帶數(shù)據(jù)。這可以由操作人員手動輸入。某些附帶數(shù)據(jù)寫在實物紙樣上。例如,有時用數(shù)字表示的分級信息寫在掃描儀上的紙樣上。在圖1中,(111)所示的紙樣是屬于這種情況的例子。白色的箭頭表示代表重要信息的手寫數(shù)字。雖然它最好能夠由機器識別,但是可靠地識別紙樣上散布的所有信息是一個技術(shù)難題。代替的方式是,所有這些數(shù)據(jù)可以由操作人員輸入。為了容易實現(xiàn),系統(tǒng)可以在計算機屏幕上顯示紙樣的光柵圖像,從而操作人員可以從屏幕上讀取數(shù)據(jù)。甚至在輸入分級信息時可以將圖像從顯示一個數(shù)字的部分移動到顯示另一個數(shù)字的部分。
圖1示出了本發(fā)明的過程。
圖2a示出了典型的大幅面掃描儀。
圖2b示出了旋轉(zhuǎn)組件的放大圖。
圖2c示出了服裝紙樣送入掃描儀的情形。
圖2d示出了卡在輥子的軸之間的小的服裝紙樣。
圖2e示出了在兩個桿上跨接的傳送帶。
圖2f示出了具有傳送帶的整個掃描儀。
圖2g示出了只接觸少數(shù)幾個輥子時的旋轉(zhuǎn)的紙樣。
圖2h示出了更寬的輥子。
圖2i示出了構(gòu)成長輥筒的整個桿。
圖2j示出了在兩個桿之間跨過寬傳送帶的掃描儀的改進。
圖2k示出了使用大的透明片和背景片作為一個整體通過掃描儀。
圖3示意性地示出了Contours的數(shù)據(jù)結(jié)構(gòu)。
圖4示出了通過位圖檢測輪廓線的方法的流程圖。
圖5示出了初始化-輪廓的子程序的流程圖。
圖6示出了收縮子程序的流程圖。
圖7示出了伸展-收縮子程序的流程圖。
圖8示出了循環(huán)-檢查子程序的流程圖。
圖9示出了不正確的-輪廓子程序的流程圖。
圖10示出了平滑-曲率子程序的流程圖。
圖11示出了計算-曲率子程序的流程圖。
圖12示出了發(fā)現(xiàn)-拐角子程序的流程圖。
具體實施例方式
在此,詳細介紹本發(fā)明的實施例。本實施例是配備掃描儀的標準PC系統(tǒng)。硬件配置是可以從計算機設(shè)備銷售商那里得到的普通的硬件配置,并且該硬件配置很容易由本領(lǐng)域的技術(shù)人員實現(xiàn)。
掃描儀由掃描儀掃描實物紙樣,并發(fā)送到PC(110)以位圖的格式存儲。格式可以是任何已知的或私有的格式。在下面,我們假設(shè)被掃描圖像的背景是沒有用作實物紙樣(即,與作為服裝的一部分的布料片的形狀相同的厚紙片)的顏色的特殊顏色。雖然特殊顏色(黑)不重要,但是黑色幾乎從來不用作實物紙樣的紙的顏色。還容易安排使背景以特定的顏色表現(xiàn)出來。圖1示出了實物紙樣的典型的掃描位像(102)。
大幅面掃描儀在此,我們討論為滿足掃描服裝紙樣的需要而改進的大幅面掃描儀。圖2a示出了典型的大幅面掃描儀(105)。它有一組旋轉(zhuǎn)的輥子(201),在支撐表面(204)上移動紙片(203)(或者用戶想要掃描的任何東西)。紙片(203)要掃描的一面向下放置。從支撐表面(204)的下方,產(chǎn)生光掃描。輥子通常由泡沫橡膠制成,并且附著在同樣旋轉(zhuǎn)的兩個桿(202)上。圖2b示出了旋轉(zhuǎn)組件的放大圖。在支撐表面(204)的下方是與表面(204)上方的輥子(201)配合旋轉(zhuǎn)的另一組輥子(205),以利于紙片(203)的平滑移動。
圖2c示出了服裝紙樣(206)送入掃描儀的情形。當(dāng)要掃描服裝紙樣而不是規(guī)則的四方形的紙張時,問題出現(xiàn)了。有些服裝紙樣太小了,以至于不能用這種大掃描儀掃描。圖2d示出了卡在輥子(201、205)的軸之間的小的服裝紙樣(207)。雖然對于這種小的服裝紙樣可以用諸如辦公室常見的平板掃描儀(103)等較小的掃描儀掃描,但是對所有的紙樣使用同一個大掃描儀掃描則更方便。為了使利用大掃描儀掃描所有紙樣成為可能,移動表面必須時刻與紙樣接觸。圖2e示出了通過在兩個桿(202)上跨接的傳送帶(208)如何使利用大掃描儀掃描所有紙樣成為可能。傳送帶也由泡沫橡膠制成。在圖2f示出了進行了該項改進的整個掃描儀。
當(dāng)掃描不規(guī)則形狀的對象,例如服裝紙樣時,利用典型的大幅面掃描儀的另一個問題在于掃描對象(209)可能不穩(wěn)定。例如,如圖2g所示,當(dāng)紙樣只接觸少數(shù)幾個輥子(201)時,它往往會旋轉(zhuǎn)。用如圖2h所示的更寬的輥子作為輥子(210),甚至如圖2i所示使整個桿成為一個長輥子來解決該問題。
結(jié)合這兩項改進,圖2j示出了在兩個桿(202)之間跨接寬傳送帶(211)的改進,以解決上述兩個問題。
提供移動表面的不同的方法(圖2k)是使用大的透明片(212)和背景片(213)作為一個整體通過掃描儀。大的和小的服裝紙樣(206、207)可以放在兩個片之間。掃描儀可以從下方以光學(xué)方式掃描紙樣,因為下面的片(212)是透明的。背景片(213)是黑色的,以便在得到的光柵圖像中作為背景色出現(xiàn)。
識別從位像中提取相關(guān)信息的識別階段由運行在PC系統(tǒng)上的計算機程序?qū)崿F(xiàn)。程序裝載掃描的位像并產(chǎn)生存儲提取的數(shù)據(jù)的計算機文件。在本實施例中,提取紙樣的輪廓線,這是實物紙樣最重要的特征。
因為布料需要根據(jù)輪廓線來裁剪,所以紙樣的輪廓線是其最重要的特征。因此,精確地識別紙樣的輪廓線對于系統(tǒng)是最重要的。為了實現(xiàn)最精確和可靠的性能,本實施例采用了僅使用輪廓線的特殊性質(zhì)檢測輪廓線的特殊方法。該方法利用輪廓線總是單一封閉曲線的事實。該方法還使用了有關(guān)于背景和紙樣的顏色的信息。更具體地,該方法找出是作為兩種顏色的邊界的封閉曲線,這樣,該圖像在封閉曲線外側(cè)的部分由背景色填充。某些參數(shù)依賴于圖像的分辨率。在實際上,可采用分辨率為75DPI(每英寸的點數(shù))。
數(shù)據(jù)結(jié)構(gòu)在圖3(301)中示意性地示出了記錄數(shù)據(jù)結(jié)構(gòu)Contours的方法,該數(shù)據(jù)結(jié)構(gòu)Contours保存一個或多個輪廓記錄。如圖3(302)所示,每個輪廓記錄是一個數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包括保存諸如可變長度陣列或列表的象素記錄的可變數(shù)量的數(shù)據(jù)結(jié)構(gòu)。每個象素記錄包括若干字段(303)。pt字段(304)是矢量類型(305)的變量,其自身具有表示圖像中一個象素坐標的整數(shù)變量的兩個字段x(306)和y(307)。其它字段包括實數(shù)變量curv(308)和布爾變量corner(309)。在輪廓記錄中記錄的各個象素通過索引號訪問。在下文中和圖中,在輪廓記錄C中的記錄數(shù)量由size(C)表示,其中的第n個記錄由C[n]表示。字段表示為C[n].pt、C[n].curv和C[n].corner。索引號應(yīng)當(dāng)從零開始。例如,在輪廓記錄ctr中的第一個記錄的索引號是0,由ctr
表示,而最后一個記錄的索引號是size(ctr)-1,由ctr[size(ctr)-1]表示。因為輪廓記錄用來表示閉合的輪廓,所以數(shù)據(jù)結(jié)構(gòu)應(yīng)當(dāng)是循環(huán)的,也就是說,最后一個記錄之后,重新回到第一個記錄,直到找到所關(guān)心的索引號。因此,ctr[size(ctr)]與ctr
表示同一個記錄,更廣泛地,對于任意整數(shù)n,ctr[n+size(ctr)]與ctr[n]表示同一個記錄。特別地,為了簡化標號,允許使用負的索引號。因此,例如ctr[-1]表示ctr中的最后一個記錄,與ctr[size(ctr)-1]相同。
檢測輪廓線圖4示出了從位像中檢測輪廓線的方法的流程圖。入口點為401。在步驟402,如下文介紹的,在初始化輪廓子程序中初始化數(shù)據(jù)結(jié)構(gòu)Contours。然后是兩個嵌套的循環(huán)。重復(fù)外部循環(huán)直到在循環(huán)開始處(403)設(shè)置為真的布爾變量finished在循環(huán)的末端(416)仍保持為真。也就是說,如果在416發(fā)現(xiàn)變量finished為假,不退出外部循環(huán)并返回到步驟403。對在Contours中的所有輪廓記錄重復(fù)內(nèi)部循環(huán)(由初始化步驟404、增加步驟405和退出測試步驟415控制)。在內(nèi)部循環(huán)中當(dāng)前輪廓記錄稱作ctr。在內(nèi)部循環(huán)中,當(dāng)前輪廓記錄ctr通過入口參數(shù)傳送給多個子程序。在下面將更詳細的介紹每個子程序。首先,調(diào)用收縮子程序(406)。返回值為真或假的布爾變量。檢查該返回值(407),如果為真,則將變量finished的值設(shè)為假(408)。下一步,調(diào)用伸展-收縮子程序(409)。然后,調(diào)用循環(huán)-檢查子程序(410),如果返回值為真(411),則調(diào)用不正確的-輪廓子程序(412)。如果仍然返回真(413),則從Contours中去除當(dāng)前輪廓記錄ctr(414)。在步驟415,檢查是否已經(jīng)對Contours中的所有輪廓記錄重復(fù)內(nèi)部循環(huán)。在退出外部循環(huán)之后,選擇在Contours中留下的輪廓中最大的作為外形輪廓并稱作ctr。然后,ctr傳送到計算局部曲率(418)、平滑(419)局部曲率以及識別拐角點(420)這三個子程序。該方法返回ctr。
該方法的輸出是存儲在返回值ctr中的輪廓。它是連續(xù)的象素記錄,其中的每一個記錄保存象素坐標(pt)、該點的曲率(curv)以及該點是否是拐角(corner)的信息。
初始化-輪廓圖5示出了初始化-輪廓的子程序的流程圖。首先,清空數(shù)據(jù)結(jié)構(gòu)Contours并建立一個新的輪廓記錄(51),該記錄在此稱作newcontour。然后用象素記錄填充該新的輪廓,從而表示圖像矩形的外形。我們假設(shè)全局矢量變量ImageSize在變量ImageSize.x和ImageSize.y中包含圖像矩形的尺寸,圖像的寬度和高度的象素數(shù)量的變量ImageSize.x和ImageSize.y是以象素數(shù)量表示的圖像寬度和高度的。因此,新的輪廓從坐標(0,0)開始,并在水平方向上至(ImageSize.x-1,0)(在52中增加),然后至(ImageSize.x-1,ImageSize.y-1)(53),然后至(0,ImageSize.y-1)(54),最后返回至(0,0)(55)。在圖中,“增加點(0,0)”指“將pt字段(0,0)加到象素記錄中”等。新的輪廓加到結(jié)構(gòu)Contours中(56)。
收縮圖6示出了收縮子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用收縮子程序。也就是說,在該子程序中對ctr的任何改變(增加象素記錄、刪除象素記錄等)都是直接針對在調(diào)用側(cè)作為實際參數(shù)傳遞的輪廓記錄進行的。在編程語言C++中,可以通過使用函數(shù)調(diào)用的“帶入口參數(shù)調(diào)用”方法來實現(xiàn)。其它語言具有類似的功能來實現(xiàn)該功能,并且它們的使用在本領(lǐng)域中是公知的。
首先,布爾變量moved初始化為假(601),并且ctr復(fù)制到另一個新的輪廓記錄數(shù)據(jù)結(jié)構(gòu)C中(602)。然后,對在輪廓記錄中的每個象素記錄執(zhí)行循環(huán),索引號i從0增加到size(ctr)-1(由初始化步驟603、增加步驟611和退出測試步驟612控制)。在循環(huán)內(nèi)部,矢量C[i+1].pt-C[i-1].pt存儲在矢量變量v中(604)。請記住該矢量具有整數(shù)部分。下一步,得到v的長度|v|(即,(v.x)2+(v.y)2的正平方根),并且其整數(shù)部分存儲在整數(shù)變量d中(605)。在此,假設(shè)函數(shù)Int(t)給出數(shù)t的整數(shù)部分。更具體地,如果t是非負的,則返回不大于t的最大整數(shù),如果t是負的,則返回不小于t的最小整數(shù)。如果d為零(606),則循環(huán)繼續(xù)到下一個索引號。否則,將值(Int(-v.y/d)和Int(v.x/d))分配給v(607),然后檢查點ctr[i].pt+v是否在圖像矩形的內(nèi)部(608),如果在內(nèi)部,則檢查該點的象素是否是背景象素(609)。如果是背景象素,則存儲在輪廓記錄ctr中的ctr[i].pt中的點坐標改為坐標ctr[i].pt+v,并且變量moved指定為真(610)。在退出循環(huán)后,變量moved作為布爾返回值返回。這可以表示出在子程序中是否移動了在輪廓記錄ctr中的任何點坐標。如果象素點沒有命中非背景象素,則該子程序具有向“內(nèi)部”方向(v)移動輪廓的每個點的作用。
伸展-收縮圖7示出了伸展-收縮子程序的流程圖。和前面的收縮子程序一樣,對輪廓記錄帶入口參數(shù)ctr調(diào)用伸展-收縮子程序。該子程序有兩個嵌套循環(huán)。重復(fù)外部循環(huán),直到在循環(huán)開始處(701)設(shè)置為真的布爾變量nochange在循環(huán)的末端(714)仍保持為真。使用從0到size(ctr)-1的索引號i對在ctr中的所有象素記錄重復(fù)內(nèi)部循環(huán)(由初始化步驟701、增加步驟712和退出測試步驟713控制)。在內(nèi)部循環(huán)中,首先檢查在輪廓中具有連續(xù)索引號的一對象素記錄(702)或者索引號相差二的一對象素記錄(703)是否具有相同的點坐標(pt字段)。如果滿足其中一種條件,則從輪廓記錄ctr中去除象素記錄ctr[i](704),并且布爾變量nochange設(shè)置為假(705)。如果兩種情況都沒有出現(xiàn),則按如下方法測試兩個連續(xù)記錄的點坐標是否離得太遠(兩個坐標中的任一個的距離大于1)。差矢量ctr[i].pt-ctr[i-1].pt存儲在變量v中(706),并測試是否|v.x|>1或者|v.y|>1(707)。如果兩種情況都沒有出現(xiàn),則點之間沒有離得太遠,并繼續(xù)執(zhí)行內(nèi)部循環(huán)。如果其中的任一種情況出現(xiàn),則在兩個記錄之間插入新的象素記錄。為了找到插入新點的位置,反復(fù)用(Int(v.x/2),Int(v.y/2))代替v,直到|v.x|和|v.y|至多為1(708、709)。然后,點坐標為ctr[i].pt-v的象素記錄插入到輪廓記錄ctr中的索引號i和i-1之間的位置(710),并且布爾變量nochange設(shè)置為假(711)。這樣,在圖像平面中的兩點之間緊鄰ctr[i].pt形成新的點。如果新的點與ctr[i].pt仍然離得太遠,在下一個外部重復(fù)中將被糾正。因此,子程序保持在輪廓中的連續(xù)點在每個坐標中至多相距一。
循環(huán)-檢查圖8示出了循環(huán)-檢查子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用循環(huán)-檢查子程序。程序通過比較所有象素記錄對的pt字段檢查是否有比整個輪廓更小的輪廓。因此,它具有外部循環(huán)(由初始化步驟802、增加步驟812和退出測試步驟813控制),i從1到size(ctr)-1,以及內(nèi)部循環(huán)(由初始化步驟803、增加步驟810和退出測試步驟811控制),內(nèi)部循環(huán)j從0到i-1。程序從布爾變量loopfound為假(801)開始運行。如果發(fā)現(xiàn)循環(huán),即,對于某些i和j滿足ctr[i].pt=ctr[j].pt(804),則將表示索引號從j到i-1的輪廓的循環(huán)部分的象素記錄復(fù)制到新的輪廓記錄newcontour(805),并從ctr中去除(806)。然后將newcontour加到Contours中(807),并且將變量loopfound設(shè)置為真(808)。隨著ctr的縮短而修改索引號i(809)并退出內(nèi)部循環(huán)。子程序返回loopfound,表示是否發(fā)現(xiàn)循環(huán)。該子程序具有保持輪廓為簡單輪廓的作用,簡單輪廓即沒有自交叉的輪廓。
不正確的-輪廓圖9示出了不正確的-輪廓子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用不正確的-輪廓子程序,但不修改ctr。首先檢查ctr是否具有由全局變量MinSize給定的最少點數(shù)(91)。MinSize的最佳值依賴于多個參數(shù),包括輸入圖像的分辨率。因為幾乎沒有小于幾英寸的紙樣,DPI(每英寸的點數(shù))值的幾倍已經(jīng)足夠小了。如果ctr比MinSize的點數(shù)少,則子程序返回值為真。如果輪廓至少有MinSize個點,則計算由輪廓圍繞的區(qū)域的符號面積。符號面積根據(jù)方向(順時針或逆時針)改變正負號,如果輪廓與在初始化-輪廓子程序中定義的初始輪廓具有相同的方向則其面積為正;如果方向相反則面積為負。符號面積的計算如下。首先,累加器變量volume初始化為零(92)。然后,通過簡單循環(huán)(由初始化步驟92、增加步驟94和退出測試步驟95控制),對于從0到size(ctr)-1的每一個i,ctr[i].pt.y×ctr[i-1].pt.x-ctr[i].pt.x×ctr[i-1].pt.y的值加到累加器變量volume中(93)。退出循環(huán),檢查累加器變量的符號(96),如果為負則子程序返回值為真,否則返回值為假。為真的返回值表示輪廓是不正確的,也就是說,或者輪廓太小,或者輪廓的方向與所希望的方向相反。
計算-曲率圖11示出了計算-曲率子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用計算-曲率子程序。子程序計算在輪廓中的每個象素鄰近區(qū)域的平均曲率,并在象素記錄的curv字段中存儲該值。全局整數(shù)變量NN確定鄰近區(qū)域的半徑。在此,給定NN=Int(DPI/18)(如果DPI=150,則為8),其中DPI是以每英寸的點數(shù)表示的圖像分辨率。使用索引號i對在輪廓中的每個象素記錄執(zhí)行外部循環(huán)(由初始化步驟1101、增加步驟1113和退出測試步驟1114控制)。實數(shù)變量theta和len初始化為0(1102)。使用在象素記錄鄰近區(qū)域執(zhí)行的索引號j,即,從i-NN到i+NN,執(zhí)行內(nèi)部循環(huán)(由初始化步驟1103、增加步驟1110和退出測試步驟1111控制);對于每個象素記錄,計算從(v1)之前的點到當(dāng)前點的矢量和從當(dāng)前點到(v2)之后的點的矢量(1104)。如果兩個矢量都不是零矢量(1105),則使用內(nèi)積v1·v2(由v1.x×v2.x+v1.y×v2.y定義)除以兩個矢量長度的乘積的反余弦計算兩個矢量之間的角度。在此,acos(x)對于在-1≤x≤1之間的x返回0和π之間的角度θ,從而cos(θ)=x。角度需要確定符號,并且根據(jù)判斷是否滿足v1.x×v2.y<v1.y×v2.x(1106),以兩種方式計算角度(1107、1108)。角度加到theta。矢量v2的長度|v2|加到len(1109)。在退出內(nèi)部循環(huán)之后,通過用len除angle計算曲率,并存儲在ctr[i].curv中(1112)。注意,在本子程序中,因為角度是有符號的,所以小的彎曲被平滑,并且計算鄰近區(qū)域的平均曲率。
平滑-曲率圖10示出了平滑-曲率子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用平滑-曲率子程序。該子程序通過高斯卷積(convoluting with theGaussian)來平滑曲率值。假設(shè)曲率值存儲在每個象素記錄的curv字段中。因為要修改在ctr中的值,所以首先復(fù)制曲率值到具有相同尺寸的實數(shù)的循環(huán)容器c中,即,size(c)=size(ctr)(1001)。使用兩個循環(huán);從0到size(ctr)-1的索引號i的外部循環(huán)(由初始化步驟1002、增加步驟1009和退出測試步驟1010控制)和從i-NN到i+NN的索引號j的內(nèi)部循環(huán)(由初始化步驟1004、增加步驟1006和退出測試步驟1007控制),其中NN是在計算曲率中所用的同一個全局變量,為鄰近區(qū)域的半徑。在內(nèi)部循環(huán)的開始,實數(shù)變量sum初始化為零(1003)。數(shù)c[j]被exp(-(j-i)2/(NN2×R))乘,并被加到sum中(1005),其中R是控制平滑度的參數(shù),且exp(x)返回x的指數(shù)。在此采用的值為R=2。在退出內(nèi)部循環(huán)之后,sum的值存儲在ctr[i].curv中(1008)。
發(fā)現(xiàn)-拐角圖12示出了發(fā)現(xiàn)-拐角子程序的流程圖。對輪廓記錄帶入口參數(shù)ctr調(diào)用發(fā)現(xiàn)-拐角子程序。該子程序?qū)ふ以谄涓髯缘泥徑鼌^(qū)域內(nèi)具有最大絕對曲率并且至少具有預(yù)先確定的最小絕對曲率的點。索引號i的外部循環(huán)(由初始化步驟1201、增加步驟1211和退出測試步驟1212控制)從0到size(ctr)-1執(zhí)行。對于在輪廓中的每個象素記錄,首先corner字段設(shè)置為假(1202)。然后,檢查在該點的絕對曲率(曲率的絕對值)(1203),并且如果不大于存儲在全局變量MinC中的拐角的最小曲率,則循環(huán)繼續(xù)。在此MinC的值為π/8或0.3927。如果確實有大于MinC的絕對曲率,則使用內(nèi)循環(huán)(由初始化步驟1205、增加步驟1207和退出測試步驟1208控制)檢查在記錄的鄰近區(qū)域的最大絕對曲率。實數(shù)變量M初始化為0(1204),并且對于在鄰近區(qū)域的每一個記錄更新(1206)。如果發(fā)現(xiàn)在鄰近區(qū)域中初始點具有最大絕對曲率(1209),則字段corner的值設(shè)為真(1210)。
工業(yè)適用性雖然在這里只說明和介紹了本發(fā)明的某些優(yōu)選特性,但是對于本領(lǐng)域的技術(shù)人員可以做出許多修改和變化。
例如,以基本相同的方式可以找出紙樣上的孔。僅僅是從不是黑色的對象中找出黑色對象的問題,而無需采用其它方法。可以采用與輪廓識別相同的方法識別在孔的周圍的拐角。
而且,在曲線被識別出之后,可以對其進行平滑。例如,可以擬合諸如樣條或貝塞爾曲線之類的參數(shù)曲線,以數(shù)字化曲線。在此,知道拐角的位置是重要的,正如在本發(fā)明中所能實現(xiàn)的,因為在這些參數(shù)曲線中,在切向量不連續(xù)變化之處,拐角被當(dāng)作以不同的方式來處理的點。在數(shù)字紙樣中的輪廓線的明確描述可以是參數(shù)曲線的參數(shù)。
此外,公開的方法可以用來數(shù)字化任何形狀,而不一定是服裝紙樣。用來生產(chǎn)鞋、包以及其它縫制商品的紙樣僅僅是本發(fā)明可以應(yīng)用的更明顯的例子。
因此,應(yīng)當(dāng)理解,附帶的權(quán)利要求書涵蓋落入本發(fā)明的真正精神中的所有這些修改和變化。
權(quán)利要求
1.一種數(shù)字化形狀的方法,所述方法包括以下步驟接收代表至少一個形狀的至少一個數(shù)據(jù),識別在至少一個數(shù)據(jù)中的至少一個形狀的至少一個輪廓,和識別在至少一個輪廓上的至少一個拐角。
2.一種用于數(shù)字化形狀的系統(tǒng),所述系統(tǒng)包括其中包括有計算機程序的存儲裝置;以及處理裝置,當(dāng)執(zhí)行計算機程序時,構(gòu)成接收代表至少一個形狀的至少一個數(shù)據(jù),識別在至少一個數(shù)據(jù)中的至少一個形狀的至少一個輪廓,和識別在至少一個輪廓上的至少一個拐角。
3.一種軟件存儲介質(zhì),當(dāng)由處理裝置執(zhí)行時,構(gòu)成數(shù)字化形狀,所述軟件存儲介質(zhì)包括軟件程序,包括第一模塊,當(dāng)執(zhí)行時,接收代表至少一個形狀的至少一個數(shù)據(jù),第二模塊,當(dāng)執(zhí)行時,識別在至少一個數(shù)據(jù)中至少一個形狀的至少一個輪廓,和第三模塊,當(dāng)執(zhí)行時,識別在至少一個輪廓上的至少一個拐角。
全文摘要
本發(fā)明公開了一種數(shù)字化服裝紙樣(114)的方法。首先,將實物紙樣掃描成光柵圖像。識別光柵圖像(102)的特征,例如亮度邊緣,并且產(chǎn)生數(shù)字紙樣(106)或一組實物紙樣的相關(guān)信息,包括實物紙樣的形狀和尺寸、輪廓線的拐角以及在實物紙樣上畫出的直線和曲線。數(shù)字紙樣包括輪廓線的明確表示,例如一系列點的坐標,或者某些曲線的描述,例如曲線參數(shù)。
文檔編號G06K9/48GK1575477SQ02820554
公開日2005年2月2日 申請日期2002年9月30日 優(yōu)先權(quán)日2001年10月17日
發(fā)明者石川博 申請人:恩尼格公司