劉世龍,馬智亮
(清華大學(xué) 土木工程系,北京 100084)
在當(dāng)前的鋼筋混凝土預(yù)制構(gòu)件生產(chǎn)中,構(gòu)件的鋼筋骨架質(zhì)量檢查完全依賴(lài)人工。質(zhì)量檢查人員通過(guò)計(jì)數(shù)檢查鋼筋骨架中鋼筋的數(shù)量,通過(guò)鋼尺和卡尺分別測(cè)量檢查鋼筋骨架中鋼筋的間距及鋼筋的直徑,然后將檢查結(jié)果與設(shè)計(jì)要求進(jìn)行對(duì)比,以確定鋼筋骨架的質(zhì)量是否符合設(shè)計(jì)要求。這種完全依賴(lài)人工的質(zhì)量檢查方法存在檢查效率低、容易產(chǎn)生人為錯(cuò)誤等問(wèn)題。
三維重建技術(shù)[1-4]和BIM技術(shù)[5]的發(fā)展為解決這一問(wèn)題提供了可能。一方面,基于三維重建技術(shù)可以以點(diǎn)云的形式獲取鋼筋骨架的實(shí)際模型,稱(chēng)為實(shí)際點(diǎn)云;另一方面,應(yīng)用BIM軟件可以建立鋼筋骨架的BIM設(shè)計(jì)模型,然后轉(zhuǎn)化為點(diǎn)云形式,稱(chēng)為設(shè)計(jì)點(diǎn)云。從理論上講,將實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云進(jìn)行比對(duì),即可實(shí)現(xiàn)鋼筋骨架自動(dòng)質(zhì)量檢查。筆者已經(jīng)在前期工作[6]中分別提出了從BIM模型生成鋼筋骨架設(shè)計(jì)點(diǎn)云的方法,以及基于三維重建技術(shù)生成鋼筋骨架實(shí)際點(diǎn)云的方法。在此基礎(chǔ)上,本文聚焦于鋼筋骨架的自動(dòng)質(zhì)量檢查。
有關(guān)鋼筋骨架質(zhì)量檢查方法的研究,Hsua等[7]提出基于增強(qiáng)現(xiàn)實(shí)(Augmented Reality,AR)對(duì)鋼筋骨架中箍筋間距和數(shù)量進(jìn)行檢查的方法。該方法基于BIM模型生成AR模型,然后通過(guò)攝像機(jī)采集鋼筋骨架的圖像,接著將該圖像與AR模型疊加,最后通過(guò)人眼觀察疊加結(jié)果來(lái)判斷箍筋間距和數(shù)量是否符合設(shè)計(jì)要求。該方法的檢查內(nèi)容局限為箍筋間距和數(shù)量,不涉及主筋間距和數(shù)量,檢查過(guò)程需要人工參與,未實(shí)現(xiàn)自動(dòng)檢查,也未指出該檢查方法的誤差有多大。Wang等[8]提出基于三維激光掃描點(diǎn)云對(duì)預(yù)制構(gòu)件外露連接鋼筋間距進(jìn)行檢查的方法。根據(jù)該方法,首先基于點(diǎn)間平均距離和RGB顏色去除三維激光掃描點(diǎn)云中的噪點(diǎn),然后提取所有鋼筋點(diǎn)云,接著識(shí)別出單根鋼筋的點(diǎn)云,最后估計(jì)外露連接鋼筋沿某一坐標(biāo)軸的間距。該方法的檢查對(duì)象局限于預(yù)制構(gòu)件外露連接鋼筋,這種鋼筋相互平行,沒(méi)有交叉,其檢查內(nèi)容只是互相平行的鋼筋沿某一方向的間距。Kim等[9]提出基于三維激光掃描儀的鋼筋骨架和模板質(zhì)量檢查方法。該方法包括4步,即點(diǎn)云數(shù)據(jù)獲取、噪點(diǎn)去除、模板和鋼筋識(shí)別以及尺寸估計(jì)。通過(guò)該方法只能得到橫向主筋間距和縱向主筋間距、模板尺寸、混凝土保護(hù)層厚度。
綜上所述,現(xiàn)有研究提出的鋼筋骨架質(zhì)量檢查方法存在以下不足。首先,實(shí)際工程中使用的預(yù)制構(gòu)件鋼筋骨架較為復(fù)雜,不僅包含主筋和箍筋,還包括分布筋等,而現(xiàn)有研究提出的方法針對(duì)的檢查對(duì)象較為簡(jiǎn)單,難以適應(yīng)復(fù)雜鋼筋骨架的需求。其次,根據(jù)規(guī)范[10],鋼筋骨架的檢查內(nèi)容不僅包含鋼筋間距,也包含鋼筋數(shù)量和鋼筋直徑,而現(xiàn)有研究提出的鋼筋間距檢查方法尚未實(shí)現(xiàn)主筋和箍筋的間距檢查,更不用說(shuō)鋼筋的直徑。
為此,本文提出了鋼筋骨架中鋼筋數(shù)量和間距自動(dòng)檢查算法。首先介紹該算法的框架,然后對(duì)該框架中的關(guān)鍵步驟進(jìn)行說(shuō)明,最后通過(guò)試驗(yàn)驗(yàn)證該算法的有效性。提出的算法能夠?qū)崿F(xiàn)工程中復(fù)雜鋼筋骨架的鋼筋數(shù)量和間距的自動(dòng)檢查,從而提高預(yù)制鋼筋混凝土構(gòu)件鋼筋骨架的質(zhì)量檢查效率,降低人工成本。
為實(shí)現(xiàn)鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查,需要解決2個(gè)問(wèn)題,一個(gè)是如何實(shí)現(xiàn)鋼筋骨架實(shí)際點(diǎn)云與設(shè)計(jì)點(diǎn)云的高精度配準(zhǔn),另一個(gè)是如何基于高精度配準(zhǔn)結(jié)果實(shí)現(xiàn)鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查算法。針對(duì)第一個(gè)問(wèn)題的解決思路是,對(duì)鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云依次進(jìn)行粗配準(zhǔn)和精配準(zhǔn)。針對(duì)第二個(gè)問(wèn)題的解決思路是,針對(duì)鋼筋骨架中鋼筋的特點(diǎn),分別設(shè)計(jì)鋼筋數(shù)量和鋼筋間距的檢查算法。在以上思路的基礎(chǔ)上,本文提出了如圖1所示的基于點(diǎn)云的鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查算法框架。
圖1 算法框架
在該算法框架中,首先對(duì)鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云分別進(jìn)行降采樣,以得到空間密集程度相同的實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云。然后對(duì)降采樣后的鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云進(jìn)行粗配準(zhǔn)。接著對(duì)粗配準(zhǔn)得到的鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云進(jìn)行精配準(zhǔn),以得到二者高精度的配準(zhǔn)結(jié)果。最后基于前述配準(zhǔn)結(jié)果依次對(duì)鋼筋骨架進(jìn)行鋼筋數(shù)量和鋼筋間距檢查。以上各步驟均由程序自動(dòng)執(zhí)行,無(wú)需人工參與。
需要說(shuō)明的是,鋼筋骨架的設(shè)計(jì)點(diǎn)云基于筆者前期工作[6]提出的方法自動(dòng)生成,點(diǎn)云中的每個(gè)點(diǎn)不僅包含三維坐標(biāo)信息,還包含該點(diǎn)屬于哪根鋼筋的語(yǔ)義信息。鋼筋骨架實(shí)際點(diǎn)云由結(jié)構(gòu)光相機(jī)在多個(gè)位置掃描的多片點(diǎn)云按照優(yōu)化后的位姿對(duì)齊得到,其中點(diǎn)云中的每個(gè)點(diǎn)不僅包含三維坐標(biāo)信息,還包含該點(diǎn)屬于哪次掃描的語(yǔ)義信息。這里的多片點(diǎn)云亦可以用其他三維掃描方法,例如立式三維掃描儀得到。
在圖1算法框架中,降采樣步驟使用基于體素的方法[11],該方法較為成熟,這里不再贅述。精配準(zhǔn)步驟使用基于TrICP的高精度精配準(zhǔn)方法,這里亦不再贅述。以下詳細(xì)說(shuō)明粗配準(zhǔn)、鋼筋數(shù)量檢查以及鋼筋間距檢查3個(gè)關(guān)鍵步驟。
本步驟使用文獻(xiàn)[12]提到的主成分分析(Principal Component Analysis,PCA)算法進(jìn)行粗配準(zhǔn)。
PCA算法常用于降低數(shù)據(jù)集的維度,同時(shí)盡可能保持原數(shù)據(jù)集的信息量[13]。以點(diǎn)云為例,其基本原理[14]是,對(duì)點(diǎn)云依次進(jìn)行標(biāo)準(zhǔn)化、協(xié)方差矩陣計(jì)算、特征值和特征向量計(jì)算操作,最終生成點(diǎn)云的主成分,這些主成分本質(zhì)上是一系列向量。例如,對(duì)于圖2所示點(diǎn)云,其所在坐標(biāo)系由X軸、Y軸和Z軸構(gòu)成,利用PCA算法處理該點(diǎn)云,可以得到第一、第二和第三主成分,3個(gè)主成分的方向分別與圖中的紅色x軸方向、綠色y軸方向和藍(lán)色z軸方向相同??梢钥闯?,第一主成分的方向近似沿著點(diǎn)云的最長(zhǎng)邊,第二主成分的方向近似沿著點(diǎn)云的次長(zhǎng)邊,第三主成分的方向近似沿著點(diǎn)云的最短邊。
圖2 PCA算法示例
根據(jù)PCA算法原理可知,使用PCA算法分別處理鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云,能夠得到3個(gè)主成分,而且3個(gè)主成分構(gòu)成一個(gè)坐標(biāo)系。雖然鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云略有差別,但二者對(duì)應(yīng)的鋼筋骨架是一樣的,所以根據(jù)PCA算法求得的第一主成分、第二主成分和第三主成分的方向大體相同,3個(gè)主成分構(gòu)成的坐標(biāo)系大體相同。
由此可以構(gòu)建基于PCA算法的鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云粗配準(zhǔn)算法。具體來(lái)說(shuō),首先用PCA算法分別對(duì)鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云進(jìn)行處理,分別得到3個(gè)主成分,并分別以此構(gòu)建坐標(biāo)系。然后將鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云分別從現(xiàn)有坐標(biāo)系轉(zhuǎn)換至基于各自主成分構(gòu)建的坐標(biāo)系,即可實(shí)現(xiàn)鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云的粗配準(zhǔn)。
相比鋼筋數(shù)量,鋼筋是否存在能表示更豐富的信息,即鋼筋是否存在不僅能表示各類(lèi)鋼筋各有多少根,而且能清楚地表示缺少的鋼筋對(duì)應(yīng)設(shè)計(jì)要求里的哪根鋼筋。因此,本研究將用鋼筋是否存在的檢查替代鋼筋數(shù)量的檢查。
鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云在精配準(zhǔn)后,同一根鋼筋的實(shí)際點(diǎn)云與設(shè)計(jì)點(diǎn)云距離很近。由此可以根據(jù)一根鋼筋的設(shè)計(jì)點(diǎn)云附近是否有足夠的實(shí)際點(diǎn)云來(lái)判斷該鋼筋是否存在?;谶@樣的思想,本研究設(shè)計(jì)了如圖3所示的鋼筋數(shù)量檢查算法。
圖3 鋼筋數(shù)量檢查算法
在該算法中,首先從精配準(zhǔn)后的鋼筋骨架設(shè)計(jì)點(diǎn)云中獲取每根鋼筋的設(shè)計(jì)點(diǎn)云。然后,遍歷每根鋼筋,對(duì)每根鋼筋執(zhí)行以下步驟:①對(duì)該根鋼筋設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),判斷其領(lǐng)域內(nèi)是否有精配準(zhǔn)后鋼筋骨架實(shí)際點(diǎn)云中的點(diǎn),如果有則將該點(diǎn)加入集合N;②根據(jù)集合N中的點(diǎn)數(shù)和該根鋼筋設(shè)計(jì)點(diǎn)云中的點(diǎn)數(shù),判斷該根鋼筋是否存在。遍歷完成后,即可實(shí)現(xiàn)鋼筋骨架中鋼筋數(shù)量的檢查。
2.2.1 獲取每根鋼筋的設(shè)計(jì)點(diǎn)云
本步驟基于鋼筋骨架設(shè)計(jì)點(diǎn)云中的語(yǔ)義信息,獲取每根鋼筋的設(shè)計(jì)點(diǎn)云,以便后續(xù)對(duì)每根鋼筋是否存在進(jìn)行檢查。這里的語(yǔ)義信息指的是鋼筋I(lǐng)D[1],具體來(lái)說(shuō)分為2個(gè)子步驟。
首先,獲取鋼筋I(lǐng)D集合。遍歷鋼筋骨架設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),把每個(gè)點(diǎn)的語(yǔ)義信息加入集合IDs中。遍歷完成即可得到鋼筋I(lǐng)D的集合IDs。需要說(shuō)明的是,若集合IDs中有重復(fù)的鋼筋I(lǐng)D,則對(duì)重復(fù)的鋼筋I(lǐng)D只保留一個(gè)。
其次,獲取每個(gè)鋼筋I(lǐng)D對(duì)應(yīng)的點(diǎn)的集合,即每根鋼筋的設(shè)計(jì)點(diǎn)云。對(duì)于集合IDs中的每個(gè)鋼筋I(lǐng)D,遍歷鋼筋骨架設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),若該點(diǎn)的語(yǔ)義信息與該鋼筋I(lǐng)D相同,則把該點(diǎn)加入該鋼筋I(lǐng)D對(duì)應(yīng)的鋼筋設(shè)計(jì)點(diǎn)云中,該鋼筋設(shè)計(jì)點(diǎn)云初始點(diǎn)數(shù)為0。遍歷完鋼筋骨架設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),即可得到該鋼筋I(lǐng)D對(duì)應(yīng)的鋼筋設(shè)計(jì)點(diǎn)云。遍歷完集合IDs中的每個(gè)ID,即可得到每根鋼筋的設(shè)計(jì)點(diǎn)云。
2.2.2 獲取鄰域內(nèi)有實(shí)際點(diǎn)云的點(diǎn)的集合
本步驟的目的是將鋼筋設(shè)計(jì)點(diǎn)云中每個(gè)點(diǎn)附近的鋼筋實(shí)際點(diǎn)云中的點(diǎn)加入集合N,每個(gè)點(diǎn)的附近區(qū)域用該點(diǎn)的鄰域表示。對(duì)每個(gè)點(diǎn),以該點(diǎn)為中心,以r為半徑的球體即為該點(diǎn)的鄰域。
本步驟的具體過(guò)程是,遍歷鋼筋設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),對(duì)每個(gè)點(diǎn),判斷其以r為半徑的鄰域內(nèi)是否有鋼筋實(shí)際點(diǎn)云中的點(diǎn),如果有,則將該鋼筋設(shè)計(jì)點(diǎn)云中的點(diǎn)加入集合N。
本步驟中,r的值應(yīng)小于鋼筋骨架中鋼筋間距的最小值,否則鋼筋設(shè)計(jì)點(diǎn)云中某些點(diǎn)的鄰域可能包含其他鋼筋實(shí)際點(diǎn)云中的點(diǎn),從而影響鋼筋數(shù)量檢查結(jié)果的準(zhǔn)確性。考慮到工程上鋼筋骨架中鋼筋間距的最小值約為20 mm,所以本步驟中的r取15 mm。
2.2.3 判斷鋼筋是否存在
在獲取每根鋼筋設(shè)計(jì)點(diǎn)云對(duì)應(yīng)的集合N后,即可根據(jù)式(1)的結(jié)果R判斷該根鋼筋是否存在。
(1)
式中:size(N)為集合N的點(diǎn)數(shù);size(Q)為該鋼筋設(shè)計(jì)點(diǎn)云的點(diǎn)數(shù)。
通常由于鋼筋之間相互遮擋,鋼筋實(shí)際點(diǎn)云有缺失,所以size(N) 如果某根鋼筋存在,則進(jìn)行與之相關(guān)的鋼筋間距檢查,否則不進(jìn)行與之相關(guān)的鋼筋間距檢查。 根據(jù)鋼筋形狀的不同,可以將鋼筋骨架中的鋼筋分為2類(lèi):一類(lèi)是只有平直段的鋼筋,例如主筋和分布筋,如圖4(a)所示;另一類(lèi)既有平直段又有彎曲段,例如箍筋,如圖4(b)所示。 圖4 鋼筋平直段和彎曲段示意圖 由于鋼筋的直徑遠(yuǎn)遠(yuǎn)小于其長(zhǎng)度,所以鋼筋的平直段可以用直線段表示,彎曲段可以用曲線段表示。由此,鋼筋骨架中的主筋和分布筋可以簡(jiǎn)化為直線段,而箍筋可以簡(jiǎn)化為直線段和曲線段的組合。由于2條直線段間的間距求解比較簡(jiǎn)單,因此可以根據(jù)鋼筋的實(shí)際點(diǎn)云獲取近似表示該鋼筋的直線段,然后用直線段間距的計(jì)算替代鋼筋間距的計(jì)算,從而實(shí)現(xiàn)鋼筋間距的計(jì)算?;诖?,本文提出了如圖5所示的鋼筋間距檢查算法。 圖5 鋼筋間距檢查算法 由于鋼筋骨架存在多種類(lèi)型的鋼筋,且鋼筋橫豎交錯(cuò),難以通過(guò)自動(dòng)的方式從鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云中判斷需要檢查哪些鋼筋的間距,因此在圖5中引入間距檢查表。間距檢查表對(duì)應(yīng)于待檢查鋼筋骨架的BIM模型,是一個(gè)文本文件,存儲(chǔ)的信息包括鋼筋I(lǐng)D、是否為箍筋、與其相鄰鋼筋的ID、設(shè)計(jì)間距。間距檢查表通過(guò)手工或半自動(dòng)的方式在鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查之前生成。間距檢查表的生成不影響鋼筋間距檢查算法的自動(dòng)進(jìn)行。 在鋼筋間距檢查算法中,首先從精配準(zhǔn)后的鋼筋骨架實(shí)際點(diǎn)云中提取每根鋼筋的實(shí)際點(diǎn)云。接下來(lái)遍歷每根鋼筋,并對(duì)每根鋼筋做如下處理:根據(jù)間距檢查表判斷其是否為箍筋。如果這根鋼筋是箍筋,則獲取其平直段點(diǎn)云;如果不是,則獲取與間距計(jì)算有關(guān)的點(diǎn)云。至此,無(wú)論這根鋼筋是否為箍筋,均得到了其平直段點(diǎn)云。然后,根據(jù)這根鋼筋的平直段點(diǎn)云獲取能代表該鋼筋的直線段。遍歷每根鋼筋完成后,基于代表鋼筋的直線段計(jì)算需要進(jìn)行間距檢查的2根鋼筋的間距,并將該間距與間距檢查表中的設(shè)計(jì)間距對(duì)比,從而判斷鋼筋間距是否符合設(shè)計(jì)要求。以下對(duì)各關(guān)鍵步驟進(jìn)行說(shuō)明。 2.3.1 獲取每根鋼筋實(shí)際點(diǎn)云 本步驟的目的是從精配準(zhǔn)后的鋼筋骨架實(shí)際點(diǎn)云中獲取每根鋼筋的實(shí)際點(diǎn)云。 本步驟將以每根鋼筋的設(shè)計(jì)點(diǎn)云為基礎(chǔ),獲取每根鋼筋的實(shí)際點(diǎn)云。每根鋼筋的設(shè)計(jì)點(diǎn)云獲取方法已經(jīng)在第2.2節(jié)鋼筋數(shù)量檢查中介紹,這里不再贅述。獲取某根鋼筋實(shí)際點(diǎn)云的過(guò)程是,對(duì)于該根鋼筋,遍歷其設(shè)計(jì)點(diǎn)云中的每個(gè)點(diǎn),獲取該點(diǎn)以r為半徑的鄰域中所有精配準(zhǔn)后的鋼筋骨架實(shí)際點(diǎn)云中的點(diǎn),并把這些點(diǎn)加入集合P。遍歷完成后,即可得到該根鋼筋的實(shí)際點(diǎn)云P。對(duì)每根鋼筋均進(jìn)行上述處理,即可得到每根鋼筋實(shí)際點(diǎn)云。需要說(shuō)明的是,如果P中存在重復(fù)的點(diǎn),則這些重復(fù)的點(diǎn)只保留一個(gè)。r的取值與第2.2.2節(jié)中r的取值相同。 2.3.2 判斷是否為箍筋 本步驟的目的是判斷鋼筋是否為箍筋,以便為其選擇合適的后續(xù)處理步驟。 因?yàn)殚g距檢查表中包含鋼筋是否為箍筋的信息,所以本步驟結(jié)合間距檢查表來(lái)實(shí)現(xiàn)鋼筋是否為箍筋的判斷。具體來(lái)說(shuō),首先讀取間距檢查表并解析。然后從與鋼筋實(shí)際點(diǎn)云對(duì)應(yīng)的設(shè)計(jì)點(diǎn)云中提取鋼筋I(lǐng)D。接著根據(jù)該鋼筋I(lǐng)D在解析后的間距檢查表獲取該鋼筋是否為箍筋的信息,即可實(shí)現(xiàn)鋼筋是否為箍筋的判斷。 2.3.3 獲取箍筋平直段點(diǎn)云 本步驟的目的是從箍筋實(shí)際點(diǎn)云中提取屬于平直段的點(diǎn)云。本步驟基于隨機(jī)采樣一致(Radnom Sample Consensus,RANSAC)算法實(shí)現(xiàn)箍筋平直段點(diǎn)云的獲取。其中幾何模型選擇直線,因?yàn)楣拷钇街倍吸c(diǎn)云均在該平直段的軸線附近,且該軸線為直線。通常箍筋含有4個(gè)平直段,且其中2個(gè)平直段較長(zhǎng),點(diǎn)云較多,而另外2個(gè)平直段較短,點(diǎn)云較少。根據(jù)RANSAC算法的原理[15]可知,RANSAC算法能夠輸出較長(zhǎng)平直段的點(diǎn)云,但究竟得到的是哪一個(gè)較長(zhǎng)平直段的點(diǎn)云則難以確定。 通常鋼筋骨架平放在模板上,主筋和分布筋平行于模板,而箍筋所在平面垂直于模板,箍筋2個(gè)較長(zhǎng)的平直段則平行于模板,如圖6所示。在精配準(zhǔn)步驟,鋼筋骨架實(shí)際點(diǎn)云所在坐標(biāo)系轉(zhuǎn)換為鋼筋骨架設(shè)計(jì)點(diǎn)云所在坐標(biāo)系。由于鋼筋骨架設(shè)計(jì)點(diǎn)云所在坐標(biāo)系來(lái)自于粗配準(zhǔn)步驟中PCA算法的處理結(jié)果,且該坐標(biāo)系的z軸垂直于模板向上。精配準(zhǔn)后鋼筋骨架實(shí)際點(diǎn)云所在坐標(biāo)系的z軸垂直于模板向上。因此,上述基于RANSAC算法獲取的箍筋較長(zhǎng)的2個(gè)平直段點(diǎn)云中,總是一個(gè)平直段點(diǎn)云中每個(gè)點(diǎn)的z值均大于另一個(gè)平直段點(diǎn)云中每個(gè)點(diǎn)的z值。可以統(tǒng)一選擇z值較大的平直段點(diǎn)云作為獲取的箍筋平直段點(diǎn)云,從而有利于后續(xù)對(duì)箍筋間距的計(jì)算。 圖6 鋼筋骨架 本步驟的具體流程為:首先用以直線為幾何模型的RANSAC算法處理箍筋實(shí)際點(diǎn)云,獲取該箍筋第一個(gè)平直段點(diǎn)云;然后在該箍筋實(shí)際點(diǎn)云中去除第一個(gè)平直段點(diǎn)云,用以直線為幾何模型的RANSAC算法對(duì)剩下的點(diǎn)云進(jìn)行處理,得到該箍筋的第二個(gè)平直段點(diǎn)云;最后選擇z值較大的平直段點(diǎn)云作為本步驟輸出的箍筋平直段點(diǎn)云。 需要說(shuō)明的是,本步驟提取的箍筋平直段點(diǎn)云不含有與該箍筋相交的其他鋼筋的點(diǎn)云,所以本步驟輸出的箍筋平直段點(diǎn)云不含與計(jì)算間距無(wú)關(guān)的點(diǎn)。 2.3.4 獲取與間距計(jì)算有關(guān)的點(diǎn)云 若鋼筋不是箍筋,即鋼筋為主筋或分布筋,則執(zhí)行此步驟。 獲取每根鋼筋實(shí)際點(diǎn)云的步驟是基于參數(shù)r獲取每根鋼筋實(shí)際點(diǎn)云,所以鋼筋實(shí)際點(diǎn)云中會(huì)包含與該鋼筋相交的其他鋼筋的點(diǎn)云。后者與間距計(jì)算無(wú)關(guān),它的存在會(huì)影響間距的計(jì)算,因此需要從鋼筋實(shí)際點(diǎn)云中獲取與間距計(jì)算有關(guān)的點(diǎn)云。 由于主筋和分布筋沒(méi)有彎曲段,只有平直段,所以可以用以直線為幾何模型的RANSAC算法獲取平直段點(diǎn)云,從而提取與間距計(jì)算有關(guān)的點(diǎn)云。具體流程為,用以直線為幾何模型的RANSAC算法處理鋼筋實(shí)際點(diǎn)云,所得內(nèi)點(diǎn)即為與間距計(jì)算有關(guān)的點(diǎn)云。 2.3.5 獲取代表鋼筋的直線段 本步驟的目的是根據(jù)鋼筋的平直段點(diǎn)云,計(jì)算直線段,從而簡(jiǎn)化鋼筋的表示,方便后續(xù)鋼筋間距的計(jì)算。 在“獲取箍筋平直段點(diǎn)云”和“獲取與間距計(jì)算有關(guān)的點(diǎn)云”2個(gè)步驟中,RANSAC算法會(huì)輸出與平直段點(diǎn)云相關(guān)的直線參數(shù),該直線的位置和方向與鋼筋平直段的軸線位置和方向近似,所以本步驟基于該直線和平直段點(diǎn)云獲取代表鋼筋的直線段。 本步驟的具體流程為:首先將鋼筋平直段點(diǎn)云中每個(gè)點(diǎn)向該直線投影,并計(jì)算投影點(diǎn);然后獲取歐式距離最大的2個(gè)投影點(diǎn)。其方法為在所有投影點(diǎn)中任取一點(diǎn),計(jì)算其他所有投影點(diǎn)與該點(diǎn)的歐式距離,記歐式距離最大的一個(gè)投影點(diǎn)為a。最后,計(jì)算所有其他投影點(diǎn)與a的歐式距離,記歐式距離最大的投影點(diǎn)為b。a和b即為歐式距離最大的2個(gè)投影點(diǎn),亦為直線段的2個(gè)端點(diǎn)。至此,得到了代表該鋼筋的直線段。 2.3.6 計(jì)算鋼筋間距并判斷是否合格 在本步驟中用代表鋼筋直線段的間距計(jì)算來(lái)替代鋼筋間距的計(jì)算。 規(guī)范[10]規(guī)定鋼筋間距的檢查方法為,用鋼尺在需要檢查間距的2根鋼筋的2個(gè)端部和中間各量測(cè)1次距離,然后計(jì)算3次量測(cè)距離與設(shè)計(jì)間距的最大偏差值,再將該最大偏差值與規(guī)范容許最大偏差值比較。 本文基于該檢查方法設(shè)計(jì)本步驟的流程。假定需要檢測(cè)間距的2根鋼筋的直線段分別為m和n,首先分別計(jì)算直線段m的2個(gè)端點(diǎn)和中點(diǎn)距離直線段n所在直線的歐式距離。其次分別計(jì)算直線段n的2個(gè)端點(diǎn)和中點(diǎn)距離直線段m所在直線的歐式距離。然后計(jì)算這實(shí)際間距與設(shè)計(jì)間距的最大偏差值,判斷鋼筋間距是否合格。如果最大偏差值大于規(guī)范容許最大偏差值,則不合格,否則合格。 為了驗(yàn)證本文提出的算法的可行性,開(kāi)展了相關(guān)試驗(yàn)。首先根據(jù)標(biāo)準(zhǔn)圖集建立了鋼筋骨架的BIM模型,并根據(jù)該BIM模型實(shí)際制作了鋼筋骨架試件。其次用文獻(xiàn)[6]中的方法獲取該鋼筋骨架的設(shè)計(jì)點(diǎn)云,并基于圖優(yōu)化方法獲取該鋼筋骨架的實(shí)際點(diǎn)云。最后用本文提出的算法處理該鋼筋骨架的實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云,并分析鋼筋數(shù)量和間距檢查結(jié)果的準(zhǔn)確率。 本試驗(yàn)根據(jù)標(biāo)準(zhǔn)圖集[16]建立的鋼筋骨架BIM模型如圖7所示,用文獻(xiàn)[16]中的方法得到該鋼筋骨架的設(shè)計(jì)點(diǎn)云如圖8所示。根據(jù)該BIM模型建立的鋼筋骨架及其尺寸如圖9所示。由于工人制作鋼筋時(shí)粗心,導(dǎo)致實(shí)際制作的鋼筋骨架缺少2根箍筋,這2根箍筋如圖7中虛線所示。本試驗(yàn)基于圖優(yōu)化方法得到該鋼筋骨架的實(shí)際點(diǎn)云,如圖10所示。 圖7 鋼筋骨架BIM模型 圖8 鋼筋骨架設(shè)計(jì)點(diǎn)云 圖9 鋼筋骨架及其尺寸 圖10 鋼筋骨架實(shí)際點(diǎn)云 當(dāng)前預(yù)制構(gòu)件廠在預(yù)制鋼筋混凝土構(gòu)件鋼筋骨架制作中普遍采用焊接封閉箍筋,而非普通封閉箍筋,所以圖9中的鋼筋骨架也采用焊接封閉箍筋。然而,目前在主流BIM建模軟件Revit中尚不能繪制焊接封閉箍筋,只能繪制普通封閉箍筋,這將導(dǎo)致箍筋的BIM模型與其實(shí)際情況不同,給鋼筋骨架質(zhì)量檢查帶來(lái)不良影響。為了讓鋼筋骨架BIM模型能夠與鋼筋骨架的實(shí)際情況吻合,本研究采取的措施是,在Revit軟件中繪制有開(kāi)口的箍筋,開(kāi)口長(zhǎng)度為20 mm,如圖11所示。由于箍筋開(kāi)口較小,所以對(duì)鋼筋骨架質(zhì)量檢查帶來(lái)的影響可以忽略不計(jì)。 圖11 在Revit中繪制的有開(kāi)口箍筋 間距檢查表通過(guò)手工錄入生成,其包含的信息為鋼筋I(lǐng)D,是否為箍筋,與其相鄰鋼筋的ID、設(shè)計(jì)間距。由于間距檢查表中的信息包括鋼筋I(lǐng)D和相鄰鋼筋I(lǐng)D,所以2根相鄰鋼筋會(huì)在間距檢查表中產(chǎn)生2條數(shù)據(jù),即“鋼筋I(lǐng)D1,相鄰鋼筋I(lǐng)D2,……”和“鋼筋I(lǐng)D2,相鄰鋼筋I(lǐng)D1,……”,這會(huì)導(dǎo)致鋼筋間距的重復(fù)計(jì)算,降低算法的效率。為此,在間距檢查表中對(duì)相鄰鋼筋只保留一條數(shù)據(jù)。 由于試驗(yàn)所用鋼筋骨架中鋼筋種類(lèi)較多,且同種鋼筋的軸線方向可能不同,所以只對(duì)同種鋼筋中軸線方向相同的鋼筋檢查間距。 此外,由于試驗(yàn)所用鋼筋骨架包含主筋、箍筋和分布筋,且每種鋼筋數(shù)量較多,為了后續(xù)更方便地表示試驗(yàn)結(jié)果,預(yù)先對(duì)各鋼筋進(jìn)行編號(hào),如圖12、13中數(shù)字所示。圖12表示平放在模板上的鋼筋骨架的上層鋼筋,圖13表示平放在模板上的鋼筋骨架的下層鋼筋,箍筋的編號(hào)只在圖12中出現(xiàn)。 圖12 鋼筋骨架上層鋼筋的編號(hào) 圖13 鋼筋骨架下層鋼筋的編號(hào) 使用本文提出的算法對(duì)第3.1節(jié)的試驗(yàn)數(shù)據(jù)進(jìn)行處理,即可得到鋼筋數(shù)量檢查結(jié)果。手動(dòng)將該檢查結(jié)果可視化,如圖14所示。在圖14中,鋼筋旁邊的數(shù)字代表該根鋼筋的編號(hào),鋼筋旁邊的“是”和“否”分別表示本文提出的算法檢查到這根鋼筋是否存在。 圖14 鋼筋數(shù)量檢查結(jié)果 從圖14可以看出,本文算法檢測(cè)到有2根鋼筋不存在,而其余鋼筋都存在。這2根不存在的鋼筋正是圖9中被工人由于粗心而忘記綁扎的鋼筋。從試驗(yàn)結(jié)果可以得到,本文提出的鋼筋數(shù)量檢查算法可以檢查鋼筋骨架中每根鋼筋是否存在,且檢查結(jié)果的準(zhǔn)確率為100%。 使用本文提出的算法對(duì)第3.1節(jié)的試驗(yàn)數(shù)據(jù)進(jìn)行處理,即可得到鋼筋間距的檢查結(jié)果。鋼筋間距檢查結(jié)果可以分為4種情況: (1)鋼筋間距實(shí)際合格,被算法判定為合格,這稱(chēng)為T(mén)rue Positive(TP)。 (2)鋼筋間距實(shí)際合格,被算法判定為不合格,這稱(chēng)為False Negative(FN)。 (3)鋼筋間距實(shí)際不合格,被算法判定為合格,這稱(chēng)為False Positive(FP)。 (4)鋼筋間距實(shí)際不合格,被算法判定為不合格,這稱(chēng)為T(mén)rue Negative(TN)。 將鋼筋間距檢查結(jié)果可視化,如圖15所示。在圖15中,“nTP”“nFN”“nFP”和“nTN”中的n表示鋼筋間距的編號(hào)。 圖15 鋼筋間距檢查結(jié)果 把屬于True Positive情況的鋼筋間距個(gè)數(shù)記為nTPs,屬于False Negative情況的鋼筋間距個(gè)數(shù)記為nFNs,屬于False Positive情況的鋼筋間距個(gè)數(shù)記為nFPs,屬于True Negative情況的鋼筋間距個(gè)數(shù)記為nTNs。顯然,當(dāng)nTPs和nTNs越大,nFNs和nFPs越小,鋼筋間距檢查結(jié)果就越好。本試驗(yàn)鋼筋間距檢查結(jié)果中,nTPs為23,nFPs為1,nFNs為6,nTNs為5。 本文以精確率(Precision,記為P)和準(zhǔn)確率(Accuracy,記為A)來(lái)衡量鋼筋間距檢查結(jié)果,其計(jì)算公式分別如式(2)、(3)所示。 (2) (3) 根據(jù)以上公式可得,本試驗(yàn)中鋼筋間距檢查結(jié)果的準(zhǔn)確率為80%,精確率為95.8%。這說(shuō)明實(shí)際鋼筋間距合格且被算法判定為合格和實(shí)際鋼筋間距不合格且被算法判定為不合格的個(gè)數(shù)占總個(gè)數(shù)的比例為80%,實(shí)際鋼筋間距合格且被算法判斷為合格的個(gè)數(shù)占所有被算法判斷為合格的個(gè)數(shù)的比例為95.8%。 (1)針對(duì)當(dāng)前研究提出的鋼筋骨架質(zhì)量檢查方法不適用于實(shí)際工程復(fù)雜鋼筋骨架,不能兼顧主筋和箍筋質(zhì)量檢查,需要人工參與檢查等問(wèn)題,本文提出了基于點(diǎn)云的鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查算法。 (2)相比于當(dāng)前各項(xiàng)研究提出的鋼筋骨架質(zhì)量檢查方法,本文提出的基于點(diǎn)云的鋼筋骨架質(zhì)量檢查算法能夠?qū)こ讨袕?fù)雜鋼筋骨架進(jìn)行自動(dòng)質(zhì)量檢查,檢查內(nèi)容包括主筋、箍筋和分布筋的數(shù)量和間距。該算法在獲取鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云的基礎(chǔ)上,首先對(duì)這2片點(diǎn)云分別進(jìn)行降采樣;其次對(duì)降采樣后的鋼筋骨架實(shí)際點(diǎn)云和設(shè)計(jì)點(diǎn)云進(jìn)行粗配準(zhǔn);然后對(duì)它們進(jìn)行精配準(zhǔn);最后基于精配準(zhǔn)后得到的點(diǎn)云,依次對(duì)鋼筋骨架中的鋼筋數(shù)量和鋼筋間距進(jìn)行檢查。根據(jù)試驗(yàn)結(jié)果,鋼筋數(shù)量檢查結(jié)果的準(zhǔn)確率為100%,鋼筋間距檢查結(jié)果的準(zhǔn)確率為80%。 (3)本文提出的基于點(diǎn)云的鋼筋骨架中鋼筋數(shù)量和間距的自動(dòng)檢查算法能夠有效降低鋼筋骨架質(zhì)量檢查工作量,提高鋼筋骨架質(zhì)量檢查效率。今后將繼續(xù)研究鋼筋骨架中鋼筋直徑的自動(dòng)檢測(cè)算法,從而徹底解決基于點(diǎn)云的鋼架骨架自動(dòng)質(zhì)量檢查問(wèn)題。2.3 鋼筋間距檢查
3 試驗(yàn)驗(yàn)證
3.1 試驗(yàn)數(shù)據(jù)準(zhǔn)備
3.2 鋼筋數(shù)量檢查試驗(yàn)結(jié)果
3.3 鋼筋間距檢查試驗(yàn)結(jié)果
4 結(jié) 語(yǔ)