国产AV无码专区亚洲AV高潮|日本道免费在线观看|人人干人人草在线免费|日韩有码一区二区三区|毛片大全网站亚洲人人澡|在线免费观看小视频huang|av不卡黄色电影免费|乱伦无码视频成人一区免费|av在线三级久久草在线|中文字幕视频区久久草日韩

線切割實現(xiàn)自動編程切割漢字的技術(shù)

       線切割實現(xiàn)自動編程切割漢字的技術(shù)
因為我們只需標(biāo)識字形的邊界輪廓,因此將其轉(zhuǎn)化為二值圖象即可。將字形輪廓轉(zhuǎn)化為二值圖象,也就是將其轉(zhuǎn)化為一個用矩陣表示的象素點圖象,矩陣中的每一位都是二進制數(shù),當(dāng)該位為1時表示字符的筆劃經(jīng)過此位,該位為0時表示字符的筆劃不經(jīng)過此位。因為只要分辨出某點為0還是1,因此每個點只要用一位二進制數(shù)表示即可,這樣1個字節(jié)就可以表示8個象素點,但為方便敘述本文采用以1個字節(jié)表示1個點來進行說明。

要將字形輪廓轉(zhuǎn)化為二值圖象,首先根據(jù)需要(如字體、尺寸大小、縱橫比、是否旋轉(zhuǎn)、變形等)在屏幕上繪制出所要切割字符的字形輪廓;然后對圖形進行掃描,將有筆劃通過的點(對應(yīng)于與字符顏色相同象素的位)的值置為1,而其它的點則置為0,掃描完畢后便將字形輪廓轉(zhuǎn)化為二值圖象了。

生成二值圖象后還需對圖象進行適當(dāng)?shù)男薷?,以滿足線切割加工的需要。對圖象進行編輯處理,可用一個小方塊代替一個放大了的象素,通過建立網(wǎng)格編輯區(qū),每一網(wǎng)格小方塊都是一個放大了的象素,這樣可對每個象素進行編輯處理,控制鼠標(biāo)在相應(yīng)的網(wǎng)格眼內(nèi)填入字符或背景顏色,同時填入字符顏色所對應(yīng)的位置為1,填入背景顏色所對應(yīng)的位置為0。

4 切割指令的生成

將漢字的字形輪廓轉(zhuǎn)化為二值圖象且編輯處理后,為生成切割指令須用直線或圓弧對其進行描述,由于漢字字形較適合用直線來對其進行描述,因此采用直線段來實現(xiàn)對漢字字形的描述。

由于線切割機所能切割的圖形具有一定的特殊性(即需能以一筆畫完),因此只需采用某種算法對圖進行一次遍歷便可得到加工軌跡。

要對圖象進行遍歷,首先需確定搜索策略。由于能被切割的圖形具有特殊性,采用改進了的深度優(yōu)先搜索方法來對圖象進行遍歷。主要思想為:先確定圖象的起始點,然后沿逆時針方向在該點周圍尋找下一點,找到后沿著這兩點確定的方向繼續(xù)搜索,直至將該方向上的點搜索完畢,然后回溯,以回溯得到的點為基礎(chǔ)重復(fù)以上搜索,直至所有點都被搜索過,在搜索過程中將經(jīng)過的點的值從1置為0,同時記錄所經(jīng)過的直線。

下面介紹一下所要用到的主要數(shù)據(jù)結(jié)構(gòu)。

記錄直線所用結(jié)構(gòu)為TLineRecord,它用來記錄每段直線的起點和終點坐標(biāo),其定義如下:

TLineRecord=record
StartPoint, EndPoint: TPoint; //直線起始點,終止點
end;
PLineRecord=^TLineRecord;

其中StartPoint, EndPoint分別為直線的起點和終點。

圖象采用二維數(shù)組進行表示,首先按照行、列從小到大的順序找到圖象的起始點,然后再采用逆時針方向來搜索下一點。搜索方向的定義為:

SearchDirection:array[0..7,0..1] ofinterger=((1,0),(1,-1),(0,-1),(-1,-1),(-1,0),(-1,1),(0,1),(1,1));

遍歷算法如下:

(1)掃描圖象尋找起始點,將其坐標(biāo)記為(k,1);用FirstPointX、FirstPointY記錄**點橫、縱坐標(biāo)的值;
(2)初始化記錄直線的指針,建立記錄直線的鏈表;將起始點的k,1值作為直線起點和終點的橫、縱坐標(biāo),將該直線加入到直線紀(jì)錄的鏈表中去;
(3)以**點為基準(zhǔn)點沿逆時針方向?qū)ふ蚁乱稽c,如果搜索到值為1的點則記搜索方向為i,該點的橫、縱坐標(biāo)記為(k,1),將記錄直線的終點橫、縱坐標(biāo)設(shè)置為k,1;
(4)置是否搜索完畢標(biāo)志SearchCompleted為False;
(5)如果SearchCompleted不為True則重復(fù)作6-13步;
(6)置SearchCompleted為True;
(7)置是否同一條線標(biāo)志SameLine為True;
(8)如果SameLine為True則重復(fù)作9-12步;
(9)置SameLine為False;
(10)沿i方向進行搜索,即k:=k+SearchDirection [i][0];1:=1+SearchDirection[i][1];
(11)如果點(k,1)為1,則置SameLine為True;將直線的終點坐標(biāo)設(shè)置為(k,1);將點(k,1)的值設(shè)置為0;
(12)如果點(k,1)為0,則置SameLine為False;
(13)以點(k,1)為基準(zhǔn)點沿逆時針方向?qū)ふ蚁乱稽c,如果搜索到值為1的點,則記搜索方向為i;在直線記錄列表中增加一條新的直線,k,1值作為直線起點的橫、縱坐標(biāo);將搜索到的點的橫、縱坐標(biāo)記為(k,1),將直線終點的橫、縱坐標(biāo)設(shè)置為(k,1);置Searhcompleted為False,置SameLine為True;將點(k,1)的值設(shè)置為0;
(14)進行圖形封閉化處理,在直線記錄列表中增加一條直線,將k,1值作為直線起點的橫、縱坐標(biāo),F(xiàn)irstPointX、FirstPointY作為直線終點的橫、縱坐標(biāo)值。

這樣當(dāng)遍歷完成后,遍歷的軌跡就保存在直線記錄列表中了,也就是說已實現(xiàn)將漢字的字形輪廓用直線段進行描述了。需指出的是,由于漢字字形本身或者編輯處理的原因,在進行圖象遍歷的過程中,可能存在一些不和諧的點,使遍歷不能完成(如存在斷點、尖點及多余點的情況),需在遍歷之前運用圖象處理的技術(shù)將這些點補足或者剔除掉,以使遍歷能順利完成,有關(guān)這方面的算法不再贅述。

至此要實現(xiàn)切割漢字就只剩下如何生成切割指令的問題了。由于已將漢字的字形輪廓用直線進行描述,且這些直線還首尾相接組成一個封閉輪廓,要生成線切割機的切割指令,只需按切割指令的要求將這些直線進行轉(zhuǎn)換即可。
產(chǎn)品搜索
聯(lián)系方式
產(chǎn)品目錄
Copyright@ 2003-2026  蘇州中航長風(fēng)數(shù)控科技有限公司版權(quán)所有