999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

無人化起重機視覺識別關鍵技術研究與實現(xiàn)

2022-03-29 02:01:10周奇才趙科淵
起重運輸機械 2022年4期

周奇才 姜 寬 趙科淵

同濟大學機械與能源工程學院 上海 201804

0 引言

近年來人工智能視覺識別技術發(fā)展迅速,在起重機領域發(fā)揮出極大助力作用。段銳等[1]融合計算機視覺技術和建筑信息模型,實現(xiàn)在起重機運行過程中實時監(jiān)控,對傾翻、碰撞、墜落等安全事故進行危險預警。周前飛等[2]借助無人機巡檢,采集起重機復雜鋼結(jié)構(gòu)表面圖像,進行起重機健康狀態(tài)的結(jié)構(gòu)檢測。通過圖像處理進行特征提取識別方式,有著非接觸、遠程可視化的優(yōu)點。黃宏安等[3]使用YOLOv3、Faster-RCNN和SSD等主流算法實現(xiàn)對塔吊的裂縫進行識別。熊肖磊等[4]基于YOLOv3目標檢測算法識別吊鉤,根據(jù)圖像中吊鉤離開平衡位置的位移和圖像坐標變換能夠計算出吊鉤擺動角度。雙目相機擁有更大的視野,并可以產(chǎn)生有限感知范圍的深度信息,適合滿足定位、測距、路徑規(guī)劃等相關需求。漆靜等[5]在研究實時圖像處理、惡劣天氣條件下預處理、集裝箱顏色自動識別等方面后,提出了雙目機器視覺用于集裝箱吊具定位系統(tǒng)的理論分析和實驗研究。張銳[6]通過雙目視覺對塔式起重機吊鉤進行識別,獲取深度信息,得出坐標系下具體位置。劉濤等[7]針對塔式起重機群交叉作業(yè)過程中存在的安全問題,運用雙目視覺測量技術來實現(xiàn)塔式起重機主動避撞。

Matlab的相機標定工具有2種[8]。早期的Camera Calibration Toolbox將參數(shù)設置、加載圖片、角點提取、相機參數(shù)計算和優(yōu)化、重投影誤差分析、數(shù)據(jù)保存和導出等標定功能集成在GUI程序中,其操作多為工作區(qū)命令行方式,較為操作繁瑣。后期的Camera Calibreator集成在Matlab的APP中,標定后直接提供重投影誤差、3D視圖的展示、相機參數(shù)、誤差等數(shù)據(jù)的標準格式導出將操作大大簡化。OpenCV是一款免費的計算機視覺和機器學習庫,可運行在各種操作系統(tǒng)上,由C語言編寫并包含Matlab等軟件接口,實現(xiàn)了關于圖像處理和計算機視覺的通用算法,擴展性良好。如張峰峰[9]等提出基于OpenCV利用差分遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡來進行雙目相機標定的方法,簡化了標定的流程,降低了計算的復雜度,亦提高了標定的精度。李莉[10]基于OpenCV解決了張正友標定中當鏡頭與圖像平面夾角過小或標定圖像次數(shù)過少時精度較差的問題。

1 基本概念

1.1 相機模型

如圖1所示,相機模型分為小孔成像模型和雙目相機模型。假設P(XC,YC,ZC)為空間中一點,則Pl和Pr分別是點P在左右相機投影平面上的投影,根據(jù)射線OlPl和射線OrPr的交點,可確定點P的位置,從而得到深度信息。在實際中,攝像機不會嚴格地前向平行對準,還存在旋轉(zhuǎn)關系,故左右目相機可通過旋轉(zhuǎn)矩陣R和平移向量T相互聯(lián)系起來。

圖1 小孔成像模型和雙目相機模型

基于小孔成像原理,由于安裝誤差導致芯片的中心通常不在光軸上,且成像裝置的單個像素是矩形但不是正方形,需要引入2個新的參數(shù)Cx、Cv來對投影屏幕坐標中心可能的偏移(對光軸而言)進行建模。這樣假設點P坐標為(X,Y,Z),根據(jù)式(1)投射到成像裝置上某個像素位置(xscreen,yscreen)

用透鏡使光線彎曲,讓足夠多的光線聚集在投影點上,使得圖像生成更加迅速,但也會引入因透鏡形狀或加工工藝造成的徑向畸變,導致離透鏡中心越遠光線越彎曲,越靠近透鏡邊緣越嚴重。在實際應用中畸變很小,用r=0附近的泰勒級數(shù)展開前幾項描述,成像裝置上某點徑向位置可根據(jù)式(2)進行調(diào)整。切向畸變由整個相機的組裝過程造成,由透鏡和CMOS(或CCD)的安裝誤差導致透鏡不與成像平面平行而產(chǎn)生的,可用2個額外參數(shù)得到,即

假設圖像物理坐標系xOy坐標原點O在圖像像素坐標系x1O1y1下坐標為(cx,cy),像素在各坐標軸上所占據(jù)的物理尺寸分別為dx、dy(mm/px),則圖像中任意像素點在2坐標系的轉(zhuǎn)換關系為

齊次坐標形式為

假設空間中存在一點P,在雙目相機坐標系Oc-XcYcZc下坐標為(Xc,Yc,Zc),圖像物理坐標為(x,y),由小孔成像模型可以得到

化為齊次坐標形式

將式(7)代入式(5)式得

式中:K為相機內(nèi)參數(shù)矩陣,fx=f/dx,fy=f/dy為有效焦距,為相機焦距與水平和垂直方向上像素大小的比值。

1.2 張正友標定法原理

相機內(nèi)外參數(shù)標定方法有經(jīng)典標定法、自動標定法以及主動視覺標定法[11]。目前使用最多的是經(jīng)典標定法中的張氏相機標定法,它解決了經(jīng)典標定法中標定物制作精度要求高的問題,比自標定法的精度更高,模板制作容易,成本低、使用方便、魯棒性好、準確率高,用戶可快速、方便、準確地得到相機的各內(nèi)外參數(shù)和畸變參數(shù)。Matlab視覺處理庫和Open CV開源視覺庫都是基于張正友標定原理求解相機參數(shù)。張正友標定法流程如圖2所示。

圖2 張正友標定法流程

2 標定實現(xiàn)

2.1 實驗準備

2.1.1 標定板選擇

為了保證標定結(jié)果的精度,可采用高精度加工工藝,熱膨脹系數(shù)較低,不易變形,尺寸合適的標定板。標定板大小要求大于全視野的1/3,小于全視野。根據(jù)透光、反光等因素可選擇氧化鋁加玻璃基板、菲林PET加玻璃基板,亞克力基板等標定板??紤]到制作成本以及運輸儲存成本,更直接的方法是自己制作,用打印機打印出黑白棋盤格并固定到現(xiàn)有平整的基板上實現(xiàn)。

在實際中,使用不對稱的奇偶維數(shù)的棋盤格通常更為方便,因為只有1個對稱軸,所以棋盤方向可以唯一確定。拍攝一系列照片,最少2張,10~20張為宜,不同的圖片進行標定時得到的結(jié)果會有差異,重投影誤差很小,則表明標定結(jié)果足夠使用。照片可實時從相機中獲取,也可利用已有的圖片來標定。

本文選用圖3所示9行×12列的黑白標定棋盤格,每個格子尺寸大小為30×30 mm。采用質(zhì)量較好的打印設備和紙張,粘貼在平整的剛性平木板上。實際使用中,會省略最外層格子。

圖3 黑白棋盤格

2.1.2 相機參數(shù)

雙目相機有較高的分辨率和幀率可以提升檢測精度,但控制器對數(shù)據(jù)處理的相應時間也會增加。本次實驗選用ZED雙目相機,利用CUDA進行計算,緩解CPU計算能力。ZED雙目相機部分參數(shù)如表1所示,實際測量中可以根據(jù)環(huán)境條件和精度要求選擇合適的分辨率與幀率,通過USB3.0接口與控制器相連并進行數(shù)據(jù)獲取和處理,單目相機標定可以看作是雙目相機標定的簡化。

表1 ZED雙目相機技術規(guī)格

2.2 雙目相機標定

雙目標定的內(nèi)容包含獲取相機的內(nèi)部參數(shù)和外部參數(shù),外部參數(shù)包括旋轉(zhuǎn)矩陣和平移向量;

利用雙目相機完成立體成像具體包括使用數(shù)學方法消除徑向和切向透鏡畸變,輸出去畸變圖像;調(diào)整攝像機之間的角度和距離,輸出整幀行對齊的圖像,即2個圖像平面共面,2個成像儀上的對應圖像行實際上相對于彼此共線。

本次實驗中,由于雙目相機獲得的是如圖4所示的左右相連圖像,可以利用OpenCV或其他裁剪工具把圖像簡單的分割成左右2幅圖像。最終獲得如圖5所示的圖像集。

圖4 雙目相機獲取圖像

圖5 左目圖像集和右目圖像集

3.2.1 OpenCV實現(xiàn)

1)確定好標定所用標定棋盤格寬度、高度、棋盤格寬度和所需照片數(shù)量等數(shù)據(jù)并修改相關參數(shù)。

2)利用imread()從文檔中或利用cv::Capture從相機中分別獲取左右相機含棋盤格的一系列圖像對。

3)根據(jù)提前輸入角點數(shù),使用 findChessboardCorner()函數(shù)檢測角點,也使用 find4QuadCornerSubpix()函數(shù)對角點進行亞像素精確化。利用drawChessboardCorners()將角點顯示。

4)通過stereocalibrateCamera()函數(shù)進行標定,標定給出2個相機的相機矩陣、畸變矢量、產(chǎn)生旋轉(zhuǎn)矩陣、平移向量、本征矩陣、基本矩陣,并將參數(shù)寫入xml文檔。

5)利用projectPoints()函數(shù)計算重投影誤差。利用undistortPoints()對原始點去畸變處理,computeCorrespondEpilines()計算極線,計算點和線的點擊,之后通過極線幾何約束計算誤差。

6)如果已經(jīng)完成標定,使用Bouguer方法cv::stereoRectify計算標定映射;如果未完成標定,則使用Hartley方法cv:;stereoRectifyUncalibrated()計算標定映射,最后利用remap()校正相機圖像。圖6是經(jīng)過立體校正左右圖像對。

圖6 經(jīng)過立體校正左右圖像對

實驗得到平均重投影誤差=0.78,雙目極線誤差=1.73367。

3.2.2 Matlab實現(xiàn)

1)打開模塊,將窗口上方Skew、Tangential Distortion以及3 Coefficients選項選中,將2 Coefficients選項去掉。

2)分別輸入左標定圖像所在文件夾和右標定圖像所在文件夾;輸入棋盤格上每個格子所占的真實尺寸大小。

3)選擇好左右相機所在文件之后,點擊確定按鈕,系統(tǒng)會自動檢測效果好的標定圖像,并剔除效果不好的圖像。

4)點擊Calibrate按鈕,進行標定。窗口界面包含:標定的效果,雙目矯正結(jié)果,重投影誤差柱狀圖。對于重投影誤差較大的圖像可以手動刪除掉,然后重新標。由圖7可以看出,最高標定誤差為0.18 pixels,平均誤差0.11 pixels,標定效果好。

圖7 每幅圖像誤差以及平均誤差

如圖8所示,可以展示出不同位置和姿態(tài)下雙目相機和標定板的相互位置,可以增加合適的位置關系來改善標定結(jié)果。圖9展示了經(jīng)過立體校正左右圖像對。

圖8 相對于標定板不同位置和姿態(tài)下雙目相機的相對位置

圖9 經(jīng)過立體校正左右圖像對

5)點擊Exprot Camera Parameter按鈕,保存標定的參數(shù)數(shù)據(jù)。

3.3.3 標定結(jié)果

2種方法標定得到相機參數(shù)結(jié)果如表2所示。

表2 不同標定軟件標定結(jié)果

4 結(jié)果分析與比較

由圖10a可以直觀看出Matlab和OpenCV的重投影誤差均在一個像素之間,精度較好。Matlab法精度比OpenCV法更好更穩(wěn)定,而OpenCV法重投影誤差隨著照片數(shù)量先增加后減少。

圖10 雙目相機參數(shù)標定結(jié)果與照片數(shù)關系

具體到每個參數(shù),以左目相機內(nèi)參矩陣為對象,研究了fx、fv、cx、cv、k1、k2、k3與照片數(shù)關系,以及雙目相機間的平移向量T與照片數(shù)關系。Matlab和OpenCV標定結(jié)果在照片數(shù)較多情況下標定結(jié)果的相差不大,其中cx、cv變化明顯和廠家值偏差明顯。2款軟件對切向畸變[p1,p2],估計都為零,而實際廠家還是給出了2個非零的微小量。總體而言,Matlab結(jié)果更加穩(wěn)定,在照片數(shù)量較少的情況下仍能得到良好的標定結(jié)果;而OpenCV方法在如Tv、Tz、k1等參數(shù)有著更接近廠家值的結(jié)果。此外,實驗過程中環(huán)境因素如光線、灰塵,棋盤格質(zhì)量如材料、平整度,都會對重投影誤差有影響,而棋盤格大小,角點數(shù)量對結(jié)果沒有明顯影響。

即使輸入相同照片,2種工具得到的相機標定結(jié)果也不盡相同。二者雖然都是基于張正友提出的標定算法來進行相機標定,Matlab采用的是進一步的Heikkil?的改進算法,有進行結(jié)果的迭代優(yōu)化。同時標定時OpenCV在處理魚眼相機或比較模糊的圖片時會報錯,且2個相機的初始位置近乎平行且基線長度不要太長,否則誤差會很大。OpenCV中角點是自動檢測的,為了保證相同參考系,左右相機標定的角點必須選擇相同的網(wǎng)格點和相同的原點。因此,實驗時最好將角點可視化,觀察角點是否匹配正確。

為了得到更好的結(jié)果,實驗顯示照片數(shù)量最好為15~20對,OpenCV相比Matlab需要更多的照片對來完成準確的標定,否則當照片數(shù)量較少時會產(chǎn)生很大誤差。在照片數(shù)小于14張時,OpenCV法在fx、fv、k1、k2有較大的誤差,Matlab在Tv、Tz有較大的誤差。當照片數(shù)小于6張時,Matlab法的其他參數(shù)也有著不小的誤差。不同的圖片因為實際拍攝質(zhì)量原因進行標定時得到的結(jié)果會有差異,重投影誤差足夠小時標定結(jié)果就足夠使用。

Matlab作為現(xiàn)有的標定軟件,簡單易操作,結(jié)果穩(wěn)定,有著更好的用戶交互功能,但其結(jié)果不能直接被應用到CMAKE工程里,也因其對程序的打包不利于程序跟蹤和二次開發(fā)。當現(xiàn)有照片數(shù)量不多以及存在標定板與鏡頭夾角較小情況時優(yōu)先選用。

OpenCV自帶的標定程序目前仍存在不足和限制,后續(xù)可利用一些方法和算法進行二次開發(fā)對標定流程和結(jié)果進行優(yōu)化。除了Matlab中直接輸入攝像頭信息和采用已經(jīng)采集好的多張不同位置的標定模板照片2種輸入方式外,OpenCV還支持采集的視頻流文件輸入方式。OpenCV雖然操作復雜,但可以結(jié)合圖像分割、相機校正和后續(xù)外參標定,以實現(xiàn)全自動標定和其他操作,易于將結(jié)果加載到程序中??梢詫atlab某些結(jié)果導入到OpenCV中來細化標定結(jié)果,即在Matlab中標定之后再使用OpenCV標定。但需要注意的是矩陣在Matlab中是按列存儲的,即內(nèi)參矩陣IntrinsicMatrix和旋轉(zhuǎn)矩陣RotationOfCamera2需要轉(zhuǎn)置后再使用。

其次,畸變系數(shù)徑向畸變參數(shù)第3個數(shù)值需要放在上述2個參數(shù)中的第5個位置。即OpenCV中D=[k1,k2,p1,p2,k3],而在 Matlab 中為 RadialDistortion=[k1,k2,k3],TangentialDistortion=[P1,P2]。否則校正后的圖片會有很大偏差。

5 結(jié)論

1)利用Matlab和OpenCV均可實現(xiàn)單目相機、雙目相機參數(shù)標定。

2)隨著標定所用照片數(shù)量增加,2種工具的標定結(jié)果都逐漸趨于穩(wěn)定。在照片數(shù)量較少的時候,Matlab法有著更加穩(wěn)定的精度。

3)即使采用的照片相同,2種工具得到的結(jié)果也會不同。

4)Matlab適合新手操作以及滿足只需要得到相機參數(shù)這種簡單需求。OpenCV適合進行二次開發(fā),可以利用一些方法和算法對標定流程和結(jié)果進行優(yōu)化,以及配合后續(xù)圖像分割、相機校正和圖像識別等過程實現(xiàn)自動操作。而兩種工具結(jié)果融合能提供更可靠的參考。

主站蜘蛛池模板: 91无码人妻精品一区二区蜜桃| 97国产在线视频| 大陆精大陆国产国语精品1024 | 国产人人干| 99国产精品免费观看视频| 国产99在线| 成人福利免费在线观看| 国产精品部在线观看| 性色生活片在线观看| 日韩在线播放中文字幕| 久久久久久久97| 亚洲福利一区二区三区| 午夜精品一区二区蜜桃| 全部免费特黄特色大片视频| 国产精品久久自在自线观看| 国产手机在线观看| 亚洲 欧美 偷自乱 图片 | 亚洲精品久综合蜜| 欧美国产在线看| 2020极品精品国产| 国产亚洲欧美另类一区二区| 精品人妻一区二区三区蜜桃AⅤ| 91久久夜色精品国产网站| 国产亚洲精品97AA片在线播放| 91九色国产在线| 在线日韩日本国产亚洲| 欧美.成人.综合在线| 怡红院美国分院一区二区| 国产在线小视频| 亚洲精品卡2卡3卡4卡5卡区| 中文字幕在线永久在线视频2020| 国产视频a| 一区二区在线视频免费观看| 久久国产黑丝袜视频| 国产亚洲精品自在线| 国产91小视频在线观看| 亚洲精品无码AⅤ片青青在线观看| 亚洲人成在线精品| 久久久久国色AV免费观看性色| 19国产精品麻豆免费观看| 在线看AV天堂| 99久久精品免费视频| 在线视频亚洲欧美| 亚洲精品第1页| 在线日本国产成人免费的| 国产午夜福利片在线观看| 在线国产91| 国产成人精品午夜视频'| 国产精品网拍在线| 久青草免费在线视频| 国产成人亚洲无码淙合青草| 亚洲国产一区在线观看| 欧美亚洲国产视频| 亚洲欧美极品| 国产人前露出系列视频| 国产手机在线小视频免费观看| 无遮挡一级毛片呦女视频| 日韩欧美在线观看| 国产一级毛片网站| 美女被操91视频| 欧美国产中文| 激情五月婷婷综合网| 露脸真实国语乱在线观看| 中文字幕第4页| 波多野结衣第一页| 成人综合久久综合| 国产va视频| 中文字幕永久在线观看| 国产成人禁片在线观看| h网址在线观看| 人妖无码第一页| 99热这里只有免费国产精品| 99re热精品视频国产免费| 中文字幕啪啪| 91免费国产在线观看尤物| 色老二精品视频在线观看| 国产亚洲男人的天堂在线观看 | 日韩不卡高清视频| 日本免费福利视频| 成年人国产视频| 日韩欧美国产另类| 久久精品无码专区免费|