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