專利名稱:一種墻體平面輪廓的識別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及模式識別和CAD技術(shù)領(lǐng)域,尤其涉及一種墻體平面輪廓的識別方法。
背景技術(shù):
國內(nèi)外科研機(jī)構(gòu)對于建筑圖理解與重建的研究是從90年代初期開始的,它屬于技術(shù)文檔分析領(lǐng)域的一個子課題。同類子課題還包括機(jī)械圖識別與三視圖重建,電路圖識別等。相比之下,針對建筑圖的研究起步較晚,尚存在不少亟待解決的問題。UC Berkeley的WALKTHRU項(xiàng)目是引入矢量建筑平面圖內(nèi)容理解和三維重建的首個大型項(xiàng)目。為了解決由CAD建筑平面圖重建三維模型耗時太長的問題,Lewis等人[Lewis1998]開發(fā)出一個原型系統(tǒng) BMG (Building Model Generator)。該系統(tǒng)以 AutoCAD DXF 格式的建筑平面圖為輸入,根據(jù)用戶設(shè)定自動輸出圖紙內(nèi)容中的門、窗、墻體、房間和走廊信息,并能自動生成建筑物的三維場景模型。BMG以房間編號為切入點(diǎn),將包圍每個房間號的 閉合多邊形識別為這個房間的地板輪廓,然后通過地板輪廓之間的開口(Porter)進(jìn)行房間的連接,相連兩個房間輪廓的平行相對的部分就是這個包圍這個房間的墻體輪廓。Lewis等人使用該系統(tǒng)成功重建了 UC Berkeley的Soda禮堂三維模型并應(yīng)用于火災(zāi)預(yù)演模擬系統(tǒng)CFAST中。然而,BMG的不足也是顯而易見的,主要體現(xiàn)在輸入平面圖中的墻體、門、門側(cè)柱、窗、窗側(cè)柱以及房間編號都必須存儲在不同的圖層中,且每個圖層的名稱都是預(yù)先定義好的。如果給定平面圖不滿足這些要求,則需要人工修改滿足約束后才能使用BMG。Park等人[Park 2004]提出一種基于尺寸標(biāo)注延長線的主墻體平面輪廓識別方法。該方法首先識別給定平面圖中的尺寸標(biāo)注線,然后根據(jù)尺寸標(biāo)注線或其延長線必然經(jīng)過墻體輪廓的假設(shè),計算出在一定距離范圍內(nèi)與尺寸標(biāo)注線垂直的線段作為墻體輪廓線,最后根據(jù)墻體輪廓為閉合圖形的規(guī)則計算出所有與之前墻體輪廓線相連的所有線段,得到的閉合輪廓則為主墻體的平面輪廓。Park等人的方法簡單有效,不過文中提到僅能識別全局水平或垂直的墻體輪廓,而且這個方法要求組成墻體輪廓的線段彼此相連閉合。這些約束導(dǎo)致該方法的穩(wěn)定性較差,圖紙數(shù)據(jù)的常見噪聲即會影響方法的準(zhǔn)確性。路通等人[路通2005] [Lu 2005b]對矢量格式建筑圖紙的內(nèi)容理解問題進(jìn)行深入研究,提出基于軸網(wǎng)的層次式自生長識別模型(Self-Incremental Axis-Net-basedHierarchical Recognition),簡稱SINEHIR模型。該模型以軸線符為識別起點(diǎn),首先識別包圍軸線交點(diǎn)的閉合輪廓為柱平面輪廓,記為種子節(jié)點(diǎn)。然后列舉出種子節(jié)點(diǎn)與墻體輪廓相連的各種類型,計算滿足這些連接類型的平行線對,記為種子段。最后根據(jù)論文列舉的墻體輪廓彼此相連的類型,計算與種子段相連的平行線對,記為擴(kuò)展段。所有識別出的種子段和擴(kuò)展段輪廓即為墻體平面輪廓。這種方法是本文作者認(rèn)為目前已發(fā)表的最好的墻體平面輪廓識別方法,具有較高的準(zhǔn)確性。不過其穩(wěn)定性有待提高,例如圖紙缺少軸線信息或存在較多重疊線段時可能降低該方法的識別準(zhǔn)確率。這種方法具有較高的墻體輪廓識別準(zhǔn)確性,但仍然存在兩個缺點(diǎn)第一,當(dāng)處理的建筑平面圖中缺少軸線符信息時,該方法將無法識別種子節(jié)點(diǎn),從而無法完成墻體輪廓的識別。這樣就限制了它無法使用在實(shí)際應(yīng)用中常見的戶型圖,以及缺失了部分軸線信息的建筑平面圖,導(dǎo)致該方法的適用范圍縮小。第二,當(dāng)處理的建筑平面圖中墻體輪廓線段存在大量的重疊和部分重疊時,該方法的識別準(zhǔn)確率將明顯下降。這是由于該方法直接通過墻體輪廓線段的連接關(guān)系進(jìn)行識另IJ,而線段的重疊和部分重疊會影響這種連接關(guān)系。在實(shí)際應(yīng)用中,由于繪圖者的人為因素或者圖紙格式轉(zhuǎn)換等原因,圖紙中經(jīng)常會生成重疊和部分重疊的線段。對于這類圖紙,該方法的穩(wěn)定性可能會降低,識別準(zhǔn)確率可能顯著下降
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種墻體平面輪廓的識別方法,用以在缺少軸線信息、且允許存在大量線段重疊和部分重疊的情況下,準(zhǔn)確識別建筑平面圖中的墻體平面輪廓。為達(dá)此目的,本發(fā)明采用以下技術(shù)方案一種墻體平面輪廓的識別方法,該方法包括讀取給定建筑平面圖中的所有線段數(shù)據(jù)并將這些線段存儲在一個線段數(shù)組Vl中;遍歷Vl中的所有線段,將滿足備選輪廓邊條件的兩條不相同的線段標(biāo)記標(biāo)識,設(shè)置為備選輪廓邊,并將這兩條線段作為一個備選輪廓存儲在備選輪廓數(shù)組Vcc中;計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中;遍歷Vml,對其中任兩條不同中線mli和mlj (i古j)進(jìn)行優(yōu)化;根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓。所述Vl中的每條線段存儲兩個端點(diǎn)的坐標(biāo)和一個類型標(biāo)識,初始時所有線段的標(biāo)識均為“普通線段”;若圖紙中存儲了多線段類型的數(shù)據(jù),則根據(jù)每條多線段存儲的頂點(diǎn)將其分割為多條普通線段并存儲到Vl中;若圖紙中存儲了塊/插入類型的數(shù)據(jù),則將每個塊/插入中的線段和多線段數(shù)據(jù)按照前面的方法處理后存儲到Vi中。所述備選輪廓邊條件包括但不限于兩條線段中至少有一條線段的標(biāo)識為“普通線段”;兩條線段彼此平行;兩條線段之間的距離在給定范圍內(nèi);兩條線段滿足互投影比例要求;兩條線段中間沒有與其平行的其他的線段。所述兩條線段滿足互投影比例要求,根據(jù)如下步驟判斷Al,分別記線段11和線段12的起點(diǎn)和終點(diǎn)為Si、el、s2和e2 ;計算經(jīng)過si且與12垂直的直線與線段12的交點(diǎn),如果這個交點(diǎn)在線段12上,則記該交點(diǎn)為sl_12 ;并計算el_12,s2_ll 和 e2_12 ;A2,如果得到 sl_12 和 el_12,則令 prol = sl_12, pro2 = el_12,執(zhí)行步驟 A8 ;A3,如果得到 sl_12 和 s2_ll,則令 prol = sl_12, pro2 = s2_ll,執(zhí)行步驟 A8 ;A4,如果得到 sl_12 和 e2_ll,則令 prol = sl_12, pro2 = e2_ll,執(zhí)行步驟 A8 ;A5,如果得至Ij s2_ll 和 e2_ll,則令 prol = s2_ll,pro2 = e2_ll,執(zhí)行步驟 A8 ;A6,如果得至Ij s2_ll 和 el_12,則令 prol = s2_ll,pro2 = el_12,執(zhí)行步驟 A8 ;A7,如果得到 e2_ll 和 el_12,則令 prol = e2_ll, pro2 = el_12,執(zhí)行步驟 A8 ;A8,計算prol和pro2的距離d,如果d與11和12中較短的線段長度的比值大于1/3,則認(rèn)為11和12滿足互投影比例要求,返回成功;否則,返回失敗。
所述計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中,包括重新調(diào)整左右兩條平行輪廓邊線段的起點(diǎn)和終點(diǎn);如果終點(diǎn)的X坐標(biāo)值小于起點(diǎn)的X坐標(biāo)值,則交換起點(diǎn)和終點(diǎn);如果起點(diǎn)和終點(diǎn)的X坐標(biāo)值相等,判斷如果終點(diǎn)的y坐標(biāo)值小于起點(diǎn)的I坐標(biāo)值,則交換起點(diǎn)和終點(diǎn);計算左側(cè)輪廓邊起點(diǎn)和右側(cè)輪廓邊起點(diǎn)的中點(diǎn),記為ms ;同理,計算左右兩側(cè)終點(diǎn)的中線,記為me ;連接ms和me得到的線段即為輪廓對應(yīng)的中線ml,將這些中線存儲于數(shù)組Vml中。所述遍歷Vml,對其中任兩條不同中線mli和mlj (i幸j)進(jìn)行優(yōu)化,包括
如果mli和mlj完全重疊,則從Vcc中刪除對應(yīng)的輪廓,然后從Vml中刪除mlj ;如果mli和mlj部分重疊,則修改mlj在重合一端的頂點(diǎn)坐標(biāo)為mli在重合一端的頂點(diǎn)坐標(biāo);如果mli和mlj相交,且mli或mlj存在與交點(diǎn)距離小于閾值th的頂點(diǎn),則修改所述頂點(diǎn)的坐標(biāo)為交點(diǎn)的坐標(biāo);如果mli和mljj不相交,但mli和mlj分別存在一個頂點(diǎn)滿足這兩個頂點(diǎn)的距離小于閾值th,則修改mlj對應(yīng)的頂點(diǎn)坐標(biāo)為mli對應(yīng)頂點(diǎn)的坐標(biāo);如果mli和mlj不相交,但mli存在一個頂點(diǎn)到ml j的距離小于閾值th,則修改mli對應(yīng)的頂點(diǎn)坐標(biāo)為mli和mlj延長線交點(diǎn)的坐標(biāo);同理,對mlj的頂點(diǎn)做類似的計算。所述根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓,包括遍歷Vml,對每一條中線mli進(jìn)行如下計算BI,計算與mli相連的其他中線,將這些相連的中線存儲在Vcml中。如果Vcml為空,則執(zhí)行步驟B2,否則執(zhí)行步驟B3 ;B2,計算mli的起點(diǎn)si沿著與mli垂直的方向分別向兩側(cè)偏移wi/2后的頂點(diǎn),得到的這兩個頂點(diǎn)分別是Isi和rsi ;其中wi是mli對應(yīng)的兩條平行輪廓邊之間的距離;對mli的終點(diǎn)ei做類似的計算得到Iei和rei ;依次連接si、lsi、lei、ei、rei和rsi得到的矩形即為mli對應(yīng)的墻體平面輪廓ci,存儲ci到數(shù)組Vc中;B3,將mli添加到Vcml中后對Vcml重新排序,按照Vcml中每條中線與X軸正向的夾角從小到大排序;B4,遍歷Vcml,對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,還原墻體平面輪廓。所述對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,包括B41,如果i為數(shù)組最后一個元素的下標(biāo),則j = 0 ;否則j = i+1 ;如果cmli和cmlj平行,則執(zhí)行步驟B42,否則執(zhí)行步驟B43 ;B42,通過如步驟B2的計算得到矩形對應(yīng)的頂點(diǎn),然后用這些頂點(diǎn)更新表I中連接關(guān)系對應(yīng)的頂點(diǎn);B43,根據(jù)中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系找到連接關(guān)系對應(yīng)的兩條內(nèi)側(cè)邊,計算兩條內(nèi)側(cè)邊的交點(diǎn),再更新中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系中連接關(guān)系對應(yīng)的頂點(diǎn)。
所述中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系包括中線連接關(guān)系si連接sj, si連接ej, ei連接sj, ei連接ej ;輪廓更新頂點(diǎn)lsi和 rsj, Isi 和 lej, rei 和 rsj, rei 和 Iej ;輪廓內(nèi)側(cè)邊Iefti和 right j, Iefti 和 left j, right i 和 right j,right i 和 left j。
·
所述判斷兩條線段是否平行,包括判斷兩條線段之間的銳角夾角是否小于5度或預(yù)先設(shè)定的閾值。本發(fā)明的技術(shù)方案,通過輪廓中線的連接關(guān)系,而非直接使用輪廓邊緣線段的連接關(guān)系進(jìn)行墻體平面輪廓的識別,通過對輪廓中線的連接優(yōu)化去除圖紙中線段重合和部分重合帶來的干擾,通過優(yōu)化后的中線及距離恢復(fù)墻體的輪廓邊緣,而非直接使用圖紙中的輪廓邊緣線段。采用了本發(fā)明的技術(shù)方案,在缺少軸線信息、且允許存在大量線段重疊和部分重疊的情況下,可以準(zhǔn)確識別建筑平面圖中的墻體平面輪廓。
圖I是本發(fā)明具體實(shí)施方式
中墻體平面輪廓的識別方法原理流程圖。
具體實(shí)施例方式下面結(jié)合附圖并通過具體實(shí)施方式
來進(jìn)一步說明本發(fā)明的技術(shù)方案。本發(fā)明技術(shù)方案中,輸入數(shù)據(jù)是矢量格式的建筑平面圖,例如AutoCADDWG/DXF格式的圖紙文件;輸出是一組墻體平面輪廓,每個輪廓為閉合的一組線段。如圖I所示,為本發(fā)明實(shí)施例提供的墻體平面輪廓的識別方法原理流程圖,其中,步驟10,讀取給定建筑平面圖中的所有線段數(shù)據(jù)并將這些線段存儲在一個線段數(shù)組Vl中。Vl中的的每條線段存儲兩個端點(diǎn)的坐標(biāo)和一個類型標(biāo)識,初始時所有線段的標(biāo)識均為“普通線段”。如果圖紙中存儲了多線段類型(POLYLINE)的數(shù)據(jù),則根據(jù)每條多線段存儲的頂點(diǎn)將其分割為多條普通線段并存儲到Vl中。如果圖紙中存儲了塊/插入類型(BLOCK/INSERT)的數(shù)據(jù),則將每個塊/插入中的線段和多線段數(shù)據(jù)按照前面的方法處理后存儲到Vl中。步驟20,遍歷Vl中的所有線段,將滿足備選輪廓邊條件的兩條不相同的線段標(biāo)記標(biāo)識,設(shè)置為“備選輪廓邊”,并將這兩條線段作為一個備選輪廓存儲在備選輪廓數(shù)組Vcc中。備選輪廓邊條件包括但不限于兩條線段中至少有一條線段的標(biāo)識為“普通線段”;兩條線段彼此平行;兩條線段之間的距離在給定范圍內(nèi);兩條線段滿足互投影比例要求;兩條線段中間沒有與其平行的其他的線段。兩條線段滿足互投影比例要求,根據(jù)如下步驟判斷Al,分別記線段11和線段12的起點(diǎn)和終點(diǎn)為Si、el、s2和e2 ;計算經(jīng)過si且與12垂直的直線與線段12的交點(diǎn),如果這個交點(diǎn)在線段12上,則記該交點(diǎn)為sl_12 ;并計算el_12,s2_ll 和 e2_12 ;A2,如果得至Ij sl_12 和 el_12,則令 prol = sl_12, pro2 = el_12,執(zhí)行步驟 A8 ;A3,如果得至Ij sl_12 和 s2_ll,則令 prol = sl_12, pro2 = s2_ll,執(zhí)行步驟 A8 ;
A4,如果得到 sl_12 和 e2_ll,則令 prol = sl_12, pro2 = e2_ll,執(zhí)行步驟 A8 ;A5,如果得至Ij s2_ll 和 e2_ll,則令 prol = s2_ll,pro2 = e2_ll,執(zhí)行步驟 A8 ;A6,如果得至Ij s2_ll 和 el_12,則令 prol = s2_ll,pro2 = el_12,執(zhí)行步驟 A8 ;A7,如果得至Ij e2_ll 和 el_12,則令 prol = e2_ll,pro2 = el_12,執(zhí)行步驟 A8 ;A8,計算prol和pro2的距離d,如果d與11和12中較短的線段長度的比值大于1/3,則認(rèn)為11和12滿足互投影比例要求,返回成功;否則,返回失敗。步驟30,計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中。重新調(diào)整左右兩條平行輪廓邊線段的起點(diǎn)和終點(diǎn);如果終點(diǎn)的X坐標(biāo)值小于起點(diǎn)的X坐標(biāo)值,則交換起點(diǎn)和終點(diǎn);如果起點(diǎn)和終點(diǎn)的X坐標(biāo)值相等,判斷如果終點(diǎn)的y坐標(biāo) 值小于起點(diǎn)的I坐標(biāo)值,則交換起點(diǎn)和終點(diǎn);計算左側(cè)輪廓邊起點(diǎn)和右側(cè)輪廓邊起點(diǎn)的中點(diǎn),記為ms ;同理,計算左右兩側(cè)終點(diǎn)的中線,記為me ;連接ms和me得到的線段即為輪廓對應(yīng)的中線ml,將這些中線存儲于數(shù)組Vml中。步驟40,遍歷Vml,對其中任兩條不同中線mli和mlj (i幸j)進(jìn)行優(yōu)化。如果mli和mlj完全重疊,貝U從Vcc中刪除對應(yīng)的輪廓,然后從Vml中刪除ml j ;如果mli和mlj部分重疊,則修改mlj在重合一端的頂點(diǎn)坐標(biāo)為mli在重合一端的頂點(diǎn)坐標(biāo);如果mli和mlj相交,且mli或mlj存在與交點(diǎn)距離小于閾值th的頂點(diǎn),則修改所述頂點(diǎn)的坐標(biāo)為交點(diǎn)的坐標(biāo);如果mli和mlj不相交,但mli和mlj分別存在一個頂點(diǎn)滿足這兩個頂點(diǎn)的距離小于閾值th,則修改mlj對應(yīng)的頂點(diǎn)坐標(biāo)為mli對應(yīng)頂點(diǎn)的坐標(biāo);如果mli和mlj不相交,但mli存在一個頂點(diǎn)到ml j的距離小于閾值th,則修改mli對應(yīng)的頂點(diǎn)坐標(biāo)為mli和mlj延長線交點(diǎn)的坐標(biāo);同理,對mlj的頂點(diǎn)做類似的計算。步驟50,根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓。遍歷Vml,對每一條中線mli進(jìn)行如下計算BI,計算與mli相連的其他中線,將這些相連的中線存儲在Vcml中。如果Vcml為空,則執(zhí)行步驟B2,否則執(zhí)行步驟B3 ;B2,計算mli的起點(diǎn)si沿著與mli垂直的方向分別向兩側(cè)偏移wi/2后的頂點(diǎn),得到的這兩個頂點(diǎn)分別是Isi和rsi ;其中wi是mli對應(yīng)的兩條平行輪廓邊之間的距離;對mli的終點(diǎn)ei做類似的計算得到Iei和rei ;依次連接si、lsi、lei、ei、rei和rsi得到的矩形即為mli對應(yīng)的墻體平面輪廓ci,存儲ci到數(shù)組Vc中;B3,將mli添加到Vcml中后對Vcml重新排序,按照Vcml中每條中線與X軸正向的夾角從小到大排序;B4,遍歷Vcml,對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,還原墻體平面輪廓。特別的,對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,包括B41,如果i為數(shù)組最后一個元素的下標(biāo),則j = 0 ;否則j = i+1 ;如果cmli和cmli平行,則執(zhí)行步驟B42,否則執(zhí)行步驟B43 ;
B42,通過如步驟B2的計算得到矩形對應(yīng)的頂點(diǎn),然后用這些頂點(diǎn)更新表I中連接關(guān)系對應(yīng)的頂點(diǎn);B43,根據(jù)中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系找到連接關(guān)系對應(yīng)的兩條內(nèi)側(cè)邊,計算兩條內(nèi)側(cè)邊的交點(diǎn),再用改交點(diǎn)的方法更新中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系中連接關(guān)系對應(yīng)的頂點(diǎn)。中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系包括中線連接關(guān)系si連接sj, si連接ej, ei連接sj, ei連接ej ;輪廓更新頂點(diǎn)lsi和 rsj, Isi 和 lej, rei 和 rsj, rei 和 Iej ;輪廓內(nèi)側(cè)邊Iefti和 right j, Iefti 和 left j, right i 和 right j,right i 和 left j。具體參見表一。表一
權(quán)利要求
1.一種墻體平面輪廓的識別方法,其特征在于,該方法包括 讀取給定建筑平面圖中的所有線段數(shù)據(jù)并將這些線段存儲在一個線段數(shù)組Vl中;遍歷Vi中的所有線段,將滿足備選輪廓邊條件的兩條不相同的線段標(biāo)記標(biāo)識,設(shè)置為備選輪廓邊,并將這兩條線段作為一個備選輪廓存儲在備選輪廓數(shù)組Vcc中; 計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中; 遍歷Vml,對其中任兩條不同中線mli和mlj (i ^ j)進(jìn)行優(yōu)化; 根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓。
2.如權(quán)利要求I所述的方法,其特征在于,所述Vl中的每條線段存儲兩個端點(diǎn)的坐標(biāo)和一個類型標(biāo)識,初始時所有線段的標(biāo)識均為“普通線段”;若圖紙中存儲了多線段類型的數(shù)據(jù),則根據(jù)每條多線段存儲的頂點(diǎn)將其分割為多條普通線段并存儲到Vl中;若圖紙中存儲了塊/插入類型的數(shù)據(jù),則將每個塊/插入中的線段和多線段數(shù)據(jù)按照前面的方法處理后存儲到Vl中。
3.如權(quán)利要求I所述的方法,其特征在于,所述備選輪廓邊條件包括但不限于兩條線段中至少有一條線段的標(biāo)識為“普通線段”;兩條線段彼此平行;兩條線段之間的距離在給定范圍內(nèi);兩條線段滿足互投影比例要求;兩條線段中間沒有與其平行的其他的線段。
4.如權(quán)利要求3所述的方法,其特征在于,所述兩條線段滿足互投影比例要求,根據(jù)如下步驟判斷 Al,分別記線段11和線段12的起點(diǎn)和終點(diǎn)為sl、el、s2和e2 ;計算經(jīng)過si且與12垂直的直線與線段12的交點(diǎn),如果這個交點(diǎn)在線段12上,則記該交點(diǎn)為sl_12 ;并計算el_12,s2_ll 和 e2_12 ; A2,如果得到 sl_12 和 el_12,則令 pro I = sl_12, pro2 = el_12,執(zhí)行步驟 A8 ; A3,如果得到 sl_12 和 s2_ll,則令 prol = sl_12, pro2 = s2_ll,執(zhí)行步驟 A8 ; A4,如果得到 sl_12 和 e2_ll,則令 prol = sl_12, pro2 = e2_ll,執(zhí)行步驟 A8 ; A5,如果得到 s2_ll 和 e2_ll,則令 prol = s2_ll, pro2 = e2_ll,執(zhí)行步驟 A8 ; A6,如果得到 s2_ll 和 el_12,則令 prol = s2_ll, pro2 = el_12,執(zhí)行步驟 A8 ; A7,如果得到 e2_ll 和 el_12,則令 prol = e2_ll, pro2 = el_12,執(zhí)行步驟 A8 ; A8,計算prol和pro2的距離d,如果d與11和12中較短的線段長度的比值大于1/3,貝U認(rèn)為11和12滿足互投影比例要求,返回成功;否則,返回失敗。
5.如權(quán)利要求I所述的方法,其特征在于,所述計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中,包括 重新調(diào)整左右兩條平行輪廓邊線段的起點(diǎn)和終點(diǎn);如果終點(diǎn)的X坐標(biāo)值小于起點(diǎn)的X坐標(biāo)值,則交換起點(diǎn)和終點(diǎn);如果起點(diǎn)和終點(diǎn)的X坐標(biāo)值相等,判斷如果終點(diǎn)的y坐標(biāo)值小于起點(diǎn)的I坐標(biāo)值,則交換起點(diǎn)和終點(diǎn); 計算左側(cè)輪廓邊起點(diǎn)和右側(cè)輪廓邊起點(diǎn)的中點(diǎn),記為ms ;同理,計算左右兩側(cè)終點(diǎn)的中線,記為me ; 連接ms和me得到的線段即為輪廓對應(yīng)的中線ml,將這些中線存儲于數(shù)組Vml中。
6.如權(quán)利要求I所述的方法,其特征在于,所述遍歷Vml,對其中任兩條不同中線mli和mlj (i ^ j)進(jìn)行優(yōu)化,包括 如果mli和mlj完全重疊,貝U從Vcc中刪除對應(yīng)的輪廓,然后從Vml中刪除ml j ;如果mli和mlj部分重疊,則修改mlj在重合一端的頂點(diǎn)坐標(biāo)為mli在重合一端的頂點(diǎn)坐標(biāo); 如果mli和mlj相交,且mli或mlj存在與交點(diǎn)距離小于閾值th的頂點(diǎn),則修改所 述頂點(diǎn)的坐標(biāo)為交點(diǎn)的坐標(biāo); 如果mli和mlj不相交,但mli和mlj分別存在一個頂點(diǎn)滿足這兩個頂點(diǎn)的距離小于閾值th,則修改mlj對應(yīng)的頂點(diǎn)坐標(biāo)為mli對應(yīng)頂點(diǎn)的坐標(biāo); 如果mli和mlj不相交,但mli存在一個頂點(diǎn)到mlj的距離小于閾值th,則修改mli對應(yīng)的頂點(diǎn)坐標(biāo)為mli和mlj延長線交點(diǎn)的坐標(biāo);同理,對mlj的頂點(diǎn)做類似的計算。
7.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓,包括 遍歷Vml,對每一條中線mli進(jìn)行如下計算 BI,計算與mli相連的其他中線,將這些相連的中線存儲在Vcml中。如果Vcml為空,則執(zhí)行步驟B2,否則執(zhí)行步驟B3 ; B2,計算mli的起點(diǎn)si沿著與mli垂直的方向分別向兩側(cè)偏移wi/2后的頂點(diǎn),得到的這兩個頂點(diǎn)分別是Isi和rsi ;其中wi是mli對應(yīng)的兩條平行輪廓邊之間的距離;對mli的終點(diǎn)ei做類似的計算得到Iei和rei ;依次連接si、Isi、lei、ei、rei和rsi得到的矩形即為mli對應(yīng)的墻體平面輪廓ci,存儲ci到數(shù)組Vc中; B3,將mli添加到Vcml中后對Vcml重新排序,按照Vcml中每條中線與X軸正向的夾角從小到大排序; B4,遍歷Vcml,對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,還原墻體平面輪廓。
8.如權(quán)利要求7所述的方法,其特征在于,所述對每一條相連的中線cmli進(jìn)行中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系計算,包括 B41,如果i為數(shù)組最后一個元素的下標(biāo),則j = O ;否則j = i+1 ;如果cmli和cmlj平行,則執(zhí)行步驟B42,否則執(zhí)行步驟B43 ; B42,通過如步驟B2的計算得到矩形對應(yīng)的頂點(diǎn),然后用這些頂點(diǎn)更新表I中連接關(guān)系對應(yīng)的頂點(diǎn); B43,根據(jù)中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系找到連接關(guān)系對應(yīng)的兩條內(nèi)側(cè)邊,計算兩條內(nèi)側(cè)邊的交點(diǎn),再更新中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系中連接關(guān)系對應(yīng)的頂點(diǎn)。
9.如權(quán)利要求8所述的方法,其特征在于,所述中線連接關(guān)系與輪廓更新頂點(diǎn)的對應(yīng)關(guān)系包括 中線連接關(guān)系si連接sj, si連接ej, ei連接sj, ei連接ej ; 輪廓更新頂點(diǎn)lsi和rsj, Isi和lej, rei和rsj, rei和Iej ;輪廓內(nèi)側(cè)邊lefti 和 right j, Iefti 和 left j, righti 和 right j, righti 和 left j
10.如權(quán)利要求3、5、7、8或9任一所述的方法,其特征在于,所述判斷兩條線段是否平行,包括 判斷兩條線段之間的銳角夾角是否小于5度或預(yù)先設(shè)定的閾值。
全文摘要
本發(fā)明公開了墻體平面輪廓的識別方法,包括讀取給定建筑平面圖中的所有線段數(shù)據(jù)并將這些線段存儲在一個線段數(shù)組V1中;遍歷V1中的所有線段,將滿足備選輪廓邊條件的兩條不相同的線段標(biāo)記標(biāo)識,設(shè)置為備選輪廓邊,并將這兩條線段作為一個備選輪廓存儲在備選輪廓數(shù)組Vcc中;計算Vcc中的每個備選輪廓的輪廓中線,將這些中線存儲于數(shù)組Vml中;遍歷Vml,對其中任兩條不同中線mli和mlj(i≠j)進(jìn)行優(yōu)化;根據(jù)優(yōu)化后的中線及對應(yīng)的寬度還原墻體平面輪廓。采用了本發(fā)明的技術(shù)方案,在缺少軸線信息、且允許存在大量線段重疊和部分重疊的情況下,可以準(zhǔn)確識別建筑平面圖中的墻體平面輪廓。
文檔編號G06K9/62GK102750553SQ20121021562
公開日2012年10月24日 申請日期2012年6月28日 優(yōu)先權(quán)日2012年6月28日
發(fā)明者李挺, 李淳芃, 王兆其 申請人:北京中科廣視科技有限公司