專利名稱:工業(yè)ct斷層序列圖像直接生成數(shù)控加工代碼的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及屬于圖像處理和計算機(jī)輔助制造領(lǐng)域,特別涉及一種工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法。
背景技術(shù):
隨著工業(yè)CT系統(tǒng)檢測精度的提高,工業(yè)CT在逆向工程中的研究和應(yīng)用得到了越來越廣泛的關(guān)注與重視。將工件的工業(yè)CT斷層序列圖像轉(zhuǎn)換為數(shù)控代碼,通常的方法是先建立該工件的三維模型,然后導(dǎo)入CAM軟件自動生成數(shù)控代碼,三維模型的品質(zhì)直接關(guān)系到數(shù)控加工的效果。目前,基于工業(yè)CT斷層序列圖像的三維建模主要集中在三維表面建模和三維實體模型重構(gòu)這兩個方面。三維表面模型一般以STL格式保存,可以直接用來快速原型,也可以用來數(shù)控加工,但是STL模型常會有些缺陷,例如,表面存在孔洞、頂點未相連、法向向量反向、面重疊等,這些缺陷會使自動數(shù)控編程系統(tǒng)產(chǎn)生錯誤的刀路規(guī)劃路徑, 從而影響加工效果。三維實體模型重構(gòu)可以通過專業(yè)的逆向軟件進(jìn)行重構(gòu)或者是針對工業(yè) CT斷層序列圖像自主開發(fā)的實體建模軟件進(jìn)行重構(gòu),但是模型重構(gòu)方法現(xiàn)在還存在很多問題,例如,曲面構(gòu)建過程中,對曲線和曲面的擬合誤差的分配問題,多曲面連接問題,邊緣提取精度問題等。雖然可以通過修復(fù)解決STL的缺陷問題,通過大量人機(jī)交互操作解決實體重構(gòu)問題,但是這些修復(fù)操作帶來了誤差累積、模型變形等諸多新的問題。要完全解決上述這些問題將花費大量時間和精力,嚴(yán)重影響了后續(xù)的數(shù)控加工進(jìn)度。因此如何將工業(yè)CT斷層序列圖像快速有效的轉(zhuǎn)換為數(shù)控加工代碼,是當(dāng)前急需解決的問題。
發(fā)明內(nèi)容
有鑒于此,為了解決上述問題,本發(fā)明提出一種不需要進(jìn)行三維建模,由工件的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法。本發(fā)明的目的是這樣實現(xiàn)的本發(fā)明提供的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,包括以下步驟Sl 提取工業(yè)CT斷層序列圖像的輪廓點數(shù)據(jù);S2 針對工業(yè)CT斷層圖像特征,在閾值分割圖中根據(jù)輪廓點所圍部分的灰度值設(shè)置標(biāo)識位,并依據(jù)一個輪廓點的標(biāo)識位進(jìn)行判定,確定內(nèi)外輪廓;S3 將單層圖像的各個輪廓向內(nèi)或向外偏移進(jìn)行刀具半徑補(bǔ)償和加工余量預(yù)留;S4 劃分加工區(qū)域,生成各斷層的刀具路徑;S5 連接各層的刀具路徑并生成整個工件的數(shù)控加工代碼。進(jìn)一步,所述步驟Si,具體步驟如下Sll 對工業(yè)CT斷層序列圖像進(jìn)行圖像處理得到二值化的閾值分割圖像,設(shè)黑點代表的是工件實體部分,白點代表的是加工區(qū)域;S12 提取輪廓邊緣,所述輪廓邊緣用黑點表示;
S13 對輪廓邊緣進(jìn)行去噪、細(xì)化、連接,輪廓跟蹤;S14 得到工業(yè)CT斷層序列圖像的輪廓點數(shù)據(jù);進(jìn)一步,所述步驟S2,具體步驟如下S21 設(shè)置斷層圖像各輪廓點的標(biāo)識位flagl,并初始化所有輪廓點的標(biāo)識位 flagl ;取標(biāo)識位flagl為0 ;S22 將輪廓點數(shù)據(jù)按xy坐標(biāo)系劃分,χ坐標(biāo)相同的輪廓點劃分到一列,按照y坐標(biāo)從小到大的順序排序,并存入以向量形式建立的某一層圖像的列數(shù)據(jù)結(jié)構(gòu)Ri,其中i表示第i列;將每列第一個和最后一個點存入列數(shù)據(jù)結(jié)構(gòu)Ri中;S23 將列數(shù)據(jù)結(jié)構(gòu)Ri的起始位置和結(jié)束位置作為輪廓點數(shù)據(jù)的標(biāo)識位flagl并保存在列數(shù)據(jù)結(jié)構(gòu)Ri中;S24 若同一列數(shù)據(jù)結(jié)構(gòu)Ri中有3個以上連續(xù)輪廓點數(shù)據(jù),則只保留連續(xù)輪廓點數(shù)據(jù)的兩端的輪廓點,刪除連續(xù)輪廓點數(shù)據(jù)中位于中間部分的輪廓點數(shù)據(jù);S25 對每列數(shù)據(jù)結(jié)構(gòu)Ri自下往上逐對判斷,若兩相鄰輪廓點之間,白點數(shù)多于黑點數(shù),則兩點之間為加工區(qū)域段,將第一個點的標(biāo)識位flagl設(shè)置為1 ;反之,將第一個點的標(biāo)識位flagl設(shè)置為0 ;每列數(shù)據(jù)結(jié)構(gòu)Ri的最后一個輪廓點的標(biāo)識位flagl為0 ;其中,標(biāo)識位flagl = 1表示該輪廓點是其所在列的一段加工區(qū)域的起始點,標(biāo)識位flagl = 0表示該輪廓點是其所在列的一段加工區(qū)域的終點;S26:將當(dāng)前的輪廓點數(shù)據(jù)對應(yīng)到二值化圖像中,在二值化圖像中判斷對應(yīng)列數(shù)據(jù)結(jié)構(gòu)Ri的逐對輪廓點之間是否為加工區(qū)域段,并設(shè)置輪廓點的標(biāo)識位flagl ;若輪廓點對應(yīng)到二值化圖像中的部分對應(yīng)為加工區(qū)域,則將該段區(qū)域的起始點的標(biāo)識位flagl設(shè)為1 ; 同理,若輪廓點對應(yīng)到二值化圖像中的部分對應(yīng)為為非加工區(qū)域,則將該段區(qū)域的起始點的標(biāo)識位flagl設(shè)置為0 ;S27 修正輪廓點數(shù)據(jù)的標(biāo)識位flagl S28 根據(jù)修正后的輪廓點數(shù)據(jù)標(biāo)識位flagl來判斷內(nèi)外輪廓,將經(jīng)輪廓點標(biāo)識位 flagl設(shè)置后的列數(shù)據(jù)結(jié)構(gòu)Ri按照y值從小到大順序進(jìn)行查找,直到找到第一個屬于該輪廓的輪廓點,即尋找該輪廓在本列數(shù)據(jù)結(jié)構(gòu)Ri的下輪廓點;若此點的標(biāo)識位flagl為1,則該點為本列的一段加工區(qū)域的起始點,可認(rèn)定此輪廓為內(nèi)輪廓,所圍的為加工區(qū)域;反之若此點的標(biāo)識位flagl為0,則此輪廓為外輪廓;進(jìn)一步,所述步驟S27中修正輪廓點數(shù)據(jù)的標(biāo)識位flagl,具體步驟如下S271 若標(biāo)識位flagl出現(xiàn)“11”時,將第2個輪廓點作為白點加工區(qū)域,將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri ;S272 若標(biāo)識位flagl出現(xiàn)“00”時,將第3個輪廓點作為白點加工區(qū)域,將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri ;S273 若標(biāo)識位flagl出現(xiàn)“000”時,將第3和第4個輪廓點作為白點加工區(qū)域, 將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri ;進(jìn)一步,所述步驟S3,具體步驟如下對各個輪廓進(jìn)行偏移,偏移量是刀具半徑與加工余量之和,偏移量反映在斷層圖像上是所對應(yīng)的像素數(shù)量;進(jìn)一步,所述步驟S4,具體步驟如下
S41 對各輪廓點數(shù)據(jù)設(shè)置用以標(biāo)識輪廓點是否已被劃分到加工區(qū)域的標(biāo)識位 flag2,并將其初始化為0 ;S42 逐列查找相鄰輪廓點的標(biāo)識位f Iagl是否為加工區(qū)域,且標(biāo)識位f lag2是否為未劃分的加工區(qū)域,如果否,則該層的所有輪廓點都已經(jīng)被劃分到各個加工區(qū)域,將所有輪廓點的標(biāo)識位flag2設(shè)置為1 ;S43:如果是,判斷兩相鄰列的點PQ和P' Q'是否屬于同一加工區(qū)域的點,同時, 將標(biāo)識位f lag2設(shè)置為1 ;S44 如果是,則進(jìn)入步驟S46 ;S45 如果否,返回步驟S42繼續(xù)尋找新的加工區(qū)域;直到所有加工區(qū)域判定結(jié)束;S46 將加工區(qū)域的點按照雙向銑削的走刀方式存儲在刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai 中,其中,i表示該斷層圖像的第i個加工區(qū)域;進(jìn)一步,所述步驟S43判斷兩相鄰列的點是否屬于同一加工區(qū)域的點,具體包括以下步驟S431 若兩相鄰列的點PQ和P‘ Q'滿足Py < Q/且P/ < Qy,則PQ和P‘ Q' 四點屬于同一加工區(qū)域,將P' Q'的標(biāo)識位flag2置1 ;其中,Py、Qy、Py'和Qy'分別表示兩相鄰列的點PQ和P' Q'的y坐標(biāo);S432 若兩相鄰列的點PQ和P' Q'滿足Py > Q/或Qy < P/,則PQ和P' Q' 不屬于同一加工區(qū)域;進(jìn)一步,所述步驟S5,具體步驟如下S51 將單層的各個加工區(qū)域連接起來可以生成單層圖像的刀具路徑數(shù)據(jù)結(jié)構(gòu) Areai ;S52 將各層的刀具路徑連接起來生成整個工件的整體刀具路徑數(shù)據(jù)結(jié)構(gòu);S53 采用直線插補(bǔ)的方式將整體刀具路徑數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)控加工代碼;進(jìn)一步,所述S53中將刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai轉(zhuǎn)換為數(shù)控加工代碼,具體步驟如下
S531 輸入工藝參數(shù),包括切削參數(shù)、機(jī)床類型、刀具參數(shù)的設(shè)置;S532 依次讀取各個加工區(qū)域Areai中點的信息,將刀具退到安全高度,然后在安全高度將其平移到Areaw的第一個點上方,接下來垂直向下進(jìn)刀,走到Areaw的第一個點的位置,將同一層的各個加工區(qū)域連接起來生成單層的刀具路徑,得到Areaw的數(shù)控加工代碼;S533:當(dāng)本層圖像所有加工區(qū)域的數(shù)控加工代碼都已生成以后,將刀具退到安全高度,并將其在安全高度平移到下一層圖像的起始位置上方,為下一層圖像的數(shù)控加工代碼生成做好準(zhǔn)備;S534 將各層的刀具路徑連接起來生成整個工件的走刀路徑,并將其轉(zhuǎn)換成數(shù)控加工代碼的形式輸出;進(jìn)一步,所述加工區(qū)域的點存儲在刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中,具體步驟如下檢查加工區(qū)域?qū)?yīng)的刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中最后的標(biāo)識位flagl是否為1,如果是,則先存儲標(biāo)識位flagl為1的點,后存儲標(biāo)識位flagl為0的點;如果否,則先存儲標(biāo)識位flagl為0的點,后存儲標(biāo)識位flagl為1的點。本發(fā)明的優(yōu)點在于本發(fā)明提出的由工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,避開了繁瑣的三維表面建?;蛉S實體建模,縮短了數(shù)控加工代碼生成的時間, 而且避免了誤差的積累。只需要輸入工件的工業(yè)CT斷層序列圖像,經(jīng)過簡單設(shè)置就可以直接輸出該工件的數(shù)控加工代碼。本發(fā)明具有操作方便、處理效率高等優(yōu)點。本發(fā)明的其它優(yōu)點、目標(biāo)和特征在某種程度上將在隨后的說明書中進(jìn)行闡述,并且在某種程度上,基于對下文的考察研究對本領(lǐng)域技術(shù)人員而言將是顯而易見的,或者可以從本發(fā)明的實踐中得到教導(dǎo)。本發(fā)明的目標(biāo)和其它優(yōu)點可以通過下面的說明書,權(quán)利要求書,以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步的詳細(xì)描述,其中圖1是工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法流程圖;圖2是單層圖像輪廓點的標(biāo)識位flagl設(shè)置的流程圖;圖3是單層圖像的二值化圖以及邊緣輪廓示意圖;圖4是第i列輪廓點的標(biāo)識位flagl設(shè)置示意圖;圖5是修正第i列輪廓點的標(biāo)識位flagl示意圖;圖6是內(nèi)外輪廓判定示意圖;圖7是加工區(qū)域劃分;其中7a是設(shè)置標(biāo)識位flagl示意圖,7b是劃分加工區(qū)域示意圖,7c是完成的加工區(qū)域示意圖;圖8是兩相鄰列的點是否屬于同一加工區(qū)域的判定原則示意圖;圖9是單層圖像的刀具路徑示意圖;圖10是茶壺的工業(yè)CT斷層序列圖像;圖11是數(shù)控加工茶壺的仿真圖;圖12是數(shù)控加工茶壺效果圖。
具體實施例方式以下將結(jié)合附圖,對本發(fā)明的優(yōu)選實施例進(jìn)行詳細(xì)的描述;應(yīng)當(dāng)理解,優(yōu)選實施例僅為了說明本發(fā)明,而不是為了限制本發(fā)明的保護(hù)范圍。圖1是工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法流程圖,如圖所示本發(fā)明提供的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,包括如下步驟Sl 對工業(yè)CT斷層序列圖像進(jìn)行圖像處理得到二值化的閾值分割圖像,然后提取輪廓邊緣,并且對邊緣進(jìn)行去噪、細(xì)化、連接,得到無噪聲、單像素邊緣、封閉的輪廓,最后通過輪廓跟蹤得到所有工業(yè)CT斷層序列圖像的輪廓點數(shù)據(jù)。S2 針對工業(yè)CT斷層圖像特征,在閾值分割圖中根據(jù)輪廓點所圍部分的灰度值設(shè)置標(biāo)識位,并依據(jù)一個輪廓點的標(biāo)識位進(jìn)行判定,確定了內(nèi)外輪廓。為單層圖像的各個輪廓點設(shè)置一個標(biāo)識位flagl,其中標(biāo)識位“flagl = 1”表示該輪廓點是其所在列的一段加工區(qū)域的起始點,標(biāo)識位“flagl = 0”表示該輪廓點是其所在列的一段加工區(qū)域的終點;然后通過輪廓的一個下輪廓點來判斷該輪廓是內(nèi)輪廓還是外輪廓。從列的角度來處理一層的所有輪廓點,在各列中來判斷加工區(qū)域段,所有輪廓點的標(biāo)識位flagl都初始化為0。單層圖像輪廓點的標(biāo)識位flagl設(shè)置的流程,如圖2所示。圖3為單層工業(yè)CT圖像的二值化圖以及邊緣輪廓。結(jié)合圖2和圖3說明具體步驟如下假設(shè)某工件的某一層圖像的二值化結(jié)果如圖3a所示,且其邊緣圖如圖3b所示,并以此工件的第i列為例逐步進(jìn)行處理。1)輪廓點的按列劃分對于每層圖像,采用的是逐列的雙向銑削的加工方式,所以要從列的角度來處理本層圖像的所有輪廓點。將χ坐標(biāo)相同的輪廓點劃分為一列,按照y坐標(biāo)值從小到大排序, 并存入以向量形式建立的本層圖像列的數(shù)據(jù)結(jié)構(gòu)Ri,其中i表示第i列。由于CT掃描視場大于工件尺寸,那么所有斷層序列圖像最上面一行和最下面一行的點必定為加工區(qū)域段的邊界點,將其作為輪廓點分別添加到各列Ri的起始和結(jié)束位置,此時每一列的輪廓點數(shù)都大于等于2,即每列至少包含一段加工區(qū)域。圖4為第i列輪廓點的標(biāo)識位flagl設(shè)置示意圖,圖4a為圖3a 二值圖中的第i 列;圖4b為圖3b輪廓圖中的第i列,Pi0 Pi5為本列的輪廓點,將其存儲在本列的列結(jié)構(gòu) Ri中;圖4c中,添加了本列最上面和最下面的點,更新了氏。2)同一列中3個以上連續(xù)輪廓點的處理對于一列中有3個以上連續(xù)輪廓點的情況,只保留連續(xù)輪廓點的兩端點,即可確定加工區(qū)域段的位置。在圖4c中,PilPi2Pi3與Pi4Pi5Pi6分別是連續(xù)的輪廓點,刪除Pi2、Pi5,只保留連續(xù)輪廓的端點,最后的處理結(jié)果,如圖4d所示。3)各輪廓點的標(biāo)識位flagl的設(shè)置二值化圖像中,本方法假設(shè)黑點代表的是工件實體部分,而白點代表的是加工區(qū)域,由于圖像上噪聲等影響,在加工區(qū)域段中可能存在少數(shù)黑點,也有可能在非加工區(qū)域中存在少數(shù)白點。對于上述情形,根據(jù)占多數(shù)的點的類型,每列自下往上逐對判斷。若兩相鄰輪廓點之間,白點數(shù)多于黑點數(shù),則認(rèn)為兩點之間為加工區(qū)域段,將第一個點的標(biāo)識位 flagl設(shè)置為1。反之,將第一個點的標(biāo)識位flagl設(shè)置為0。每列的最后一個輪廓點必定為本列最后一個加工區(qū)域段的終點,所以其標(biāo)識位flagl必為0,無需再進(jìn)行設(shè)置。將當(dāng)前的輪廓點對應(yīng)到二值化圖像中,在二值化圖像中判斷對應(yīng)列的逐對輪廓點之間是否為加工區(qū)域段,以此來設(shè)置輪廓點的標(biāo)識位flagl。將圖4d中的輪廓點對應(yīng)到圖4a中,Pi0到Pil 之間、Pi4到Pi5之間的部分對應(yīng)在圖4a中為白點,即加工區(qū)域,則將兩段區(qū)域的起始點Pitl 和Pi4的flafl設(shè)為1 ;同理,在圖4a中,Pil到Pi2之間、Pi2到Pi3之間、Pi3到Pi4之間為黑點,即非加工區(qū)域,則將這三段區(qū)域的起始點PilPi2Pw的flagl設(shè)置為0。設(shè)置完畢,本列Ri 的各輪廓點的標(biāo)識位flagl分別為100010,如圖4d所示。這里出現(xiàn)了連續(xù)三個點的標(biāo)識位flagl都為0的情況,并不像預(yù)期的那樣,各點的標(biāo)識位flagl呈現(xiàn)“ 1010…”交替的變化規(guī)律。4)輪廓點標(biāo)識位flagl的修正按照產(chǎn)生原因來劃分,可歸納為以下三種情況,按照將連續(xù)邊界認(rèn)定為非加工區(qū)域的原則,分別對這三種情況進(jìn)行修正。
修正第i列輪廓點的標(biāo)識位flagl,如圖5所示,每幅圖中包含三列,左列所示的為二值化圖像中對應(yīng)的列,中列所示的為輪廓圖的一列;右列所示的為經(jīng)過修正后所剩的輪廓點。①出現(xiàn)“11”情況此時,本列三個輪廓點的標(biāo)識位flagl分別為1、1、0,出現(xiàn)了 “11”的情況,此時可以不考慮第2個輪廓點,即把兩個連續(xù)的加工區(qū)域段連成一個,修正以后的輪廓點如圖5a 右列所示,用處理后的結(jié)果更新本列的氏。②出現(xiàn)“00”情況當(dāng)一個非加工區(qū)域段的上輪廓或下輪廓為連續(xù)輪廓點時,5個輪廓點的標(biāo)識位 flagl分別為1、0、0、1、0,出現(xiàn)了“00”的情況。此時可以不考慮第3個輪廓點,即把連續(xù)的邊界與非加工區(qū)域段連在一起,修正后的結(jié)果如圖5b、5c中的右列所示,用處理后的結(jié)果更新本列的Ri。③出現(xiàn)“000”情況當(dāng)兩個非加工區(qū)域段之間為一段連續(xù)輪廓點時,6個輪廓點的標(biāo)識位flagl分別為1、0、0、0、1、0,出現(xiàn)了“000”的情況,此時可以不考慮第3和第4個輪廓點,即把連續(xù)的邊界與非加工區(qū)域段連在一起,修正后的結(jié)果如圖5d右列或圖4e所示,用處理后的結(jié)果更新本列的Ri。通過以上設(shè)置,每列輪廓點的標(biāo)識位flagl均呈“1010…”交替變化,每一對“10” 間的點則是本列的一段加工區(qū)域。5)內(nèi)外輪廓判斷針對各個輪廓contour (i),在其橫坐標(biāo)范圍(Xmin,Xmax)內(nèi)取一列,將經(jīng)輪廓點標(biāo)識位設(shè)置后的列數(shù)據(jù)按照y值從小到大進(jìn)行查找,直到找到第一個屬于該輪廓的輪廓點,即尋找該輪廓在本列的下輪廓點。若此點的標(biāo)識位flagl為1,則該點為本列的一段加工區(qū)域的起始點,可認(rèn)定此輪廓為內(nèi)輪廓,所圍的為加工區(qū)域;反之若此點的標(biāo)識位flagl為0,則此輪廓為外輪廓。如圖6所示,第i列經(jīng)輪廓點標(biāo)識位設(shè)置后,本列Ri中的各輪廓點按照 y坐標(biāo)從小到大的順序排列分別為Pn、Pi2> Pi3、Pi4、Pi5、Pi6、Pi7、Pi8、Pi9,其flagl分別為0、 1、0、1、0、1、0、1、0。以contour 1為例,按照y坐標(biāo)值從小到大的順序?qū)ふ遥玖械谝粋€屬于 contour 1的點為Pi2,這是contour 1在本列的下輪廓點,而Pi2點的flagl為1,標(biāo)志著Pi2點是本列的一段加工區(qū)域的起始點,即contourl所包圍的是一片加工區(qū)域,所以將contourl 判定為內(nèi)輪廓。同理對其他三條輪廓線contour2、contour3、contour4進(jìn)行判斷,其對應(yīng)的下輪廓點分別為Pi4、Pi5、Pi8,此四點的flagl分別為1、0、1,則contourf、Contour4為內(nèi)輪廓,contourf為夕卜輪廓。S3:將單層圖像的各個輪廓向內(nèi)或向外偏移進(jìn)行刀具半徑補(bǔ)償和加工余量預(yù)留, 偏移量反映在斷層圖像上是所對應(yīng)的像素數(shù)量。S4:劃分加工區(qū)域,生成各斷層的刀具路徑,采用的是雙向銑削的方式規(guī)劃刀具路徑,首先生成每一層的刀具路徑,然后將其有序連接起來。單層圖像刀具路徑的生成步驟為首先對偏移后的圖像輪廓點重新設(shè)置標(biāo)識位,如圖7a所示,其中要考慮到偏移量影響,然后根據(jù)標(biāo)識位劃分加工區(qū)域,并把屬于同一加工區(qū)域的點按照雙向銑削的順序存儲, 生成如圖7b所示的刀具路徑;最后把各個加工區(qū)域有序連接起來,即可得到本層的刀具路徑。加工區(qū)域示意圖,如圖7c所示。單張圖像加工區(qū)域劃分的方法第一步,通過逐列查找是否還有尚未劃分加工區(qū)域的輪廓點,來尋找新的加工區(qū)域。為各個輪廓點設(shè)置標(biāo)識位flag2,并將其初始化為0,用以標(biāo)志輪廓點是否已被劃分到某個加工區(qū)域。當(dāng)某點被劃分到一個加工區(qū)域時,將其標(biāo)識位flag2改為1。因此可以通過查找是否有標(biāo)識位“flag2 = 0”的輪廓點,來查找新的加工區(qū)域。從第一列開始查找,若存在兩相鄰點P、Q,其中P的標(biāo)識位flagl為1,Q的flagl 為0,也就是說PQ為這一列的一段加工區(qū)域,且P、Q的標(biāo)識位f lag2均為0,也就是說PQ這段加工區(qū)域還未劃分到任何一片加工區(qū)域中,那么就設(shè)置一個新的向量Areai用來存儲這個新加工區(qū)域的輪廓點,其中i表示這是這層圖像的第i個加工區(qū)域。同時,將P、Q的標(biāo)識位flag2置1,并將其存入Areai中。若本層的所有輪廓點都已經(jīng)被劃分到各個加工區(qū)域, 那么所有輪廓點的標(biāo)識位flag2皆為1,則找不到滿足上述條件的點,本層劃分加工區(qū)域的工作結(jié)束。第二步,通過查找下一列是否存在屬于同一加工區(qū)域的點,來判定此加工區(qū)域是否結(jié)束。查找P、Q的下一列,是否存在兩相鄰點P'、Q',其中它們的標(biāo)識位flagl分別為 1和0,且他們的標(biāo)識位flag2皆為0,那么按照圖8所示的兩相鄰列的點是否屬于同一加工區(qū)域的判定原則來判定PQ、P' Q'是否屬于同一加工區(qū)域。如圖8所示的3組點,對于 y坐標(biāo)來講,若兩相鄰列的點PQ和P' Q'滿足Py<Q/且P/ <Qy,則PQ和P' Q'四點屬于同一加工區(qū)域,將P' Q'的標(biāo)識位flag2置1;其中,Py、Qy、Py'和Qy'分別表示兩相鄰列的點PQ和P' Q'的y坐標(biāo);即如下所述=P1SQ1'且P1' < Q1那么認(rèn)為P1Q1P1' Q1' 四點屬于同一加工區(qū)域;而若兩相鄰列的點PQ和P' Q'滿足Py > Qy'或Qy<Py',則PQ 和P' Q'不屬于同一加工區(qū)域,即如下所述認(rèn)為P2 > Q2'的P2Q2P2‘ Q2'和Q3 < P3'的 P3Q3P3' Q3'不屬于同一加工區(qū)域。因此若在P、Q的下一列,若存在兩相鄰點P'、Q',除了標(biāo)識位flagl和flag2滿足上述要求外,其y坐標(biāo)滿SP < Q'和P' <Q,那么認(rèn)為PQP' Q'四點屬于同一加工區(qū)域,將P'、Q'的標(biāo)識位flag2置1,并進(jìn)行存儲。若找不到滿足條件的P'、Q',則表示此加工區(qū)域已經(jīng)結(jié)束,轉(zhuǎn)向第一步,繼續(xù)尋找新的加工區(qū)域。第三步,將第二步找到的點按照雙向銑削的走刀順序進(jìn)行存儲,重復(fù)第二步,直到此加工區(qū)域結(jié)束。檢查本加工區(qū)域?qū)?yīng)的刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai當(dāng)前所存儲的最后一點的標(biāo)識位 flagl,若此點的標(biāo)識位flagl為1,則先存儲標(biāo)識位flagl同樣為1的P',后存儲Q';反之則先存儲Q',后存儲P'。形成如圖7b所示的雙向銑削走刀路徑。S5 連接各層的刀具路徑并生成整個工件的數(shù)控加工代碼。具體步驟如下1)輸入工藝參數(shù),包括切削參數(shù)、機(jī)床類型、刀具參數(shù)等參數(shù)的設(shè)置;2)生成單層圖像的數(shù)控加工代碼。按照直線插補(bǔ)的方式,依次讀取各個加工區(qū)域 Areai中點的信息,即可得到此加工區(qū)域的數(shù)控加工代碼。一個Areai中的點讀取完畢之后,將刀具退到安全高度,然后在安全高度將其平移到Areaw的第一個點上方,接下來垂直向下進(jìn)刀,走到Areaw的第一個點的位置,接下來用同樣的方法得到Areaw的數(shù)控加工代碼;3)所述加工區(qū)域的點存儲在刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中,具體步驟如下檢查加工區(qū)域?qū)?yīng)的刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中最后的標(biāo)識位flagl是否為1,如果是,則先存儲標(biāo)識位flagl為1的點,后存儲標(biāo)識位flagl為0的點;如果否,則先存儲標(biāo)識位flagl為0的點,后存儲標(biāo)識位flagl為1的點。4)生成所有層的數(shù)控加工代碼。當(dāng)本層所有加工區(qū)域的數(shù)控加工代碼都已生成以后,將刀具退到安全高度,并將其在安全高度平移到下一層圖像的起始位置上方,為下一層圖像的數(shù)控加工代碼生成做好準(zhǔn)備。將一層的各個加工區(qū)域連接起來可以生成一層圖像的刀具路徑,將各層的刀具路徑連接起來可以生成整個工件的刀具路徑,采用直線插補(bǔ)的方式可以將其轉(zhuǎn)換為數(shù)控加工代碼。單層圖像的走刀路徑如圖9所示,其中箭頭表示進(jìn)刀和退刀的方向,多層圖像走刀路徑與此類似。經(jīng)過這樣逐層銑削,得到帶有余量的粗加工結(jié)果。最后將同一層的各個加工區(qū)域連接起來生成單層的刀具路徑,將各層的刀具路徑連接起來生成整個工件的走刀路徑,并將其轉(zhuǎn)換成數(shù)控加工代碼的形式輸出。本發(fā)明提出的方法,可以將工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼,避開了繁瑣的三維表面建?;蛉S實體建模,明顯縮短了數(shù)控加工代碼生成的時間,而且避免了誤差的積累。圖10是茶壺的工業(yè)CT斷層序列圖像,圖11是數(shù)控加工茶壺的仿真圖,圖12 是數(shù)控加工茶壺效果圖,茶壺斷層序列圖像直接生成的數(shù)控加工代碼,經(jīng)過簡單設(shè)置就可以直接輸出該工件的數(shù)控加工代碼,通過了仿真軟件的驗證,加工后的效果,如圖12所示。 避開了繁瑣的三維表面建?;蛉S實體建模,縮短了數(shù)控加工代碼生成的時間。以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于包括以下步驟51提取工業(yè)CT斷層序列圖像的輪廓點數(shù)據(jù);52針對工業(yè)CT斷層圖像特征,在閾值分割圖中根據(jù)輪廓點所圍部分的灰度值設(shè)置標(biāo)識位,并依據(jù)一個輪廓點的標(biāo)識位進(jìn)行判定,確定內(nèi)外輪廓;53將單層圖像的各個輪廓向內(nèi)或向外偏移進(jìn)行刀具半徑補(bǔ)償和加工余量預(yù)留;54劃分加工區(qū)域,生成各斷層的刀具路徑;55連接各層的刀具路徑并生成整個工件的數(shù)控加工代碼。
2.根據(jù)權(quán)利要求1所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟Si,具體步驟如下511對工業(yè)CT斷層序列圖像進(jìn)行圖像處理得到二值化的閾值分割圖像,區(qū)分圖像中的工件實體部分和加工區(qū)域;512提取輪廓邊緣;513對輪廓邊緣進(jìn)行去噪、細(xì)化、連接,輪廓跟蹤;514得到工業(yè)CT斷層序列圖像的輪廓點數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S2,具體步驟如下521設(shè)置斷層圖像各輪廓點的標(biāo)識位flagl,并初始化所有輪廓點的標(biāo)識位flagl ;取標(biāo)識位flagl為0 ;522將輪廓點數(shù)據(jù)按xy坐標(biāo)系劃分,χ坐標(biāo)相同的輪廓點劃分到一列,按照y坐標(biāo)從小到大的順序排序,并存入以向量形式建立的某一層圖像的列數(shù)據(jù)結(jié)構(gòu)Ri,其中i表示第i 列;將每列第一個和最后一個點存入列數(shù)據(jù)結(jié)構(gòu)Ri中;523將列數(shù)據(jù)結(jié)構(gòu)Ri的起始位置和結(jié)束位置作為輪廓點數(shù)據(jù)的標(biāo)識位flagl并保存在列數(shù)據(jù)結(jié)構(gòu)Ri中;524若同一列數(shù)據(jù)結(jié)構(gòu)Ri中有3個以上連續(xù)輪廓點數(shù)據(jù),則只保留連續(xù)輪廓點數(shù)據(jù)的兩端的輪廓點,刪除連續(xù)輪廓點數(shù)據(jù)中位于中間部分的輪廓點數(shù)據(jù);525對每列數(shù)據(jù)結(jié)構(gòu)Ri自下往上逐對判斷,若兩相鄰輪廓點之間,白點數(shù)多于黑點數(shù), 則兩點之間為加工區(qū)域段,將第一個點的標(biāo)識位flagl設(shè)置為1 ;反之,將第一個點的標(biāo)識位flagl設(shè)置為0 ;每列數(shù)據(jù)結(jié)構(gòu)Ri的最后一個輪廓點的標(biāo)識位flagl為0 ;其中,標(biāo)識位flagl = 1表示該輪廓點是其所在列的一段加工區(qū)域的起始點,標(biāo)識位 flagl = 0表示該輪廓點是其所在列的一段加工區(qū)域的終點;S26:將當(dāng)前的輪廓點數(shù)據(jù)對應(yīng)到二值化圖像中,在二值化圖像中判斷對應(yīng)列數(shù)據(jù)結(jié)構(gòu) Ri的逐對輪廓點之間是否為加工區(qū)域段,并設(shè)置輪廓點的標(biāo)識位flagl ;若輪廓點對應(yīng)到二值化圖像中的部分對應(yīng)為加工區(qū)域,則將該段區(qū)域的起始點的標(biāo)識位flagl設(shè)為1 ;同理, 若輪廓點對應(yīng)到二值化圖像中的部分對應(yīng)為為非加工區(qū)域,則將該段區(qū)域的起始點的標(biāo)識位flagl設(shè)置為0 ;.527修正輪廓點數(shù)據(jù)的標(biāo)識位flagl .528根據(jù)修正后的輪廓點數(shù)據(jù)標(biāo)識位flagl來判斷內(nèi)外輪廓,將經(jīng)輪廓點標(biāo)識位 flagl設(shè)置后的列數(shù)據(jù)結(jié)構(gòu)Ri按照y值從小到大順序進(jìn)行查找,直到找到第一個屬于該輪廓的輪廓點,即尋找該輪廓在本列數(shù)據(jù)結(jié)構(gòu)Ri的下輪廓點;若此點的標(biāo)識位flagl為1,則該點為本列的一段加工區(qū)域的起始點,此輪廓為內(nèi)輪廓,所包圍的區(qū)域為加工區(qū)域;反之若此點的標(biāo)識位flagl為0,則此輪廓為外輪廓。
4.根據(jù)權(quán)利要求3所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S27中修正輪廓點數(shù)據(jù)的標(biāo)識位flagl,具體步驟如下5271若標(biāo)識位flagl出現(xiàn)“11”時,將第2個輪廓點作為加工區(qū)域,將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri ;5272若標(biāo)識位flagl出現(xiàn)“00”時,將第3個輪廓點作為加工區(qū)域,將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri ;5273若標(biāo)識位flagl出現(xiàn)“000”時,將第3和第4個輪廓點作為加工區(qū)域,將處理后的數(shù)據(jù)保存在列數(shù)據(jù)結(jié)構(gòu)Ri。
5.根據(jù)權(quán)利要求1所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S3,具體步驟如下對各個輪廓進(jìn)行偏移,偏移量是刀具半徑與加工余量之和,偏移量反映在斷層圖像上是所對應(yīng)的像素數(shù)量。
6.根據(jù)權(quán)利要求1所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S4,具體步驟如下541對各輪廓點數(shù)據(jù)設(shè)置用以標(biāo)識輪廓點是否已被劃分到加工區(qū)域的標(biāo)識位flag2, 并將其初始化為0 ;542逐列查找相鄰輪廓點的標(biāo)識位flagl是否為加工區(qū)域,且標(biāo)識位flag2是否為未劃分的加工區(qū)域,如果否,則該層的所有輪廓點都已經(jīng)被劃分到各個加工區(qū)域,將所有輪廓點的標(biāo)識位flag2設(shè)置為1 ;543如果是,判斷兩相鄰列的點PQ和P' Q'是否屬于同一加工區(qū)域的點,同時,將標(biāo)識位f lag2設(shè)置為1 ;544如果是,則進(jìn)入步驟S46 ;545如果否,返回步驟S42繼續(xù)尋找新的加工區(qū)域;直到所有加工區(qū)域判定結(jié)束;546將加工區(qū)域的點按照雙向銑削的走刀方式存儲在刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中,其中,i表示該斷層圖像的第i個加工區(qū)域。
7.根據(jù)權(quán)利要求6所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S43判斷兩相鄰列的點是否屬于同一加工區(qū)域的點,具體包括以下步驟5431若兩相鄰列的點PQ和P' Q'滿足Py<Qy'且P/ <Qy,則PQ和P' Q'四點屬于同一加工區(qū)域,將P' Q'的標(biāo)識位flag2置1 ;其中,Py、Qy、Py'和Qy'分別表示兩相鄰列的點PQ和P' Q'的y坐標(biāo);5432若兩相鄰列的點PQ和P' Q'滿足Py > Q/或Qy < P/,則PQ和P' Q'不屬于同一加工區(qū)域。
8.根據(jù)權(quán)利要求1所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述步驟S5,具體步驟如下551將單層的各個加工區(qū)域連接起來可以生成單層圖像的刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai ;552將各層的刀具路徑連接起來生成整個工件的整體刀具路徑數(shù)據(jù)結(jié)構(gòu);553采用直線插補(bǔ)的方式將整體刀具路徑數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)控加工代碼。
9.根據(jù)權(quán)利要求8所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述S53中將刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai轉(zhuǎn)換為數(shù)控加工代碼,具體步驟如下5531輸入工藝參數(shù),包括切削參數(shù)、機(jī)床類型、刀具參數(shù)的設(shè)置;5532依次讀取各個加工區(qū)域Areai中點的信息,將刀具退到安全高度,然后在安全高度將其平移到Areaw的第一個點上方,接下來垂直向下進(jìn)刀,走到Areaw的第一個點的位置,將同一層的各個加工區(qū)域連接起來生成單層的刀具路徑,得到Areaw的數(shù)控加工代碼;5533當(dāng)本層圖像所有加工區(qū)域的數(shù)控加工代碼都已生成以后,將刀具退到安全高度, 并將其在安全高度平移到下一層圖像的起始位置上方,為下一層圖像的數(shù)控加工代碼生成做好準(zhǔn)備;5534將各層的刀具路徑連接起來生成整個工件的走刀路徑,并將其轉(zhuǎn)換成數(shù)控加工代碼的形式輸出。
10.根據(jù)權(quán)利要求9所述的工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,其特征在于所述加工區(qū)域的點存儲在刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中,具體步驟如下檢查加工區(qū)域?qū)?yīng)的刀具路徑數(shù)據(jù)結(jié)構(gòu)Areai中最后的標(biāo)識位flagl是否為1,如果是,則先存儲標(biāo)識位flagl為1的點,后存儲標(biāo)識位flagl為0的點;如果否,則先存儲標(biāo)識位flagl為0的點,后存儲標(biāo)識位flagl為1的點。
全文摘要
本發(fā)明公開了一種由工業(yè)CT斷層序列圖像直接生成數(shù)控加工代碼的方法,對工業(yè)CT斷層序列圖像進(jìn)行圖像處理得到輪廓點數(shù)據(jù),針對工業(yè)CT斷層圖像特征,在閾值分割圖中根據(jù)輪廓點所圍部分的灰度值設(shè)置標(biāo)識位,并依據(jù)一個輪廓點的標(biāo)識位進(jìn)行判定,確定了內(nèi)外輪廓;將單層圖像的各個輪廓向內(nèi)或向外偏移進(jìn)行刀具半徑補(bǔ)償和加工余量預(yù)留;劃分加工區(qū)域,生成各斷層的刀具路徑;連接各層的刀具路徑并生成整個工件的數(shù)控加工代碼。本發(fā)明只需要輸入工件的工業(yè)CT斷層序列圖像,經(jīng)過簡單設(shè)置就可以直接輸出該工件的數(shù)控加工代碼,具有操作方便、處理效率高等優(yōu)點。
文檔編號G05B19/19GK102495584SQ20111037881
公開日2012年6月13日 申請日期2011年11月24日 優(yōu)先權(quán)日2011年11月24日
發(fā)明者段黎明, 郭琰, 陳中 申請人:重慶大學(xué)