一種螺紋全景圖像合成方法與流程
2023-05-28 10:21:56
本發明屬於核電站視頻無損檢查、圖像處理技術領域,具體涉及一種螺紋全景圖像合成方法。
背景技術:
核電站反應堆壓力容器螺栓孔的維護對於電站的安全運行起到了重要的作用。通常採用的檢查方式為單攝像頭旋轉升降採集整個螺孔螺紋的圖像,或者由多個攝像頭分別取景螺孔不同螺紋段,並提供視頻或圖片以供目視檢查人員查看。本方法為方便目視檢查人員工作,採用多攝像頭在不同方位對螺紋取景後,藉助圖像拼接技術,將拍攝到的多張分塊圖片通過配準和融合,合成一幅完整的全景圖片。
圖像拼接是一種集圖像處理、計算機視覺等多學科領域知識的交叉處理技術。現有的圖像拼接方法一般採用提取圖像特徵,比配特徵,計算變換矩陣等方法。存在特徵點提取速度慢,而且魯棒性低。尤其是在圖像中存在尺度變換、視角變換、光照變化時,圖像拼接處理效果不理想。
2004年,David.Lowe完善並總結了他在1999年提出的SIFT算法,該算法對兩幅圖像間的水平移動、旋轉變化、縮放變化、尺度變化甚至仿射變化均有較為穩定的匹配能力。傳統的SIFT特徵提取算法是在整幅圖片中提取特徵,然後生成特徵向量並進行特徵匹配,其計算量大,影響運算速度,雖然誤匹配概率較小但仍存在。SURF特徵是Herbert Bay等人於2006年提出來的全稱為加速魯棒特徵,實質上是改進版的SIFT特徵,它的主要特點是快速性,同時也具有尺度不變的特性,對光照變化和仿射、透視變化也具有較強的魯棒性。
因此本發明利用螺栓孔內壁螺紋特性,首先對成像系統建模,校正枕形失真。然後提取SURF特徵結合近似快速最近鄰搜索算法FLANN快速匹配特徵點,提高圖像拼接效率。在縱向拼接方面考慮螺栓圖片特徵,檢測螺紋直線,根據直線位置進行拼接。最後根據位置信息融合拼接區域。
技術實現要素:
本發明目的在於為了方便目視檢查人員更有效的進行反應堆壓力容器螺栓孔螺紋缺陷檢查,通過多攝像頭多角度拍攝螺紋,並通過圖像拼接合成形成整個螺孔螺紋的展開圖。可通過檢查此圖片即可完成缺陷檢查工作。此方法也可應用於大部件的目視檢查工作。
本發明的技術方案如下:
一種螺栓孔內壁全景圖像合成方法,包括:
步驟一:現場實測,選定攝像頭參數;將若干個攝像頭豎直排列,由機械臂送入螺栓孔內,根據現場實測,選定鏡頭焦距與光圈大小,確保上下相鄰圖片重疊高度為兩個螺紋間距,左右相鄰圖片重疊寬度為圖片寬度的15%;
步驟二、採集圖像:以螺栓孔軸心為旋轉心將攝像頭旋轉若干個角度拍攝螺紋內壁圖像,採集螺栓孔內壁全景分塊圖像並現場標定重疊區域;
步驟三、枕形畸變校正:對步驟二中拍攝的所有圖片建立枕形畸變模型,進行畸變矯正,枕形畸變矯正具體方法為:
步驟四、橫向拼接重疊像素數確定:對步驟三中左右相鄰圖像重疊區域內提取SURF特徵,根據快速最近鄰算法匹配特徵,利用RANSAC算法剔除誤匹配點,計算待拼接圖像間的變換關係,確定橫向拼接重疊像素數;
步驟五、縱向拼接重疊像素數確定:對步驟三中上下相鄰圖像中採用霍夫直線檢測算法,提取每一根螺紋的位置信息,確定縱向拼接重疊像素數;
步驟六、全景圖像合成:選取左上方第一張圖像為基準圖像,根據步驟四和步驟五確定的重疊區域先橫向拼接後縱向拼接,對拼接區域採用漸入漸出方式融合,最終合成螺栓孔內壁全景圖像。
如上所述步驟二中現場標定重疊區域時,上下相鄰圖片重疊高度為兩個螺紋間距,左右相鄰圖片重疊寬度為圖片寬度的15%。
如上所述步驟三枕形畸變矯正的具體方法為:
步驟3.1建立攝像機模型,確定相機內參數矩陣;
將坐標為(Xi,Yi,Zi)的物理點Qi映射到投影平面上坐標為(xi,yi)的變換表示為:
q=MQ
其中,M為攝像機內參數矩陣,且z=Z。fx、fy為有效焦距,(cx,cy)為光學中心;
步驟3.2根據透鏡畸變原理,建立相機畸變模型,確定相機畸變參數矩陣;
具體地,由於成像儀中心畸變為0,用r=0(r為像點到中心點的距離)位置周圍的泰勒級數展開的前幾項來定量描述畸變情況,徑向畸變通過三個參數k1,k2,k3來描述,表達式為:
xcorrected=x(1+k1r2+k2r4+k3r6)
ycorrected=y(1+k1r2+k2r4+k3r6)
切向畸變通過參數p1,p2來描述,表達式為:
xcorrected=x+[2p1y+p2(r2+2x2)]
ycorrected=y+[p1(r2+2y2)+2p2y]
其中,(x,y)是畸變點在成像儀上的原始位置,(xcorrected,ycorrected)是校正後的新位置,畸變向量為[k1,k2,p1,p2,k3]T;
步驟3.3對於每一個不同內徑的螺栓孔及每一個攝像頭,選擇一副螺紋圖片,調整畸變向量至最佳矯正效果,記錄不同內徑螺栓孔及不同攝像頭的畸變向量;
步驟3.4將記錄的畸變係數應用於將要矯正的螺栓孔及攝像頭拍攝的圖片;
步驟3.5得到校正圖片。
如上所述步驟四橫向拼接重疊像素數具體方法如下:
步驟4.1在需要橫向拼接的圖像重疊區域內尋找SURF特徵點:
首先構建積分圖像,將原圖像表示為I(x,y),像素點(x,y)對應的在積分圖像中的值為I(x,y),則積分圖像I(x,y)是以原點和點(x,y)為對角線的矩形框內所有點的像素值之和,如下式所示:
求取不同尺度的Hessian矩陣行列式的局部最大值得到尺度不變的特徵點;圖像在σ尺度下的Hessian矩陣為:
其中,Lxx(X,σ)表示高斯二階偏導數與圖像在像素點(x,y)出的卷積,表示在σ尺度下該點在x方向上的二階偏導數,g(σ)為高斯函數,可以用下式來表達:
在計算中用到高斯函數的二階偏導數與圖像的積分時為了提高運算速度,採用盒狀濾波器來近似高斯函數的二階偏導數;即SURF特徵點提取所建立的圖像尺度金字塔是通過保持原圖像的大小不變,改變盒狀濾波器的大小和高斯函數的尺度來實現;
步驟4.2生成步驟4.1中SURF特徵點的描述子;
在確定特徵點位置之後,利用haar小波對特徵點進行主方向的確定以保證特徵點的旋轉和尺度不變性,在完成haar小波主方向確定之後,以特徵點為中心,將坐標軸旋轉到haar小波主方向上,做一個邊長為20σ的正方形窗口,σ為高斯濾波器的尺度,並將窗口劃分為16個大小為5σ×5σ的子窗口區域;以採樣間隔σ,分別計算每個子窗口水平和垂直方向上的小波響應,得到的小波係數記為dx和dy;然後對響應係數求和得到∑dx和∑dy,再求取響應係數絕對值之和得到∑|dx|和∑|dy|;因此,每個子窗口都能夠得到一個4維向量v=[∑dx ∑dy ∑|dx| ∑|dy|],並用此向量來描述該特徵點;
步驟4.3利用近似最近鄰算法FLANN匹配特徵點:
根據特徵向量之間的歐氏距離來衡量特徵點的相似度,選取一張圖像中的一個特徵點與別一張圖像中所有特徵點分別求取歐式距離,從中選出最近鄰特徵點歐式距離ρf和次近鄰特徵點歐式距離ρs,並計算兩者的比值ρ;
對於比值小於某閾值ρm的特徵點,則認為正確匹配並將正確匹配的特徵點進行連接,否則錯誤匹配:
步驟4.4採用RANSAC算法剔除誤匹配點,得到最終匹配點,具體步驟如下:
步驟4.4.1:從正確匹配的特徵點對中隨機選擇m對特徵點來求解單應性矩陣模型H;
步驟4.4.2:將除上述m對特徵點以外的其他特徵點對利用H計算其對稱變換誤差di,統計誤差diM_inlier,或者M=M_inlier,則認為H是當前最好的模型,並且保存內點M;M_inlier為指定的一個閾值,表示符合單應性矩陣模型H的內點的個數;
步驟4.4.4:利用式(1)計算循環次數N,步驟4.4.1至步驟4.4.3執行N次,當循環結束時,得到M最大的對應的單應性矩陣模型,得到最優的模型矩陣:
其中ε為外點所佔的比例,P表示置信概率。在本實例中,P取值為0.99,m取值為4;
步驟4.5根據匹配點計算投影變換矩陣,從而實現橫向拼接。
如上所述步驟五中縱向拼接重疊像素數的具體方法如下:
步驟5.1對圖像進行二值化處理,採用Canny算子檢測邊緣;
步驟5.2利用霍夫變換檢測螺紋直線,獲取直線特徵;
對於任意一點(x0,y0),經過這點的一簇直線表示為rθ=x0·cosθ+y0·sinθ,其中角度θ表示rθ與X軸之間的夾角,rθ為原點到直線幾何垂直距離;通過概率霍夫變換,高於閾值則認為檢測到了一條直線。
步驟5.3由於重疊區域為兩個螺紋間距的寬度,上方圖片中倒數第三根螺紋直線r[5]與圖片下邊界的距離s1,下方圖片中第一根r[0]螺紋直線與圖片上邊界距離s2,即可確定上下相鄰圖片重疊寬度s,s=s1+s2。
如上所述步驟六中全景圖像合成方法具體如下:
步驟6.1以第一個角度完成的第一列圖像為基準圖像,先完成橫向拼接,再進行縱向拼接,以保證一整根螺紋不會出現斷裂;
步驟6.2利用漸入漸出融合法實現重疊區域的無縫拼接;具體為:將重疊區域內的像素值乘以其在兩幅圖像中的加權係數,實現圖像間的平滑過渡,定義I1(x,y)、I2(x,y)分別為兩幅待拼接圖像中點的像素值,I3(x,y)為拼接後圖像中點的像素值,計算公式如下:
其中,λ為重疊區域的權重係數,取值範圍為[0,1],左右相鄰圖片融合時,λ計算公式如下:
式中,xmin和xmax分別表示重疊區域範圍內的x軸的最左側和最右側坐標;ymin和ymax分別表示重疊區域範圍內的y軸的最上方和最下方坐標;通過以上步驟最終生成螺栓孔內壁全景圖像。
本發明的顯著效果在於:
在反應堆壓力容器螺栓孔視頻檢查工作中,對於每個單獨的螺紋孔而言,可僅通過目視檢查一張螺紋全景圖即可完成視頻檢查工作。
附圖說明
圖1為圖像拼接方法流程圖
圖2為陣列圖像拼接示意圖
具體實施方式
下面結合附圖及具體實施例對本發明作進一步詳細說明。
如圖1所示,一種螺栓孔內壁全景圖像合成方法,包括如下步驟:
步驟一:現場實測,選定攝像頭參數;將若干個攝像頭豎直排列,由機械臂送入螺栓孔內,根據現場實測,選定鏡頭焦距與光圈大小,確保上下相鄰圖片重疊高度為兩個螺紋間距,左右相鄰圖片重疊寬度為圖片寬度的15%;
步驟一中的攝像頭利用機械移動採集平臺進行視頻錄製與圖片拍攝,所述機械移動採集平臺用於同時承載清洗模塊、PLC控制器、工業攝像頭,以實現攝像頭邊錄製邊拍攝邊移動。
步驟二、採集圖像:以螺栓孔軸心為旋轉心將攝像頭旋轉若干個角度拍攝螺紋內壁圖像,採集螺栓孔內壁全景分塊圖像並現場標定重疊區域;採集圖像過程採用PLC控制電機以確保旋轉中心與螺栓孔軸心一致,所拍攝圖片覆蓋整個螺栓孔內壁。
現場標定重疊區域時,確保上下相鄰圖片重疊高度為兩個螺紋間距,左右相鄰圖片重疊寬度為圖片寬度的15%,同時保證工業相機所拍攝圖像亮度適中,螺紋清晰可見。
步驟三、枕形畸變校正:對步驟二中拍攝的所有圖片建立枕形畸變模型,進行畸變矯正,枕形畸變矯正具體方法為:
步驟3.1建立攝像機模型,確定相機內參數矩陣;
在本例中,可視為將坐標為(Xi,Yi,Zi)的物理點Qi映射到投影平面上坐標為(xi,yi)的變換表示為:
q=MQ
其中,M為攝像機內參數矩陣,且z=Z。fx、fy為有效焦距,(cx,cy)為光學中心。
經棋盤圖像標定攝像頭拍攝,實測出fx、fy均設為2000,調節攝像頭解析度為1280×960,且成像儀晶片中心對光軸無偏移,即將設為(640,480)。
步驟3.2根據透鏡畸變原理,建立相機畸變模型,確定相機畸變參數矩陣;
具體地,由於成像儀中心畸變為0,用r=0(r為像點到中心點的距離)位置周圍的泰勒級數展開的前幾項來定量描述畸變情況,徑向畸變通過三個參數k1,k2,k3來描述,表達式為:
xcorrected=x(1+k1r2+k2r4+k3r6)
ycorrected=y(1+k1r2+k2r4+k3r6)
切向畸變通過參數p1,p2來描述,表達式為:
xcorrected=x+[2p1y+p2(r2+2x2)]
ycorrected=y+[p1(r2+2y2)+2p2y]
其中,(x,y)是畸變點在成像儀上的原始位置,(xcorrected,ycorrected)是校正後的新位置,畸變向量為[k1,k2,p1,p2,k3]T。
步驟3.3對於每一個不同內徑的螺栓孔及每一個攝像頭,選擇一副螺紋圖片,調整畸變向量至最佳矯正效果,記錄不同內徑螺栓孔及不同攝像頭的畸變向量;
步驟3.4將記錄的畸變係數應用於將要矯正的螺栓孔及攝像頭拍攝的圖片;
步驟3.5得到校正圖片。
步驟四、橫向拼接重疊像素數確定:對步驟三中左右相鄰圖像重疊區域內提取SURF特徵,根據快速最近鄰算法匹配特徵,利用RANSAC算法剔除誤匹配點,計算待拼接圖像間的變換關係,確定橫向拼接重疊像素數;
具體橫向拼接重疊像素數方法如下:
步驟4.1在需要橫向拼接的圖像重疊區域內尋找SURF特徵點:
首先構建積分圖像,將原圖像表示為I(x,y),像素點(x,y)對應的在積分圖像中的值為I(x,y),則積分圖像I(x,y)是以原點和點(x,y)為對角線的矩形框內所有點的像素值之和,如下式所示:
求取不同尺度的Hessian矩陣行列式的局部最大值得到尺度不變的特徵點。圖像在σ尺度下的Hessian矩陣為:
其中,Lxx(X,σ)表示高斯二階偏導數與圖像在像素點(x,y)出的卷積,表示在σ尺度下該點在x方向上的二階偏導數,g(σ)為高斯函數,可以用下式來表達:
在計算中用到高斯函數的二階偏導數與圖像的積分時為了提高運算速度,採用盒狀濾波器來近似高斯函數的二階偏導數。也就是說,SURF特徵點提取所建立的圖像尺度金字塔是通過保持原圖像的大小不變,改變盒狀濾波器的大小和高斯函數的尺度來實現的。
步驟4.2生成步驟4.1中SURF特徵點的描述子
在確定特徵點位置之後,利用haar小波對特徵點進行主方向的確定以保證特徵點的旋轉和尺度不變性,在完成haar小波主方向確定之後,以特徵點為中心,將坐標軸旋轉到haar小波主方向上,做一個邊長為20σ的正方形窗口,σ為高斯濾波器的尺度,並將窗口劃分為16個大小為5σ×5σ的子窗口區域;以採樣間隔σ,分別計算每個子窗口水平和垂直方向上的小波響應,得到的小波係數記為dx和dy;然後對響應係數求和得到∑dx和∑dy,再求取響應係數絕對值之和得到∑|dx|和∑|dy|;因此,每個子窗口都能夠得到一個4維向量v=[∑dx ∑dy ∑|dx| ∑|dy|],並且用這個向量來描述該特徵點;
步驟4.3利用近似最近鄰算法FLANN匹配特徵點:
根據特徵向量之間的歐氏距離來衡量特徵點的相似度,選取一張圖像中的一個特徵點與別一張圖像中所有特徵點分別求取歐式距離,從中選出最近鄰特徵點歐式距離ρf和次近鄰特徵點歐式距離ρs,並計算兩者的比值ρ。
對於比值小於某閾值ρm的特徵點,則認為正確匹配並將正確匹配的特徵點進行連接,否則錯誤匹配:
在本發明實例中,ρm取值為0.7。
步驟4.4採用RANSAC算法剔除誤匹配點,得到最終匹配點,具體步驟如下:
步驟4.4.1:從正確匹配的特徵點對中隨機選擇m對特徵點來求解單應性矩陣模型H;
步驟4.4.2:將除上述m對特徵點以外的其他特徵點對利用H計算其對稱變換誤差di,統計誤差diM_inlier,或者M=M_inlier,則認為H是當前最好的模型,並且保存內點M;M_inlier為指定的一個閾值,表示符合單應性矩陣模型H的內點的個數;
步驟4.4.4:利用式(1)計算循環次數N,步驟4.4.1~步驟4.4.3執行N次,當循環結束時,得到M最大的對應的單應性矩陣模型,得到最優的模型矩陣:
其中ε為外點所佔的比例,P表示置信概率。在本實例中,P取值為0.99,m取值為4。
步驟4.5根據匹配點計算投影變換矩陣,從而實現橫向拼接。
步驟五、縱向拼接重疊像素數確定:對步驟三中上下相鄰圖像中採用霍夫直線檢測算法,提取每一根螺紋的位置信息,確定縱向拼接重疊像素數;
縱向拼接重疊像素數具體方法如下:
步驟5.1對圖像進行二值化處理,採用Canny算子檢測邊緣。
步驟5.2利用霍夫變換檢測螺紋直線,獲取直線特徵。
對於任意一點(x0,y0),經過這點的一簇直線表示為rθ=x0·cosθ+y0·sinθ,其中角度θ表示rθ與X軸之間的夾角,rθ為原點到直線幾何垂直距離。通過概率霍夫變換,高於閾值則認為檢測到了一條直線。該實例中閾值為400。根據角度與截距篩選直線,則檢測到的直線位置就是螺紋的位置。
步驟5.3由於重疊區域為兩個螺紋間距的寬度,上方圖片中倒數第三根螺紋直線r[5]與圖片下邊界的距離s1,下方圖片中第一根r[0]螺紋直線與圖片上邊界距離s2,即可確定上下相鄰圖片重疊寬度s,s=s1+s2。
步驟六、全景圖像合成:選取左上方第一張圖像為基準圖像,根據步驟3.1和步驟3.2確定的重疊區域先橫向拼接後縱向拼接,對拼接區域採用漸入漸出方式融合,最終合成螺栓孔內壁全景圖像。
全景圖像合成方法具體如下:
步驟6.1以第一個角度完成的第一列圖像為基準圖像,先完成橫向拼接,再進行縱向拼接,以保證一整根螺紋不會出現斷裂。
步驟6.2利用漸入漸出融合法實現重疊區域的無縫拼接。具體為,將重疊區域內的像素值乘以其在兩幅圖像中的加權係數,實現圖像間的平滑過渡,定義I1(x,y)、I2(x,y)分別為兩幅待拼接圖像中點的像素值,I3(x,y)為拼接後圖像中點的像素值,計算公式如下:
其中,λ為重疊區域的權重係數,取值範圍為[0,1],左右相鄰圖片融合時,λ計算公式如下:
式中,xmin和xmax分別表示重疊區域範圍內的x軸的最左側和最右側坐標;ymin和ymax分別表示重疊區域範圍內的y軸的最上方和最下方坐標。通過以上步驟最終生成螺栓孔內壁全景圖像。