李 超,呂 昊,劉 成,梁 偉,焉詩萌
(1.海裝裝備項目管理中心,北京100071; 2.上海船舶工藝研究所,上海 200032)
新型主機、輔機和甲板設備等船舶設備的大規(guī)模應用對裝配精度提出了越來越高的要求[1]。藍油拂配工藝能夠確保裝配接觸面的質(zhì)量[2-4],在進行墊塊藍油拂配質(zhì)量檢查時,應確保在25 mm×25 mm的區(qū)域內(nèi)藍油面積不少于60%。然而,標準或工藝雖規(guī)定了藍油拂配檢查的要求,但在實際生產(chǎn)中一般靠有經(jīng)驗的工人目視完成。目視檢測法存在以下問題:(1)人工檢測主觀性強,不同人得出的結(jié)論可能有所不同;(2)執(zhí)行標準不嚴;(3)對檢測場所的環(huán)境光源有要求;(4)在連續(xù)檢測后人員容易產(chǎn)生疲勞,影響后續(xù)檢測結(jié)果的準確性。
機器視覺技術(shù)的目的是通過機器代替人眼做測量和判斷,其已在人臉識別[5]、無人駕駛[6]、文字識別[7]、追蹤定位[8]等方面被得到廣泛應用。采用機器視覺的自動光學檢測方法主觀性小、準確度高、檢測速度快,其在膠囊質(zhì)量檢測[9]、裂紋故障檢測[10]等方面均已有大量成功案例,但采用機器視覺檢測方法對船舶墊塊藍油拂配進行質(zhì)量檢測還鮮有相關(guān)報道。
本文首先獲得藍油拂配圖像并進行裁剪縮放,其次基于OpenCV框架實施圖像濾波、對比度增強和閾值分割等操作,然后對每個25 mm×25 mm的區(qū)域進行藍油像素統(tǒng)計分析,接著標注每個部分的藍油拂配比例,最后采用Python實現(xiàn)檢測結(jié)果的可視化和報告自動輸出。
通過手機拍照等手段獲得藍油拂配圖像,對檢測圖像進行濾波去噪、對比度增強和閾值分割等操作,統(tǒng)計經(jīng)閾值分割后的圖像像素并采用Python實現(xiàn)檢測結(jié)果可視化和報告自動輸出。整體框架如圖1所示。
圖1 整體框架圖
在進行圖像濾波前將彩色圖像轉(zhuǎn)化為灰度圖,轉(zhuǎn)換公式為
Gr= 0.299R+ 0.587G+ 0.114B
(1)
式中:Gr為灰度值;R為紅色通道分量;G為綠色通道分量;B為藍色通道分量。
每張圖片都包含一定程度的噪聲,通常用濾波的方法對噪聲進行抑制或去除。常用濾波算法有高斯濾波、均值濾波、中值濾波、導向濾波和雙邊濾波等。其中,雙邊濾波具有簡單、非迭代、局部的特點。
本文采用聯(lián)合雙邊濾波算法,不僅考慮空間距離權(quán)重模板的計算,而且采用一張引導圖作為值域權(quán)重的計算依據(jù),進而對圖像實現(xiàn)濾波。聯(lián)合雙邊濾波算法具體實施過程如下:
(1) 對圖像的每個位置的鄰域計算空間距離權(quán)重模板,這與雙邊濾波算法一致;
(2) 對原圖進行高斯平滑;
(3) 根據(jù)平滑結(jié)果用當前位置與其鄰域的值之差估計相似性權(quán)重模板;
(4) 將空間距離權(quán)重模板與相似性權(quán)重模板相乘后歸一化作為最后的權(quán)重模板。
其算法為
(2)
在實際建造中,難以獲得高對比度的藍油拂配圖像用于質(zhì)量檢測,圖像對比度增強能夠有效解決圖像灰度范圍小或?qū)Ρ榷鹊偷膯栴},以使圖像中的細節(jié)更清晰,便于后續(xù)進行閾值分割。常見的對比度增強算法有線性變換、分段線性變換、伽馬變換、全局直方圖均衡化、局部自適應直方圖均衡化等。
直方圖均衡化的應用較廣泛,其本質(zhì)是尋找一個滿足單調(diào)性和保限性的灰度變換函數(shù)來增強圖像對比度。針對數(shù)字圖像,直方圖均衡化的基本計算過程如下:
(1) 計算原始直方圖;
(2) 計算累計直方圖;
(3) 運用灰度變換函數(shù)實現(xiàn)像素變化,并取整數(shù);
(4) 修正并統(tǒng)計圖像灰度值,并計算灰度圖。
自適應直方圖均衡化將圖像劃分為不重疊的區(qū)域塊,并對每個分塊分別進行直方圖均衡化。在無噪聲影響的情況下,每個小區(qū)域的灰度直方圖會被縮小在一個小的灰度范圍內(nèi),但圖像如果存在噪聲,噪聲將被放大。為避免降低信噪比,ZUIDERVELD[11]提出限制對比度的自適應直方圖均衡化算法:若直方圖某個區(qū)塊的高度超過預設的限值,則該區(qū)塊會被裁剪,裁剪下來的部分將被均勻分布到其他區(qū)塊,這樣就能重構(gòu)直方圖。限制對比度的自適應直方圖均衡化的基本計算過程如下:
(1) 分割原始直方圖并統(tǒng)計各部分的局部直方圖;
(2) 進行局部直方圖的均衡化操作;
(3) 設定閾值并對各分塊直方圖進行剪切;
(4) 將多余的像素重新分配到各分塊直方圖的各灰度級下;
(5) 對剪切分配后的直方圖進行均衡化操作并采用雙線性插值算法確保各分塊圖像的平滑過渡。其中,雙線性插值算法的應用可有效提高原始算法的執(zhí)行效率。
整體看來,限制對比度的自適應直方圖均衡化算法限制了圖像暗處噪聲的放大,同時避免了圖像亮區(qū)的信息損失。
圖像閾值分割是對圖像進行二值化處理的方法,目的是便于后續(xù)的像素統(tǒng)計和圖像判別。閾值分割因?qū)崿F(xiàn)簡單、計算量小、性能較穩(wěn)定而成為圖像分割中較基本和應用較廣泛的分割技術(shù)。圖像閾值分割的難點在于確定閾值大小,OTSU[12]提出了新的閾值分割法以自動確定閾值。按照OTSU閾值分割法進行圖像二值化分割后,前景與背景圖像的類間方差最大。該方法計算簡單,不受圖像亮度和對比度的影響,一般被認為是圖像分割中閾值選取的較佳算法。本文使用OTSU閾值分割法進行圖像二值化處理。
依據(jù)藍油拂配工藝規(guī)定,在每個25 mm×25 mm的區(qū)域內(nèi),藍油覆蓋占比應達60%。墊塊尺寸為125 mm×125 mm,像素大小為300 pixel×300 pixel。因此,將圖像劃分為5行5列共25個圖像子塊,每個子圖的像素大小為60 pixel×60 pixel。對每個子圖進行像素統(tǒng)計,獲得各部分藍油拂配占比,并在原圖的相應位置進行染色標注。
根據(jù)程序整體框架,編程實現(xiàn)各部分算法。圖2為讀入的原始圖像,圖3為經(jīng)過轉(zhuǎn)換的灰度圖,圖2和圖3的圖像質(zhì)量低、噪聲大且對比度范圍小。
圖2 原始圖像
圖3 灰度圖
圖4為濾波后的圖像,圖5為對濾波后的圖像進行對比度增強后的圖像,由圖4和圖5可以看出:算法有效,圖像噪聲明顯減小且對比度范圍增大。
圖4 濾波后圖像
圖5 對比度增強后圖像
圖6為采用OTSU閾值分割法對濾波后的圖像進行二值化處理后的圖像,圖7為二值圖像素統(tǒng)計結(jié)果在原圖上的疊加展示,即對藍油拂配面積占比在60%以上的區(qū)域進行染色標注(圖7中采用陰影表示)。
圖6 二值圖
圖7 二值圖像素統(tǒng)計結(jié)果
針對檢查不合格的區(qū)域,應對墊塊進行重新打磨和拂配,直到滿足要求為止。
采用Python軟件包中的tkinter庫實現(xiàn)藍油拂配自動檢查的可視化。報告自動導出功能使用第三方庫Python-docx實現(xiàn),其能夠基于Python完成制作word模板的任務,所設計的軟件客戶端界面如圖8所示。
圖8 軟件界面實現(xiàn)
采用多線程技術(shù)編寫軟件界面,3個不同線程同時處理界面響應、圖像計算和運行計時等不同任務,用戶可結(jié)合進度條對軟件運行過程進行實時監(jiān)視。導出報告功能可一鍵生成藍油拂配質(zhì)量檢測報告,以供報驗使用。
采用機器視覺檢測方法實現(xiàn)了船舶墊塊藍油拂配質(zhì)量的快速檢測,結(jié)論如下:
(1) 聯(lián)合雙邊濾波算法可實現(xiàn)藍油拂配圖像的超分辨率重建,顯示藍油拂配圖像的細節(jié)。
(2) 限制對比度的自適應直方圖均衡化算法可限制圖像暗處噪聲的放大,避免圖像亮區(qū)的信息損失。
(3) 基于類間方差最大原理,采用OTSU閾值分割法可實現(xiàn)圖像的二值化處理。
(4) Python3對多線程編程支持良好,自帶的tkinter庫就能滿足軟件界面的開發(fā)需求,Python-docx模塊可實現(xiàn)檢測報告的自動生成和導出。
(5) 該軟件可實現(xiàn)藍油拂配質(zhì)量的快速自動檢測,有效避免人工目視檢測法的主觀性。