本發(fā)明涉及一種模型3d效果圖的生成方法,屬于3d效果圖生成技術(shù)領(lǐng)域。
背景技術(shù):
傳統(tǒng)的建筑設(shè)計(jì)中一般使用平面圖來表示建筑物的結(jié)構(gòu),然而,建筑工程圖外在表達(dá)上的示意性、內(nèi)部描述上的多樣性、以及對(duì)局部環(huán)境的依賴性給識(shí)別和理解帶來困難;人工讀圖依賴于一定的工程經(jīng)驗(yàn)、領(lǐng)域知識(shí)的積累以及讀圖時(shí)的精神狀態(tài),如果缺乏足夠的建筑專業(yè)知識(shí)或缺乏足夠的專心與精力,則會(huì)出現(xiàn)理解上的偏差,所以這種建筑工程圖需要一定的專業(yè)知識(shí)才能被讀懂,并不方便非專業(yè)人員對(duì)于建筑物空間結(jié)構(gòu)的了解;另外,不同建筑部門對(duì)于同一建筑工程圖集會(huì)可能產(chǎn)生多次重復(fù)計(jì)算,如計(jì)算建筑物需要多少鋼材和水泥等信息,布置電線和暖氣時(shí)仍需要計(jì)算其用量等;這些重復(fù)的計(jì)算將會(huì)影響其整體效益的提高;而且傳統(tǒng)的二維建筑圖已經(jīng)不能滿足人們?cè)絹碓礁叩囊曈X要求;隨著三維制圖軟件的不斷發(fā)展應(yīng)用,在很多應(yīng)用中都需要使用建筑物的三維模型來更加直觀和方便的表示建筑物的空間結(jié)構(gòu)。
技術(shù)實(shí)現(xiàn)要素:
為解決上述問題,本發(fā)明提出了一種模型3d效果圖的生成方法,能夠根據(jù)平面圖快速生成3d效果圖,提高了工作效率。
本發(fā)明的模型3d效果圖的生成方法,所述方法包括如下步驟:
第一步,輸入掃描的模型平面圖紙,并進(jìn)行圖像的預(yù)處理,
a.針對(duì)來源廣泛,格式不一的輸入圖像首先將其統(tǒng)一轉(zhuǎn)為灰度圖;
b.進(jìn)行二值化處理后轉(zhuǎn)為黑白點(diǎn)陣圖;
c.采用圖像形態(tài)學(xué)的方法進(jìn)行去噪處理,將模型部件之外的對(duì)象圖像剔除;
d.通過霍夫變換提取平面圖的兩個(gè)主要方向,據(jù)此旋轉(zhuǎn)矯正使得圖像的兩個(gè)主方向分別與圖像的x、y坐標(biāo)向平行,旋轉(zhuǎn)矯正步驟有助于后續(xù)圖像分塊,并提高矢量化的效果;
第二步,基于積分投影的區(qū)域分塊,將預(yù)處理后的圖像通過平均積分投影函數(shù)來提取包含墻體線條的圖像區(qū)域;當(dāng)圖像的某一列或行像素灰度均值發(fā)生變化時(shí),這種變化會(huì)在該列或行的平均積分投影值上反應(yīng)出來;平均積分投影函數(shù)如下:
式中,
i(x,y)表示點(diǎn)(x,y)處的像素灰度值;
mv(x)表示在區(qū)間【y1,y2】上的垂直平均積分投影函數(shù);
mh(y)表示在區(qū)間【x1,y2】上的水平平均積分投影函數(shù);
第三步,分塊圖像的稀疏像素點(diǎn)矢量化,經(jīng)過積分投影步驟后,整個(gè)圖像被分解為若干個(gè)子圖像,每個(gè)子圖像包含數(shù)個(gè)豎直或者水平的圖像單元,經(jīng)過處理后獲取帶寬度的線段集合,進(jìn)一步獲得墻體幾何等基本模型信息;
第四步,起始中軸點(diǎn)和追蹤方向選取,尋找起始中軸點(diǎn),掃描線在分塊二值圖像上以預(yù)定步長(zhǎng)自上而下掃描;
第五步,稀疏點(diǎn)追蹤,根據(jù)長(zhǎng)度方向,確定搜索順序;如果長(zhǎng)度方向是水平的,則追蹤順序?yàn)橄扔液笞?;如果長(zhǎng)度方向是豎直的,則先下后上;
第六步,結(jié)點(diǎn)分割,當(dāng)違反一個(gè)或多個(gè)繼續(xù)追蹤條件時(shí),稀疏點(diǎn)追蹤程序暫停,啟用結(jié)點(diǎn)分割程序;結(jié)點(diǎn)分割包括以下三步迭代:
a.退回上一個(gè)中軸點(diǎn);
b.調(diào)整追蹤步長(zhǎng)為當(dāng)前步長(zhǎng)的一半;
c.在新的位置處檢測(cè)繼續(xù)條件;
如果檢測(cè)失敗,則將步長(zhǎng)減半后再執(zhí)行一次迭代;但若在新位置處的點(diǎn),所有條件都滿足,那么自該點(diǎn)起恢復(fù)原始追蹤步長(zhǎng),并執(zhí)行追蹤程序;重復(fù)迭代,直至追蹤步的長(zhǎng)度變?yōu)?,結(jié)點(diǎn)分割程序終止,最后找到的滿足所有條件的點(diǎn)為新的中軸點(diǎn);通過這種處理,程序能夠較準(zhǔn)確地將十字交叉區(qū)域,以交叉點(diǎn)為界分為三條直線段,也能十分精準(zhǔn)地將拐角處的折線分為兩段;
第七步,線段整合,輸入待處理的各條線段,包含起始、終止坐標(biāo)位置及線寬信息的數(shù)據(jù)結(jié)構(gòu);用終止坐標(biāo)減去起始坐標(biāo)得到每條線段的向量表示,運(yùn)用向量求夾角公式,分別求出每?jī)蓚€(gè)向量的夾角,若兩個(gè)向量夾角接近于0,則認(rèn)為對(duì)應(yīng)的兩條線段的中心軸幾乎平行;之后判斷這兩條平行線段的近鄰點(diǎn)距離,如果不大于一個(gè)給定線寬,則合并兩條直線,將由結(jié)點(diǎn)分割程序割裂的十字交叉線段整合為一條完整線;
第八步,墻體與附屬物識(shí)別,在每個(gè)分塊子圖像中,獲取若干帶寬度的直線段,通過分析這些矢量?jī)?nèi)容,進(jìn)一步識(shí)別出墻體和門窗等附屬物信息;
第九步,三維構(gòu)建,
a.將模型建模的各種部件與元素,包括地面、墻壁、門、窗和陽臺(tái)等,定義為形狀單元;一個(gè)形狀單元表達(dá)為一個(gè)四元組s={n,g,b,p},式中,n表示對(duì)象名稱;g表示單元的幾何信息,特指為多邊形網(wǎng)格曲面;b表示帶方向的幾何包圍盒,用于指定單元的位置、體量;p表示單元的其他屬性;
b.對(duì)用戶提供的模型平面圖進(jìn)行識(shí)別,并根據(jù)識(shí)別結(jié)果,進(jìn)行三維模型的快速生成,得到3d效果圖。
進(jìn)一步地,所述第四步的具體操作步驟如下:
a.假設(shè)掃描到的第一個(gè)黑色像素點(diǎn)記為p0,自p0向右掃描,直至遇到第一個(gè)白色像素點(diǎn)記為p0',并獲得此次水平運(yùn)行中點(diǎn)p1(p0和p0'的中點(diǎn));
b.繼續(xù)從p1開始,在豎直方向上作方向相反的兩次掃描,找到豎直運(yùn)行的中點(diǎn)p2;同樣,由p2找到水平運(yùn)行中點(diǎn)p3直到pi和pi-1的距離小于事先定義好的閾值停止;該閾值通常為1個(gè)像素;這時(shí),pi點(diǎn)被選定為起始中軸點(diǎn);得到起始中軸點(diǎn)pi后,同時(shí)獲得pi點(diǎn)處水平和豎直運(yùn)行的寬;
c.如果水平運(yùn)行寬度比豎直運(yùn)行寬度長(zhǎng),則線條在水平上的斜率小于45°,這時(shí)將該線段的長(zhǎng)度方向設(shè)為水平,否則長(zhǎng)度方向就設(shè)為豎直,線段的寬度方向與長(zhǎng)度方向正交。
進(jìn)一步地,所述第七步中的線寬為墻體線的寬度。
進(jìn)一步地,所述第八步中,墻體與附屬物識(shí)別的具體方法如下:先根據(jù)線寬判斷是否為墻體,若折線的線寬超過閾值時(shí),則認(rèn)為是實(shí)心墻體;若所識(shí)別的線寬內(nèi)容大于一個(gè)線寬長(zhǎng)度,而小于給定線寬的倍數(shù),則抽取原圖像兩條線段間的中斷處區(qū)域生成子圖;再調(diào)用模式分類方法,識(shí)別出具體模型的門窗等附屬結(jié)構(gòu)。
再進(jìn)一步地,所述給定線寬的倍取值為3。
再進(jìn)一步地,所述模式分類方法包括lda算法。
再進(jìn)一步地,所述模式分類方法包括以下步驟:
a.制備訓(xùn)練所需的樣本圖像,將門窗兩邊與墻體接觸位置處的中心軸點(diǎn)坐標(biāo)記錄下來,計(jì)算出這兩個(gè)中心軸點(diǎn)坐標(biāo)在水平和豎直方向上的距離差,記為dh和dv;然后以該墻體附屬物對(duì)象的中心位置為中心,分別以dh+2w和dv+2w為區(qū)域的長(zhǎng)和寬,w為墻體的像素線寬,抽取出包含門窗的子圖;再將上述子圖統(tǒng)一縮為33x33大小的圖像,得到n張樣本訓(xùn)練圖像;
b.模型訓(xùn)練,讀入n張樣本訓(xùn)練圖像,生成mxn維數(shù)據(jù)矩陣a,式中,m為每張圖像的數(shù)據(jù)維度;設(shè)需將樣本分為k類,則使用lda/qr-gsvd算法計(jì)算生成mx(k-1)維矩陣g;再將訓(xùn)練樣本中的圖像組裝為m維列向量,分別與g相乘,獲得相應(yīng)的k-1維識(shí)別向量;
c.對(duì)象識(shí)別,將含有門窗的待識(shí)別子圖也縮小為33x33的標(biāo)準(zhǔn)大小,然后將其與線性嵌入矩陣g相乘,對(duì)所得識(shí)別向量與訓(xùn)練樣本的每類計(jì)算結(jié)果求歐式距離,并進(jìn)行最近鄰判斷,距離最近的類即為待識(shí)別圖像的類別。
進(jìn)一步地,所述第九步的由四元組表達(dá)的形狀單元中單元的其他屬性包括模型建模相關(guān)的紋理和材質(zhì)。
進(jìn)一步地,所述第一步前還包括模型平面圖繪制的步驟。
本發(fā)明與現(xiàn)有技術(shù)相比較,本發(fā)明的模型3d效果圖的生成方法,對(duì)用戶提供的模型平面圖像進(jìn)行區(qū)域分塊,有效地抽取包含墻體對(duì)象的子區(qū)域,并將分塊圖像的稀疏點(diǎn)像素矢量化,便于抽取墻體的位置和尺寸等信息;采用線性辨別分析(lda)方法,識(shí)別出墻體上的門窗和孔洞等建筑部件,并實(shí)現(xiàn)建筑部件在圖紙中位置的精確定位,能夠根據(jù)平面圖快速生成3d效果圖,提高了工作效率。
具體實(shí)施方式
本發(fā)明的模型3d效果圖的生成方法,所述方法包括如下步驟:
首先確認(rèn)模型尺寸,并繪制模型平面圖;
第一步,輸入掃描的模型平面圖紙,并進(jìn)行圖像的預(yù)處理,
a.針對(duì)來源廣泛,格式不一的輸入圖像首先將其統(tǒng)一轉(zhuǎn)為灰度圖;
b.進(jìn)行二值化處理后轉(zhuǎn)為黑白點(diǎn)陣圖;
c.采用圖像形態(tài)學(xué)的方法進(jìn)行去噪處理,將模型部件之外的對(duì)象圖像剔除;
d.通過霍夫變換提取平面圖的兩個(gè)主要方向,據(jù)此旋轉(zhuǎn)矯正使得圖像的兩個(gè)主方向分別與圖像的x、y坐標(biāo)向平行,旋轉(zhuǎn)矯正步驟有助于后續(xù)圖像分塊,并提高矢量化的效果;
第二步,基于積分投影的區(qū)域分塊,將預(yù)處理后的圖像通過平均積分投影函數(shù)來提取包含墻體線條的圖像區(qū)域;當(dāng)圖像的某一列或行像素灰度均值發(fā)生變化時(shí),這種變化會(huì)在該列或行的平均積分投影值上反應(yīng)出來;平均積分投影函數(shù)如下:
式中,
i(x,y)表示點(diǎn)(x,y)處的像素灰度值;
mv(x)表示在區(qū)間【y1,y2】上的垂直平均積分投影函數(shù);
mh(y)表示在區(qū)間【x1,y2】上的水平平均積分投影函數(shù);
第三步,分塊圖像的稀疏像素點(diǎn)矢量化,經(jīng)過積分投影步驟后,整個(gè)圖像被分解為若干個(gè)子圖像,每個(gè)子圖像包含數(shù)個(gè)豎直或者水平的圖像單元,經(jīng)過處理后獲取帶寬度的線段集合,進(jìn)一步獲得墻體幾何等基本模型信息;
第四步,起始中軸點(diǎn)和追蹤方向選取,尋找起始中軸點(diǎn),掃描線在分塊二值圖像上以預(yù)定步長(zhǎng)自上而下掃描;
第五步,稀疏點(diǎn)追蹤,根據(jù)長(zhǎng)度方向,確定搜索順序;如果長(zhǎng)度方向是水平的,則追蹤順序?yàn)橄扔液笞?;如果長(zhǎng)度方向是豎直的,則先下后上;
第六步,結(jié)點(diǎn)分割,當(dāng)違反一個(gè)或多個(gè)繼續(xù)追蹤條件時(shí),稀疏點(diǎn)追蹤程序暫停,啟用結(jié)點(diǎn)分割程序;結(jié)點(diǎn)分割包括以下三步迭代:
a.退回上一個(gè)中軸點(diǎn);
b.調(diào)整追蹤步長(zhǎng)為當(dāng)前步長(zhǎng)的一半;
c.在新的位置處檢測(cè)繼續(xù)條件;
如果檢測(cè)失敗,則將步長(zhǎng)減半后再執(zhí)行一次迭代;但若在新位置處的點(diǎn),所有條件都滿足,那么自該點(diǎn)起恢復(fù)原始追蹤步長(zhǎng),并執(zhí)行追蹤程序;重復(fù)迭代,直至追蹤步的長(zhǎng)度變?yōu)?,結(jié)點(diǎn)分割程序終止,最后找到的滿足所有條件的點(diǎn)為新的中軸點(diǎn);通過這種處理,程序能夠較準(zhǔn)確地將十字交叉區(qū)域,以交叉點(diǎn)為界分為三條直線段,也能十分精準(zhǔn)地將拐角處的折線分為兩段;
第七步,線段整合,輸入待處理的各條線段,包含起始、終止坐標(biāo)位置及線寬信息的數(shù)據(jù)結(jié)構(gòu);用終止坐標(biāo)減去起始坐標(biāo)得到每條線段的向量表示,運(yùn)用向量求夾角公式,分別求出每?jī)蓚€(gè)向量的夾角,若兩個(gè)向量夾角接近于0,則認(rèn)為對(duì)應(yīng)的兩條線段的中心軸幾乎平行;之后判斷這兩條平行線段的近鄰點(diǎn)距離,如果不大于一個(gè)給定線寬,則合并兩條直線,將由結(jié)點(diǎn)分割程序割裂的十字交叉線段整合為一條完整線;
第八步,墻體與附屬物識(shí)別,在每個(gè)分塊子圖像中,獲取若干帶寬度的直線段,通過分析這些矢量?jī)?nèi)容,進(jìn)一步識(shí)別出墻體和門窗等附屬物信息;
第九步,三維構(gòu)建,
a.將模型建模的各種部件與元素,包括地面、墻壁、門、窗和陽臺(tái)等,定義為形狀單元;一個(gè)形狀單元表達(dá)為一個(gè)四元組s={n,g,b,p},式中,n表示對(duì)象名稱;g表示單元的幾何信息,特指為多邊形網(wǎng)格曲面;b表示帶方向的幾何包圍盒,用于指定單元的位置、體量;p表示單元的其他屬性;
b.對(duì)用戶提供的模型平面圖進(jìn)行識(shí)別,并根據(jù)識(shí)別結(jié)果,進(jìn)行三維模型的快速生成,得到3d效果圖。
所述第四步的具體操作步驟如下:
a.假設(shè)掃描到的第一個(gè)黑色像素點(diǎn)記為p0,自p0向右掃描,直至遇到第一個(gè)白色像素點(diǎn)記為p0',并獲得此次水平運(yùn)行中點(diǎn)p1(p0和p0'的中點(diǎn));
b.繼續(xù)從p1開始,在豎直方向上作方向相反的兩次掃描,找到豎直運(yùn)行的中點(diǎn)p2;同樣,由p2找到水平運(yùn)行中點(diǎn)p3直到pi和pi-1的距離小于事先定義好的閾值停止;該閾值通常為1個(gè)像素;這時(shí),pi點(diǎn)被選定為起始中軸點(diǎn);得到起始中軸點(diǎn)pi后,同時(shí)獲得pi點(diǎn)處水平和豎直運(yùn)行的寬;
c.如果水平運(yùn)行寬度比豎直運(yùn)行寬度長(zhǎng),則線條在水平上的斜率小于45°,這時(shí)將該線段的長(zhǎng)度方向設(shè)為水平,否則長(zhǎng)度方向就設(shè)為豎直,線段的寬度方向與長(zhǎng)度方向正交。
所述第七步中的線寬為墻體線的寬度。
所述第八步中,墻體與附屬物識(shí)別的具體方法如下:先根據(jù)線寬判斷是否為墻體,若折線的線寬超過閾值時(shí),則認(rèn)為是實(shí)心墻體;若所識(shí)別的線寬內(nèi)容大于一個(gè)線寬長(zhǎng)度,而小于給定線寬的倍數(shù),則抽取原圖像兩條線段間的中斷處區(qū)域生成子圖;再調(diào)用模式分類方法,識(shí)別出具體模型的門窗等附屬結(jié)構(gòu)。
所述給定線寬的倍取值為3。
所述模式分類方法包括lda算法。
a.制備訓(xùn)練所需的樣本圖像,將門窗兩邊與墻體接觸位置處的中心軸點(diǎn)坐標(biāo)記錄下來,計(jì)算出這兩個(gè)中心軸點(diǎn)坐標(biāo)在水平和豎直方向上的距離差,記為dh和dv;然后以該墻體附屬物對(duì)象的中心位置為中心,分別以dh+2w和dv+2w為區(qū)域的長(zhǎng)和寬,w為墻體的像素線寬,抽取出包含門窗的子圖;再將上述子圖統(tǒng)一縮為33x33大小的圖像,得到n張樣本訓(xùn)練圖像;
b.模型訓(xùn)練,讀入n張樣本訓(xùn)練圖像,生成mxn維數(shù)據(jù)矩陣a,式中,m為每張圖像的數(shù)據(jù)維度;設(shè)需將樣本分為k類,則使用lda/qr-gsvd算法計(jì)算生成mx(k-1)維矩陣g;再將訓(xùn)練樣本中的圖像組裝為m維列向量,分別與g相乘,獲得相應(yīng)的k-1維識(shí)別向量;
c.對(duì)象識(shí)別,將含有門窗的待識(shí)別子圖也縮小為33x33的標(biāo)準(zhǔn)大小,然后將其與線性嵌入矩陣g相乘,對(duì)所得識(shí)別向量與訓(xùn)練樣本的每類計(jì)算結(jié)果求歐式距離,并進(jìn)行最近鄰判斷,距離最近的類即為待識(shí)別圖像的類別。
所述第九步的由四元組表達(dá)的形狀單元中單元的其他屬性包括模型建模相關(guān)的紋理和材質(zhì)。
本發(fā)明的模型3d效果圖的生成方法,對(duì)用戶提供的模型平面圖像進(jìn)行區(qū)域分塊,有效地抽取包含墻體對(duì)象的子區(qū)域,并將分塊圖像的稀疏點(diǎn)像素矢量化,便于抽取墻體的位置和尺寸等信息;采用線性辨別分析(lda)方法,識(shí)別出墻體上的門窗和孔洞等建筑部件,并實(shí)現(xiàn)建筑部件在圖紙中位置的精確定位,能夠根據(jù)平面圖快速生成3d效果圖,提高了工作效率。
以上述依據(jù)本發(fā)明的理想實(shí)施例為啟示,通過上述的說明內(nèi)容,相關(guān)工作人員完全可以在不偏離本項(xiàng)發(fā)明技術(shù)思想的范圍內(nèi),進(jìn)行多樣的變更以及修改。本項(xiàng)發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。