邢銀龍
摘? ?要:針對3D打印過程中對于懸臂結(jié)構(gòu)需要手動設計支撐結(jié)構(gòu)問題,提出了一種基于數(shù)字圖像處理技術(shù)自動識別需要支撐的區(qū)域并生成支撐的方法。首先給出了支撐區(qū)域識別算法,介紹了算法流程及算法的實現(xiàn)過程;其次在獲得支撐區(qū)域的基礎上,給出了支撐自動生成算法,介紹了算法的流程及算法實現(xiàn)過程;最后給出了算法的結(jié)論。
關(guān)鍵詞:數(shù)字圖像? 圖像形態(tài)學? 支撐區(qū)域? 3D打印
中圖分類號:TP391? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2019)10(c)-0064-02
3D打印是20世紀80年代開始興起的技術(shù),歷經(jīng)幾十年的發(fā)展已經(jīng)取得了很大的進展,尤其是最近10年,隨著材料技術(shù)、控制技術(shù)及計算機技術(shù)的發(fā)展取得了飛躍式的發(fā)展,3D打印已經(jīng)在眾多領域得到了廣泛應用。3D打印技術(shù)是采用分層制造技術(shù)[1-3],從底部向上生長,每當遇到懸臂結(jié)構(gòu)時,需要在懸臂下方設計支撐結(jié)構(gòu),以保證在打印懸臂時不會出現(xiàn)塌陷現(xiàn)象,當遇到腔體內(nèi)部需要支撐時,人為手動設計支撐就變得十分復雜,甚至無法實現(xiàn)支撐。因此根據(jù)模型的結(jié)構(gòu)特點自動生成支撐就變得十分有意義。生成支撐的首要任務是識別支撐區(qū)域,是支撐設計的核心。本文采用數(shù)字圖像處理技術(shù)[4]中的圖像形態(tài)學處理以及圖像布爾運算等技術(shù)自動識別需要支撐的區(qū)域,并對需要生成支撐的區(qū)域進行支撐路徑規(guī)劃[5],實現(xiàn)自動生成支撐。
1? 支撐區(qū)域識別
支撐區(qū)是模型處于懸空部分在其正下方的投影區(qū),當上層結(jié)構(gòu)在下層結(jié)構(gòu)投影時,若兩層的投影差集不為空集時,說明至少存在一個支撐區(qū)。若為空集,說明此層沒有支撐區(qū)。
1.1 支撐區(qū)識別算法流程
假設模型共有N+1層,第一層有N1個支撐區(qū),A11,A12,…A1n第N層有Nn個支撐區(qū)An1,An2,…Ann。其中N1…Nn可能為零,由于支撐區(qū)域識別算法在不同層之間的計算方式相同,因此本文以第N層計算為例,說明計算過程。假設第N層有m個支撐區(qū),m>0。算法具體流程如下:
步驟1:讀取第N層與第N+1層的模型輪廓數(shù)據(jù)分別存入ListNCount與ListN1Count表。
步驟2:將ListNCount與ListN1Count二值化成二值圖像ImageListN與ImageListN1。
步驟3:對圖像ImageListN與ImageListN1進行圖像布爾運算得到m個二值圖像ImageList1、ImageList2、ImageList3……ImageListm。
步驟4:對m個二值圖像分別進行膨脹運算得到m個膨脹后的圖像(ImageIn1為其中一個,后面說明以此圖像為例,其余圖像操作相同)。
步驟5:對m個膨脹后的二值圖像分別進行腐蝕運算得到m個腐蝕后的圖像(ImageCo1為其中一個,后面說明以此圖像為例,其余圖像操作相同)。
步驟6:用圖像ImageIn1與圖像ImageCo1進行邊緣提取算法得到邊緣圖像ImageEdge1。對m組膨脹和腐蝕后的圖像進行運算得到m個邊緣圖像ImageEdge1、ImageEdge2、ImageEdge3…… ImageEdgem。
步驟7:對邊緣圖像進行鏈碼與譯碼操作得到m組輪廓坐標Coordinate1、Coordinate2、Coordinate3……Coordinatem。
以上m組輪廓坐標就是所計算的m個支撐區(qū)域,每個區(qū)域都是一個閉合的輪廓。
1.2 支撐區(qū)識別算法實現(xiàn)
針對上節(jié)所述的支撐區(qū)域識別算法流程,本節(jié)詳細介紹支撐區(qū)域識別算法的實現(xiàn)過程。
(1)獲取第N層與第N+1層的輪廓坐標ListNCount與ListN1Count。
(2) 計算ListNCount與ListN1Count Y向最大值與最小值YMax_N,YMin_N,YMax_N1,YMin_N1。
(3)用掃描線y以一個像素遞增的方式從開始到Y(jié)Max_N進行線束掃描,計算掃描線與輪廓的交點坐標,每條掃描線存在偶數(shù)個交點坐標,將第2n個坐標與第2n+1個坐標之間的線段以一個像素單位分割,于是得到以像素為單位的坐標,將掃描線上的坐標值賦值為1,掃描線外的坐標值賦值為0,因此得到一幅二值圖像。同理可得到另一幅二值圖像。
(4)計算圖像ImageListN與圖像ImageListN1的并集。
(5)計算差集。
(6)對圖像進行膨脹運算。B為結(jié)構(gòu)元素。
(7)對圖像進行腐蝕運算。C為結(jié)構(gòu)元素。
(8)提取單像素邊緣。
(9)對單邊像素圖像進行鏈碼運算,將單邊像素圖像轉(zhuǎn)換成輪廓坐標。鏈碼采用8方向鏈碼,8方向鏈碼可以使邊界更精確。鏈碼方向選取為逆時針方向:0-1-2-3-4-5-6-7-0。遍歷單邊像素圖像,得到第一個值為1的像素坐標點,以此點為邊界的起點,標記此點已被搜尋完畢。根據(jù)鏈碼方向遍歷下一點,直到找到下一個值為1的像素點,記為第二個邊界點,標記此點已被搜尋完畢。直到8方向像素值全為0,此條邊界搜尋完畢。同理,尋找下一條邊界的起點,直到此圖像中所有為1的點全部被標記過,此圖像搜尋完畢,所得幾組邊界,此圖像就有幾個需要支撐的區(qū)域。
(10)針對每層數(shù)據(jù)均采用(1)到(9)的操作過程,得到每一層的支撐區(qū)域。存入每層的輪廓坐標數(shù)組Coordinate1、Coordinate2、Coordinate3……Coordinatem。
2? 支撐自動生成算法
自動生成支撐結(jié)構(gòu)是根據(jù)支撐區(qū)域在其內(nèi)部生成一定形式的填充路徑,層層堆疊,直到與懸臂接觸,以達到支撐懸臂結(jié)構(gòu)的效果,保證懸臂結(jié)構(gòu)不會因為懸空而出現(xiàn)塌陷。
2.1 支撐生成算法流程
支撐區(qū)路徑采用連續(xù)蛇形填充算法,最大限度減小激光器的開關(guān)。
步驟1:獲取一層的支撐區(qū)的輪廓坐標。
步驟2:計算相鄰路徑的填充間距,保證不塌陷的同時減少路徑長度,以便后期容易去除支撐。
步驟3:根據(jù)支撐區(qū)輪廓坐標及工藝參數(shù)信息規(guī)劃掃描線策略。
步驟4:分別計算掃描線束與輪廓交點,得到掃描線與所有輪廓的交點信息。
步驟5:對交點信息進行分類重組,形成一條或多條分段連續(xù)的蛇形路徑。
步驟6:將路徑信息轉(zhuǎn)換成控制變量以備后續(xù)使用。
步驟7:重復步驟1到步驟6計算過程,計算所有層的路徑信息,直到最后一層計算完畢。
2.2 支撐生成算法實現(xiàn)
(1)計算一層的輪廓坐標值Coordinate1、Coordinate2、Coordinate3……Coordinatem。
(2)設兩條掃描線的填充間距為。
(3)計算本層所有輪廓的Y向最大值與最小值FY_Max\FY_Min。
(4)計算掃描線:yScan=FY_Min+Fd*i,i=0,1,2…,n滿足。
(5)計算交點坐標:設掃描線方程:y=yScan。C1(x1,y1),C2(x2,y2)是輪廓上相鄰兩點的坐標。過此兩點的直線直線方程L為:y=kx+b。根據(jù)C1、C2可求出此方程。由掃描線方程與方程L聯(lián)立方程組可計算出交點坐標(x1',y1')。當滿足(x1'-x1)*(x1'-x2)≤0且(y1'-y1)*(y1'-y2)≤0時,此點滿足條件,是所求的一個交點坐標。
(6)計算此掃描線與所有輪廓的交點,將滿足條件的交點按x值從小到大排列,存儲在掃描線列表中。
(7)在(4)中隨著i值的遞增變化,重復(5)到(6)過程得到當前層的掃描線列表序列。
(8)從第一條掃描線列表開始成對提取相鄰兩個坐標值,提取過的坐標值被標記已處理,從第二條掃描線提取坐標對時,判斷是否與第一對坐標有垂直方向的投影,若有投影,將此對坐標與第一對坐標存儲到同一個區(qū)域數(shù)組中,若沒有投影,依次比較此條掃描線后面的坐標對,直到找到有投影的坐標對或者全部遍歷完成,若沒有合適的投影坐標,則此區(qū)域結(jié)束。按此規(guī)律遍歷所有掃描線列表,直到所有坐標都被標記過。生成的區(qū)域數(shù)組的數(shù)量就是支撐區(qū)域數(shù)量,區(qū)域數(shù)組的坐標值即為此支撐區(qū)域的填充路徑。
(9)重復(1)到(8)過程,直到所有層處理完成,即生成全部支撐。
(10)根據(jù)通信協(xié)議,將全部支撐路徑點轉(zhuǎn)換成控制變量,發(fā)送給控制器。
3? 結(jié)語
支撐自動生成算法省去了人為設計支撐的過程。只需給定一個預進行3D打印的模型,就可以自動生成所有層所必須的支撐結(jié)構(gòu)。本文給出了一種基于圖像技術(shù)的支撐區(qū)域識別算法,能夠有效的識別出需要支撐的區(qū)域,同時給出了一種支撐路徑規(guī)劃方式,滿足支撐設計工藝。針對支撐區(qū)域識別與支撐路徑自動生成給出了詳細的求解過程。
參考文獻
[1] 孫大涌.先進制造技術(shù)[M].北京:機械工業(yè)出版社,2000.
[2] 劉光富.快速成型與快速制模技術(shù)[M].上海:同濟大學出版社,2004.
[3] 劉偉軍.快速成型技術(shù)及應用[M].北京:機械工業(yè)出版社,2005.
[4] 岡薩雷斯.數(shù)字圖像處理[M].阮秋琦,等,譯.北京:電子工業(yè)出版社,2005.
[5] 王欽釗,程金勇,李小龍.復雜環(huán)境下機器人路徑規(guī)劃方法研究[J].計算機仿真,2017,34(10):296-300.