范秋生,潘紋,劉培俊
點(diǎn)云處理軟件的開發(fā)
范秋生1,潘紋1,劉培俊2
(1.黃岡職業(yè)技術(shù)學(xué)院,湖北 黃岡 438002;2.徐州工程機(jī)械集團(tuán)有限公司,江蘇 徐州 221000)
為了處理圖像中的三維點(diǎn)云數(shù)據(jù),在本地計(jì)算機(jī)上對(duì)3D視覺測(cè)量?jī)x采集的點(diǎn)云數(shù)據(jù)進(jìn)行半徑及面積測(cè)量與誤差分析,設(shè)計(jì)一個(gè)可供下載安裝的App以便于后續(xù)實(shí)驗(yàn)教學(xué)工作。因?yàn)槠潼c(diǎn)云及圖像處理功能非常強(qiáng)大,且用MATLAB App Designer來開發(fā)App比較簡(jiǎn)便,方便調(diào)試修改,因此采用的是MATLAB 2019b版本進(jìn)行App開發(fā)。對(duì)App進(jìn)行性能測(cè)試,分別進(jìn)行多次重復(fù)實(shí)驗(yàn),觀察實(shí)驗(yàn)結(jié)果,并作出誤差分析,證明點(diǎn)云App測(cè)量重復(fù)性及穩(wěn)定性精度較好。通過點(diǎn)云處理可以從中分離提取出精度高、效果好的點(diǎn)云數(shù)據(jù)。
點(diǎn)云及圖像處理 ;MATLAB軟件;半徑及面積測(cè)量 ;誤差分析
精密測(cè)量是先進(jìn)制造的基礎(chǔ),在高等教育中開展先進(jìn)的精密測(cè)量可以接觸前沿技術(shù)、開闊學(xué)生視野、構(gòu)建新時(shí)代知識(shí)體系。為此,本團(tuán)隊(duì)利用編程技術(shù)和MATLAB點(diǎn)云分析工具箱,構(gòu)建了遠(yuǎn)程控制3D視覺檢測(cè)實(shí)驗(yàn)平臺(tái),實(shí)現(xiàn)學(xué)生的遠(yuǎn)程實(shí)驗(yàn)教學(xué)工作。在實(shí)驗(yàn)室現(xiàn)有的3D視覺測(cè)量?jī)x基礎(chǔ)上,設(shè)計(jì)一種遠(yuǎn)程控制實(shí)驗(yàn)平臺(tái),使得用戶可以在遠(yuǎn)程控制實(shí)驗(yàn)室的3D視覺測(cè)量?jī)x對(duì)激光雷達(dá)芯片基板進(jìn)行測(cè)量操作并生成點(diǎn)云數(shù)據(jù);通過點(diǎn)云數(shù)據(jù)遠(yuǎn)程傳輸?shù)奖镜赜?jì)算機(jī),進(jìn)而在本地計(jì)算機(jī)上利用點(diǎn)云處理App進(jìn)行點(diǎn)云數(shù)據(jù)分析等。
MATLAB App Designer是Mathworks公司在MATLAB R2016a中正式推出的代替GUIDE的產(chǎn)品。對(duì)界面控件進(jìn)行了徹底的升級(jí),這也是 MATLAB從圖形化到面向?qū)ο蟮闹饕獞?yīng)用。它的目標(biāo)是順應(yīng)網(wǎng)絡(luò)趨勢(shì),能夠使用戶在新的圖形系統(tǒng)的基礎(chǔ)上,方便地進(jìn)行圖形用戶界面的設(shè)計(jì)。在此基礎(chǔ)上,用戶可以利用軟件設(shè)計(jì)工具,通過拖放界面組件的方式,實(shí)現(xiàn)了圖形用戶界面的設(shè)計(jì)和布局,并利用集成程序編輯器實(shí)現(xiàn)相應(yīng)的算法模塊,從而開發(fā)出特定功能的App。本文基于MATLAB App Designer開發(fā)了一款A(yù)pp用于測(cè)量激光雷達(dá)芯片基板的面積及半徑。
打開MATLAB主界面后可在新建選項(xiàng)中選擇“App”或直接在命令行輸入“appdesigner”回車,即可進(jìn)入App Designer界面。此界面主要有四個(gè)部分,分別是組件庫(kù)、設(shè)計(jì)/代碼視圖區(qū)、組件瀏覽器以及組件屬性。組件庫(kù)中有各種組件,用戶可拖選使用;在設(shè)計(jì)/代碼視圖區(qū),用戶可以切換設(shè)計(jì)與代碼視圖,完成界面設(shè)計(jì)及代碼編寫;組件瀏覽器用來管理或重命名已添加的組件,便于代碼編寫時(shí)調(diào)用及區(qū)分回調(diào)函數(shù);右下側(cè)的組件屬性區(qū)域,可更改編輯組件大小、顏色等基礎(chǔ)屬性。
按照本文需求,需要設(shè)計(jì)一個(gè)點(diǎn)云處理App,所以首先需要兩個(gè)坐標(biāo)區(qū),一個(gè)用來顯示每次進(jìn)行點(diǎn)云處理前的原始點(diǎn)云,另一個(gè)顯示經(jīng)過處理后的點(diǎn)云。
其次需要許多按鈕用來操作每個(gè)點(diǎn)云處理步驟,思路如下:讀取并顯示點(diǎn)云;初始點(diǎn)云去噪;ROI提?。ㄟx定特征較好的區(qū)域);點(diǎn)云降采樣;點(diǎn)云聚類分割;平面擬合;點(diǎn)云二次去噪;點(diǎn)云邊緣提?。粓A半徑及面積提取。
最后點(diǎn)云數(shù)據(jù)處理完成后,需要四個(gè)顯示最終數(shù)據(jù)的文本框,即面積、半徑、面積相對(duì)誤差、半徑相對(duì)誤差[1]。
本文點(diǎn)云處理及面積提取算法選取了最適合測(cè)量對(duì)象激光雷達(dá)芯片基板的點(diǎn)云數(shù)據(jù)的相關(guān)點(diǎn)云去噪、平面擬合、邊緣提取算法以及二值圖像面積提取算法等[2]。初始點(diǎn)云數(shù)據(jù)由實(shí)驗(yàn)室現(xiàn)有的3D視覺測(cè)量?jī)x采集,再通過設(shè)計(jì)的遠(yuǎn)程控制程序下載到用戶本地計(jì)算機(jī),接著通過各種點(diǎn)云算法進(jìn)行對(duì)初始點(diǎn)云數(shù)據(jù)的一系列處理,選出對(duì)此數(shù)據(jù)處理效果最好的各種算法。
經(jīng)大量搜集資料,在App中顯示點(diǎn)云圖像可采用scatter3()函數(shù)或plot3()函數(shù),在進(jìn)行反復(fù)實(shí)驗(yàn)后,發(fā)現(xiàn)plot3()函數(shù)更加適用于本文中的點(diǎn)云數(shù)據(jù),因?yàn)楸疚狞c(diǎn)云較為密集。scatter3()函數(shù)顯示點(diǎn)云時(shí)會(huì)將每個(gè)點(diǎn)都顯示為有一定體積的球狀,不利于觀察點(diǎn)云圖像;plot3()函數(shù)則是將每個(gè)點(diǎn)顯示為幾乎無(wú)體積的圓點(diǎn),不影響觀察。示例如圖1和圖2所示。
圖1 plot3()顯示點(diǎn)云
圖2 scatter3()顯示點(diǎn)云
實(shí)驗(yàn)室3D視覺測(cè)量?jī)x獲取n行3列的數(shù)據(jù)是.mat格式,讀取點(diǎn)云數(shù)據(jù)本文采用load()函數(shù),讀取之后再將三列數(shù)據(jù)分別賦給x,y,z,再用pcwrite()保存為.ply格式的點(diǎn)云數(shù)據(jù),最后進(jìn)行點(diǎn)云顯示,即上述plot3()函數(shù)。效果如圖3所示。
圖3 初始點(diǎn)云圖像
按照點(diǎn)云處理步驟,顯示點(diǎn)云之后是初始點(diǎn)云濾波,在各種濾波算法經(jīng)過對(duì)比實(shí)驗(yàn)后本文選擇統(tǒng)計(jì)濾波作為初始濾波去除高斯噪聲,因?yàn)榻y(tǒng)計(jì)濾波去除無(wú)關(guān)的主體內(nèi)高斯噪聲效率較高,且計(jì)算時(shí)間相對(duì)于雙邊濾波、半徑濾波等較短,有效縮短處理時(shí)間。統(tǒng)計(jì)濾波在MATLAB中有具體函數(shù)如下:
ptCloudOut=(ptCloudIn02,'NumNeighbors', 20,'Threshold',1.0);
在進(jìn)行統(tǒng)計(jì)濾波時(shí)需要確定兩個(gè)參數(shù)k和std,即上述函數(shù)中的NumNeighbors與Threshold,在初始濾波中本文將其設(shè)定為20和1.0,這是經(jīng)不斷實(shí)驗(yàn)得出的效果較好的一組參數(shù)。原始點(diǎn)云數(shù)據(jù)點(diǎn)數(shù)為436638,濾波后點(diǎn)云個(gè)數(shù)實(shí)驗(yàn)結(jié)果如表1所示。
表1 統(tǒng)計(jì)濾波參數(shù)對(duì)應(yīng)濾波后點(diǎn)云點(diǎn)數(shù)
上表1可見對(duì)原始點(diǎn)云數(shù)據(jù)濾波效果最好的一組參數(shù)為k=20,std=1.0,濾波效果如圖4所示。
圖4 初始點(diǎn)云去噪
在MATLAB點(diǎn)云處理中有一個(gè)函數(shù)findPointsInROI(region of interest),可以根據(jù)坐標(biāo)的范圍,返回一個(gè)對(duì)應(yīng)點(diǎn)云中的序列,通過select函數(shù)就可以進(jìn)一步提取出對(duì)應(yīng)的點(diǎn)云?;诖耍紫却_定要提取的點(diǎn)云坐標(biāo)范圍,在顯示點(diǎn)云后,通過旋轉(zhuǎn)、平移等操作觀察特征良好區(qū)域的大致坐標(biāo)范圍,根據(jù)次坐標(biāo)范圍設(shè)置ROI提取區(qū)域roi = [-20 10 -30 -10 -200 0];前兩個(gè)數(shù)代表x坐標(biāo)范圍,中間兩個(gè)數(shù)代表y坐標(biāo)范圍,最后兩個(gè)數(shù)代表z坐標(biāo)范圍。
找到位于長(zhǎng)方體ROI內(nèi)的點(diǎn)的索引,選擇位于長(zhǎng)方體ROI內(nèi)的點(diǎn)并存儲(chǔ)為點(diǎn)云對(duì)象,同時(shí)顯示ROI內(nèi)的點(diǎn)云如圖5所示。
圖5 點(diǎn)云ROI提取
本文中點(diǎn)云聚類分割采用的是歐式聚類分割,在MATLAB中有對(duì)應(yīng)的函數(shù)如下:
[labels,numClusters]= pcsegdist(ptCloud,minDistance)
含義是在返回所有標(biāo)簽(labels)的同時(shí),返回集群(numClusters)的數(shù)量,peCloud為被處理點(diǎn)云,minDistance為最小聚類歐式距離。聚類分割如圖6所示。
圖6 點(diǎn)云聚類分割
在經(jīng)過驗(yàn)證的兩種平面擬合算法中,最終選擇隨機(jī)抽樣一致算法(RANSAC),該算法需要認(rèn)為確定擬合距離minDistance,對(duì)此展開實(shí)驗(yàn),設(shè)定擬合距離為0.30,0.31,0.32,0.33,0.34,0.35分別對(duì)初始點(diǎn)數(shù)為13636的點(diǎn)云進(jìn)行平面擬合,效果如表2所示。
表2 平面擬合實(shí)驗(yàn)
基于表2數(shù)據(jù),可見擬合距離0.31和0.32效果都較好,因此在App中可設(shè)置一個(gè)數(shù)字框來人為設(shè)定擬合距離,以求在后續(xù)半徑及面積提取時(shí)可以取得最優(yōu)解。界面如圖7所示,上面為平面擬合內(nèi)點(diǎn)點(diǎn)云,下面為平面擬合外點(diǎn)點(diǎn)云即去除的部分。平面擬合按鈕下的數(shù)字框可輸入-5至+5的數(shù)進(jìn)行擬合距離調(diào)整以便求取最優(yōu)半徑和面積。
圖7 點(diǎn)云平面擬合
由于平面擬合后的點(diǎn)云邊緣會(huì)存在毛刺以及散亂噪聲,對(duì)后續(xù)邊緣數(shù)據(jù)提取不利,因此本文有必要在邊緣提取前對(duì)平面擬合點(diǎn)云進(jìn)行再一次去噪,使點(diǎn)云更加平滑,便于提取更加完整的圓形輪廓[3]。此次去噪處理不同于初始點(diǎn)云去噪,初始點(diǎn)云數(shù)據(jù)量大且有很多主體外噪聲,而此處平面擬合點(diǎn)云無(wú)主體外噪聲,只有主體內(nèi)噪聲,所以本文在此設(shè)立了一個(gè)切換按鈕組,可在統(tǒng)計(jì)濾波、雙邊濾波以及半徑濾波三種濾波方式中任選一種或全部嘗試取最優(yōu)解。具體操作如圖8、圖9和圖10所示,點(diǎn)開按鈕組,選中并點(diǎn)擊其中一項(xiàng),接著在上面坐標(biāo)區(qū)顯示二次去噪前的點(diǎn)云,下面坐標(biāo)區(qū)會(huì)顯示二次去噪后的點(diǎn)云圖像,并在圖像上標(biāo)注去噪方式,可明顯觀察到點(diǎn)云更加平滑,噪聲大幅度減弱。
圖8 點(diǎn)云二次去噪(統(tǒng)計(jì)濾波)
圖9 點(diǎn)云二次去噪(雙邊濾波)
圖10 點(diǎn)云二次去噪(半徑濾波)
首先將上一環(huán)節(jié)二次去噪的點(diǎn)云進(jìn)行聚類分割以求邊緣更加清晰,然后對(duì)二次去噪后的點(diǎn)云進(jìn)行邊緣提取,根據(jù)邊緣提取原理以及本文采取的邊緣提取算法,將Sobel算子與Canny算子進(jìn)行對(duì)比,取邊緣提取效果較好的Canny算子,并將處理后的二值圖像顯示在上面坐標(biāo)區(qū),用戶可根據(jù)邊緣提取的效果選擇是否更換二次去噪方式。若效果較好,則繼續(xù)進(jìn)行下一步圓半徑及面積提取;若效果較差,則返回上一個(gè)按鈕組重新選擇去噪方式,接著再次進(jìn)行邊緣提取。二次去噪選擇統(tǒng)計(jì)濾波效果顯示如圖11,上坐標(biāo)區(qū)左側(cè)為Sobel算子圖像,右側(cè)為Canny算子圖像,可明顯觀察到右側(cè)圖像圓形區(qū)域特征良好,有利于圓半徑及面積提取。
圖11 點(diǎn)云邊緣提取
在App中實(shí)現(xiàn)如圖12,點(diǎn)擊圓半徑及面積提取按鈕即可開始測(cè)量,其下方數(shù)據(jù)框?yàn)闇y(cè)量結(jié)果以及相對(duì)誤差顯示。
測(cè)量結(jié)果為:半徑1.521(mm),相對(duì)誤差1.374%;面積7.145(mm2),相對(duì)誤差1.081%。半徑標(biāo)準(zhǔn)值為1.5(mm),面積標(biāo)準(zhǔn)值7.069(mm2)。
圖12 App圓半徑及面積提取
本文實(shí)驗(yàn)?zāi)>邩?biāo)準(zhǔn)值為圓面積7.06mm2,圓半徑1.5mm。
采用上述點(diǎn)云處理App對(duì)同一初始點(diǎn)云10個(gè)不同位置進(jìn)行測(cè)量,將測(cè)量數(shù)據(jù)制作表格如表3 所示。
表3 同一點(diǎn)云不同位置測(cè)量數(shù)據(jù)結(jié)果
由表3數(shù)據(jù)可見,對(duì)相同點(diǎn)云的不同位置測(cè)量結(jié)果相對(duì)誤差不超過±5%,說明本文所設(shè)計(jì)的點(diǎn)云處理App測(cè)量準(zhǔn)確性較好。
對(duì)六個(gè)不同初始點(diǎn)云的同一位置進(jìn)行測(cè)量,將測(cè)量數(shù)據(jù)制作表格如表4所示 。
由表4可見,對(duì)不同點(diǎn)云的相同位置測(cè)量的數(shù)據(jù)相對(duì)誤差不超過±5%,可以體現(xiàn)本文點(diǎn)云處理App的準(zhǔn)確性與靈活性。
表4 不同點(diǎn)云相同位置測(cè)量數(shù)據(jù)結(jié)果
對(duì)同一點(diǎn)云同一位置重復(fù)測(cè)量十次,測(cè)量結(jié)果如表5所示。
表5 同一點(diǎn)云相同位置測(cè)量數(shù)據(jù)結(jié)果
由表5數(shù)據(jù)可見本文點(diǎn)云App測(cè)量重復(fù)性及穩(wěn)定性精度較好,相對(duì)誤差均在在±3%以內(nèi)。
本文基于MATLAB App Designer開發(fā)了一款A(yù)pp用于測(cè)量激光雷達(dá)芯片基板的面積及半徑,主要介紹了點(diǎn)云處理App的設(shè)計(jì)過程及成果展示,描述了點(diǎn)云處理各個(gè)環(huán)節(jié)的設(shè)計(jì)思路及成果展示,重點(diǎn)介紹了各環(huán)節(jié)參數(shù)選取的方法與過程,并對(duì)比實(shí)驗(yàn)觀察不同參數(shù)下的處理效果。對(duì)本文點(diǎn)云處理App的測(cè)量準(zhǔn)確性、穩(wěn)定性、重復(fù)性進(jìn)行了實(shí)驗(yàn)分析,證明了此App有能力達(dá)到任務(wù)的要求。
[1]王曉春.基于點(diǎn)云圖像處理的零部件精度測(cè)量方法 研究[D].西安電子科技大學(xué),2021.
[2]李雷輝.基于3D視覺傳感器的工業(yè)零件表面質(zhì)量檢測(cè)關(guān)鍵技術(shù)研究[D].天津理工大學(xué),2021.
[3]童子良.空間散亂三維點(diǎn)云數(shù)據(jù)處理與規(guī)則曲面點(diǎn)云擬合[D].安徽理工大學(xué),2021.
TP311.564
A
1672-1047(2023)05-0140-05
10.3969/j.issn.1672-1047.2023.05.36
2023-09-06
范秋生,男,湖北浠水人,副教授。研究方向:計(jì)算機(jī)技術(shù)應(yīng)用。
[責(zé)任編輯:羅幼平]