陳鑌,黃曉權
(武夷學院 機電工程學院,福建 武夷山 354300)
摘要:激光掃描測距儀以飛思卡爾MK60DN512ZVLQ10微控制器為處理及控制的核心單元,通過CMOS圖像傳感器對線狀激光在物體上形成截面反射進行實時捕捉采集圖像,利用DMA快速儲存方式存儲圖像,并對圖像進行分析處理獲得激光的坐標,再結合舵機旋轉掃描獲得多列數據,最終將數據轉化為各點的三維坐標,由此獲得掃描物體或場景的三維點云數據并實現三維模型重建。該設計方案可靠,成本低廉,同時擁有良好的測量精度。
關鍵詞:激光掃描;CMOS圖像傳感器;飛思卡爾MK60;點云數據;3D模型重建
0引言
人類對于外界事物的感知80%是通過視覺來獲取的[1]。而通過激光掃描實現的實景復制則可以很好地重現立體視覺感知,所以3D掃描技術具有相當廣泛的用途,例如工業設計、機器人導航、地貌測量、逆向工程、數字文物典藏、生物信息、電影制片、游戲素材創作等都可應用。
但3D激光掃描研究更多地被應用于大型工程精確測量中,實際用于家庭及個人的民用低成本研究相對較少,并且成熟的設計方案也不多。因此研究低成本并具有良好性能的激光掃描測距儀有十分重要的現實意義和市場價值。
1激光掃描儀系統結構
本設計基于飛思卡爾公司Kinetis系列的MK60DN512ZVLQ10(K60)ARM CortexM4內核架構的微處理器,其外圍功能豐富,最高主頻可達100 MHz,具有強大的數據處理能力和豐富的功能外設,具備了所需的PWM、DMA、IIC等功能模塊,并且擁有FlexBus存儲接口,支持外部SRAM的擴展[2]。具體的系統結構圖如圖1所示。
激光掃描系統不僅需要控制舵機完成圖像序列掃描,而且需要實時采集大量的圖像數據,并對這些圖像數據進行分析處理生成精確的點云數據。所以系統對ARM的控制要求較高,它不僅要負責傳感器的控制和數據傳輸,還需外擴SRAM用于圖像存儲,同時為了提高數據傳輸速率還需配置DMA通道,完成采集和執行數據處理算法,計算出點云數據再通過UART輸出到計算機。該系統結構能夠充分利用控制器的內部資源,提高運行效率。同時也讓掃描變得更靈活,控制器可以不依賴計算機單獨運行,最后的數據輸出可以通過藍牙無線傳送。
2圖像采集和存儲
2.1OV7670圖像傳感器的采集
型號為OV7670的圖像傳感器是市面上較為常見并且價格較低的一款可編程傳感器,很適合運用于嵌入式的底層設計。為了便于調試觀察可將圖像傳感器配置為輸出固定QVGA的八色的色條測試圖案。圖像傳感器默認的圖案數據輸出格式為YUV的YUYV(4∶2∶2)。為了便于數據觀察,將U值和V值的輸出配置成固定值,在上位機只顯示Y值即灰度值,效果如圖2。
測試圖案的采集涉及到的寄存器配置相對較少,而拍攝圖像的采集要涉及到上百個寄存器的配置,其中關鍵的配置在于時鐘,時鐘的配置直接影響到圖像采集是否成功。這涉及到微處理器地址0X11內部時鐘的選擇和0X6B內部PLL控制這兩個關鍵寄存器的配置。對0X11使用內部時鐘并二分頻,0X6B中PLL配置為輸入時鐘×4,即可正常使用OV7670采集圖像數據,通過OV7670采集得到的部分灰度圖像如圖3所示。
2.2SRAM的擴展和圖像的完整采集與存儲
對于圖像傳感器采集的大量數據,一般的微控制器自帶的SRAM根本不夠存儲,由計算可得一幀YUV格式的QVGA至少要占用150 KB的容量,而微控制器自帶的SRAM只有128 KB,不能完整地存儲一幀YUV格式的QVGA圖像。所以圖像的存儲便涉及到SRAM的擴展。SRAM的擴展可以通過外部存儲和設備控制總線接口FlexBus實現。分配的外部SRAM分別進行全范圍的8位、16位和32位的寫入讀出操作,通過判斷數據的正確與否來驗證外部SRAM是否正確驅動。對QVGA圖像的完整采集和存儲就要結合圖像傳感器的采集和外部SRAM的存儲。實現兩者之間的連接可以直接將DMA的目標地址指向外部SRAM的基地址,從而完整地存儲圖像傳感器采集的數據,在實現QVGA八色顏色條的采集和存儲基礎上,對拍攝圖像同樣進行采集和存儲,如下圖4、5所示。圖4完整的QVGA八色顏色條灰度顯示
3點云數據計算及3D模型重建
要獲得點云數據就需要先進行圖像分析,識別出激光光斑的像素坐標并處理輸出,再根據原理分析公式與實際校正數據擬合的曲線公式計算獲得實際距離,并由幾何計算獲得整列激光各點的實際距離值,同時結合舵機進行轉角掃描獲得多列距離數據,最后由距離數據再經三維坐標的轉換獲得點云數據。之后,將點云數據傳輸到計算機并導入第三方模型編輯軟件,實現3D模型的重建。
3.1圖像分析和處理
圖像采集和輸出中一直只用Y值即灰度值,所以圖像分析也用Y值進行分析。Y值的范圍為0X00~0XFF,0X00為黑色,0XFF為白色,激光光斑的值是每行中最高的,因為激光光斑實質是反射的光源,而激光正是定向發光且亮度極高的光源,另外由于圖像傳感器加裝了紅外慮光片,很好地削弱了可見光,保留了紅外激光。但激光光斑并不是僅占一個像素點,所以應該以激光光斑像素點中的最高值代表激光光斑中心的位置[3]。圖像分析算法可以逐行求出Y的最高值以確定激光光斑中心的位置,再輸出轉換計算后的坐標值。如下圖6所示。
3.2曲線擬合
公式中運用的參數在實際中并不能準確地由測量獲得,所以這些參數應以實際的校正為準。本設計結合攝像頭的參數,采用指數函數曲線進行擬合[4]。從擬合結果中可以看出,擬合公式和采集的數據吻合度還是非常高的,如下圖7所示,曲線擬合的公式將可以實現縱列中點的單點測距,公式如下:
3.3整列激光各點實際距離的計算
在求得了單點激光距離的基礎上,再擴展到整列激光各點的實際距離計算,同時在求出垂線距離d’后,需再經過幾何計算轉化為實際的距離D,如圖8所示,進行距離計算分析[5]。
3.4整列激光各點實際距離的計算
點云數據是掃描物體外表面各點三維坐標的集合,點云數據的計算實質就是對各點激光的實際距離經幾何計算轉換為三維坐標的過程[5]。三維坐標求解公式如下:
pX=real_distance×cos(pitch_angle)×sin(yaw_angle+CurrentAngle×π/180)
pY=real_distance×cos(pitch_angle)×cos(yaw_angle+CurrentAngle×π/180)
pZ=real_distance×sin(-pitch_angle)
本設計中3D模型的重建直接采用第三方模型編輯軟件Meshlab,需要將點云數據從系統傳輸至計算機并保存成軟件能夠查看的文件格式如:.txt、.ply或.xyz文件。
最終得到的3D重建效果如圖9、10所示。圖9掃描的真實環境圖像
4結論
經過實驗測試,基于飛思卡爾K60激光掃描測距儀在0~3 m范圍內的掃描精度為0.045 m,并且整個系統可靠,價格低廉。該設計使用圖103D掃描重建的正視效果
便攜掃描的方案,讓3D掃描儀能方便地運用于不同場合,如家用小場景小模型的三維掃描、機器人的智能導航、室內復雜場景三維建模等。同時自主研究了一套圖像傳感器底層嵌入式驅動的方法,具有廣泛的應用價值。
參考文獻
[1] 湛金輝.基于激光和CCD的三維重建關鍵技術研究[D].南昌:南昌航空大學,2008.
[2] 飛思卡爾技術部.ARM CortexM4高性能MCU:Kinetis K系列[EB/OL].(20151207)http://www.freescale.com/zhHans/webapp/sps/site/taxonomy.jsp?code=KINETIS_K_SERIES&cof=0&am=0.
[3] 向勁松,吳金勇,李曉雙,等.高幀頻激光光斑采集系統設計[J].電子技術應用,2014,40(1):1315,19.
[4] 王剛,張超.電渦流傳感器及其最佳特性曲線擬合方程式[J].石油化工自動化,2005(3):2628.
[5] 劉江,汪濤,唐清清,等.激光三角法厚度測量儀的設計與研究[J].微型機與應用,2014,33(10):1619.