国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于OpenCV的管道故障自適應(yīng)閾值選取算法

2018-01-08 02:34周科成劉資劉旭代淇源
中國科技縱橫 2018年23期

周科成 劉資 劉旭 代淇源

摘 要:管道作為輸送石油和天然氣最為安全有效的方式,其質(zhì)量優(yōu)劣直接關(guān)系到油氣輸送的安全性,因此,對管道故障的有效提取檢測至關(guān)重要。在故障的圖像處理工作中,選擇合適的處理閾值十分重要。本文基于OpenCV計算機(jī)視覺庫,改進(jìn)傳統(tǒng)圖像處理算法,提供一套可以根據(jù)檢測環(huán)境中光強(qiáng)條件自適應(yīng)選取最佳檢測閾值范圍的算法。實(shí)驗(yàn)結(jié)果表明,該方法在管道檢測領(lǐng)域中可以準(zhǔn)確地選取一定光照強(qiáng)度下的最佳檢測閾值,為后續(xù)的處理過程提供了便利。

關(guān)鍵詞:油氣輸送;管道故障;自適應(yīng)算法;最佳閾值范圍

中圖分類號:TP391.41 文獻(xiàn)標(biāo)識碼:A 文章編號:1671-2064(2018)23-0013-04

1 引言

隨著國家能源工程的大力開展,作為最有效、安全的輸送方式,管道運(yùn)輸一直備受青睞,而管道的安全運(yùn)營是決定能源工程能發(fā)揮持續(xù)作用的基礎(chǔ)保障。

針對預(yù)備役管道的常見缺陷,國內(nèi)外學(xué)者已經(jīng)研發(fā)了諸多檢測方法來排除運(yùn)營風(fēng)險。在國內(nèi),韓文花等人引入小波系數(shù)去噪算法,用于去除管道檢測漏磁信號中系統(tǒng)噪聲[1];廖高華、甘志梅等人總結(jié)了以CCD攝像頭采集信息的焊縫檢測視覺圖像處理的方法[2];林蘭極,王庫等提出了一種基于DSP的石油管道焊縫檢測算法[3]。國際上,ANATOLY D,SERGEY K等研究了磁記憶方法對于管道缺陷線上檢測的應(yīng)用[4];美國通用電氣公司(GE)應(yīng)用的具有腐蝕檢測模式的超聲波相空陣管道內(nèi)檢測器,檢測精確度可達(dá)90%[5]。

然而,管道內(nèi)部空間狹小、光照不足及噪聲種類繁多等不利因素都為檢測閾值的選取帶來了困難。針對此現(xiàn)象,本文在前人研究基礎(chǔ)上提出一種可以根據(jù)檢測環(huán)境中的光照強(qiáng)度自適應(yīng)選取最佳閾值的算法。

2 圖像處理平臺——OpenCV簡介

2.1 OpenCV的基本特點(diǎn)

OpenCV實(shí)際是經(jīng)開發(fā)而得到的C源碼,全部的算法均以封裝在IPL的動態(tài)數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),擁有高靈活性。其以Intel處理器指令集為基礎(chǔ),超過50%的函數(shù)在進(jìn)行匯編或設(shè)計時,均能以Intel處理器指令集為對象,不斷優(yōu)化代碼并提高代碼運(yùn)行速度;OpenCV不僅有統(tǒng)一的功能定義與結(jié)構(gòu),而且還有便捷且靈活的接口,包含C/C++函數(shù)達(dá)300多個,其強(qiáng)大的矩陣計算能力幫助技術(shù)人員大幅減少開發(fā)時間與精力投入,不僅對程序開發(fā)質(zhì)量與效率有提升作用,還能提高整個程序運(yùn)行的穩(wěn)定性與可靠性;除此之外,OpenCV可以兼容多種操作系統(tǒng),包括MacOS、Linux、Windows等。同時支持大多C/C++編譯器,保證了代碼可以在多種平臺間無障礙移植,諸如C++Builder、VC.NET2005、Visual Studio及VC++6.0等。[6]

2.2 與本文算法相關(guān)的OpenCV庫函數(shù)簡介

由于本算法基于OpenCV實(shí)現(xiàn),所以在此將與本算法相關(guān)的OpenCV庫函數(shù)做簡單介紹,方便讀者在復(fù)現(xiàn)算法的同時也可以根據(jù)實(shí)際需求靈活地進(jìn)行修改。

(1)Mat():

Mat是OpenCV中最基本的庫函數(shù),屬于core模塊。嚴(yán)格意義上講Mat屬于“類”概念,由兩個數(shù)據(jù)部分組成:矩陣頭和一個指向存儲所有像素值的矩陣的指針。用于創(chuàng)建一個矩陣類型,開辟內(nèi)存空間來存放指定圖像。

函數(shù)原型:cv::Mat::Mat(int rows, int cols, int type, const Scalar &s;)

rows:預(yù)先指定圖像的行數(shù);cols:預(yù)先指定圖像的列數(shù);

type:圖像矩陣中每個元素在內(nèi)存中的存儲類型;

Scalar:OpenCV中的數(shù)據(jù)類,常用來定義每個通道中的值。

(下文中起相同作用的輸入變量不再做詳細(xì)介紹)

(2)at動態(tài)地址:

at()函數(shù)隸屬于Mat類。給使用者一個非常方便的接口以訪問圖像中的每個像素??捎糜诒闅v單通道以及多通道圖像。用法如下:

at (rows, cols) [int channel];

type:該圖像的類型,包括灰度、GRB等;

channel:圖像的通道數(shù)。

除此之外還用幾種常見的圖像遍歷方法,比如迭代法、查找表法以及利用LUT函數(shù)等方法。在此就不一一贅述了。

(3)threshold():

threshold()函數(shù)是OpenCV所提供的一種用于執(zhí)行基本閾值操作的庫函數(shù),屬于imgproc模塊。應(yīng)用此函數(shù)可以進(jìn)行多種閾值操作包括二進(jìn)制閾值化、反二進(jìn)制閾值化、截斷閾值化等。具體用法如下:

double threshold(Mat InputArray,Mat OutputArray, double threshold,double maxval,int threshold_type);

Mat InputArray:輸入圖像;Mat OutputArray:輸出圖像;

double threshold:使用者指定的操作閾值;

double maxval:進(jìn)行二值化操作時的最大閾值(最小閾值默認(rèn)為0);

int threshold_type:使用者可選定要進(jìn)行的閾值操作。

(4)Canny():

Canny()是OpenCV中的一種基本的邊緣檢測函數(shù),屬于imgproc模塊。其函數(shù)模型基于John F.Canny于1986年開發(fā)出來的一種多級邊緣檢測算法,又名Canny算法,至今被很多人認(rèn)為是邊緣檢測的最優(yōu)算法。Canny算法主要步驟包括使用高斯平滑濾波器卷積降噪、計算梯度幅值和方向、非極大值抑制和滯后閾值選取。[7]

在OpenCV中,其具體用法如下:

Canny(detected_edges,detected_edges,lowThreshold, lowThreshold*ratio,kernel_size);

lowThreshold:進(jìn)行滯后閾值選取時的低閾值;

lowThreshold*ratio:進(jìn)行滯后閾值選取時用到的高閾值(一般選為低閾值的三倍);

kernel_size:進(jìn)行卷積降噪時用到的卷積核的大小。

(5)findContours():

findContours()具有強(qiáng)大的尋找輪廓功能,屬于imgproc模塊。可以在圖像中尋找輪廓,并將輪廓的點(diǎn)陣信息存放在一個向量中以供調(diào)用。除此之外,用戶還可以利用此函數(shù)按照輪廓的層級關(guān)系指定將要被選擇的輪廓種類。具體用法如下:

void cv::findContours(InputOutputArray image, OutputArrayOfArrays contours,OutputArray hierarchy, int mode,int method,Point offset = Point() )

OutputArray hierarchy:函數(shù)返回的一個內(nèi)部包含有輪廓信息的向量。

int mode:使用者想要提取的輪廓層級類型。

int method:檢測輪廓時所使用的方法,包括四像素鄰域檢測和八像素鄰域檢測。

Point offset:檢測時的錨點(diǎn)相對坐標(biāo),默認(rèn)為中心點(diǎn)。

(6)drawContours():

drawContours()函數(shù)可以將按照一定格式規(guī)則存放在向量中的輪廓信息輸出在指定圖像上。通常與findContours()聯(lián)用。具體用法如下:

void DrawContours(Arr*img,Seq*contour,Scalar external_color,Scalar hole_color,int max_level,int thickness=1,int line_type=8,Pointoffset=Point(0,0));

Seq*contour:輸入一個存放輪廓信息的向量。

int max_level:向量中存儲的輪廓號,使用者可指定想要繪出的特定輪廓。

int thickness:繪出輪廓線條的厚度。

int line_type:繪出輪廓線條的類型,默認(rèn)值為8。

3 一種光強(qiáng)自適應(yīng)閾值選取方法過程

3.1 方法概述

在基于圖像處理的管道檢測過程中,對光照條件的要求總是十分嚴(yán)格。光源的位置、強(qiáng)度、色調(diào)等諸多因素都會可能對最終的檢測結(jié)果造成影響,基于此,該算法提出了一種在管道檢測領(lǐng)域中可以自行根據(jù)外界光強(qiáng)條件而選取最佳檢測閾值的方法。(本文中的最佳檢測閾值是指經(jīng)過二值化分割后直接可以準(zhǔn)確提取出故障輪廓的閾值)具體操作方法如下:

(1)圖像有效區(qū)域的獲取。考慮到不同的管道檢測系統(tǒng)有著較大的機(jī)械結(jié)構(gòu)差異,由于光源和攝像頭位置的不同,導(dǎo)致采集到的圖像也不盡相同。在圖像采集過程中,很有可能因?yàn)檫@些因素而導(dǎo)致采集到的圖像存在一部分的未受光照區(qū)域(下文稱為“無效區(qū)域”)。為了盡可能真實(shí)地反應(yīng)出圖像的受光照情況,首先需要將獲取的圖像進(jìn)行截取操作,以保證操作之后的圖像最大程度上地受光照覆蓋,以達(dá)到最理想的分析效果。本文中對采集到的圖像進(jìn)行灰度化處理之后截取得到長、寬分別為原圖長、寬的q倍的中心有效區(qū)域(q<1)以去除未受光照的無效區(qū)域。

(2)相關(guān)量的定義與計算。統(tǒng)計(1)所得圖像中像素點(diǎn)總數(shù),記為j;設(shè)λ是人工定義的圖像基準(zhǔn)灰度值,統(tǒng)計圖像中灰度值大于λ的像素點(diǎn)總數(shù),記為α。定義灰度光強(qiáng)比例:β=,分別有四個特殊點(diǎn)α1,α2,α3,α4,滿足關(guān)系式:

;=λ;

;=2λ;

β1,β2,β3,β4分別為α1,α2,α3,α4四個特殊點(diǎn)對應(yīng)的灰度光強(qiáng)比例。

對關(guān)系式進(jìn)行求解,得到:

α1=;α2=;α3=;α4=;

(3)有效區(qū)域閾值計算前的條件判斷。根據(jù)條件Ⅰ:α> α4,判斷有效灰度圖像是否滿足光照條件:當(dāng)滿足條件Ⅰ時,繼續(xù)步驟4);如果不滿足條件Ⅰ,即圖像中灰度值大于基準(zhǔn)灰度值的像素個數(shù)較小,反應(yīng)出檢測環(huán)境光照強(qiáng)度不足,如果此時仍要繼續(xù)檢測會嚴(yán)重影響故障信息的提取準(zhǔn)確度。因此當(dāng)α<α4時應(yīng)當(dāng)停止檢測,并提高檢測儀器的光源亮度。

(4)基于灰度光強(qiáng)比例的最佳閾值計算。根據(jù)灰度值大于λ的像素點(diǎn)總數(shù)α,運(yùn)用函數(shù)δ=δ(α)求得最佳閾值δ;

δ=;

函數(shù)中ε為特殊設(shè)定的閾值補(bǔ)償量,α1,α2,α3,α4分別為該目標(biāo)圖像最佳閾值函數(shù)的分段區(qū)間的區(qū)間端點(diǎn),依據(jù)α所處的區(qū)間,由分段函數(shù)計算δ。

通過分析此函數(shù)不難發(fā)現(xiàn),該函數(shù)有兩個最值,δmax= λ,δmin=λ,該函數(shù)所選取的所有閾值均在此范圍之間。可以通過人工選取λ值使所選閾值較為準(zhǔn)確地反應(yīng)出真實(shí)的最佳檢測閾值。(本文所選取的λ值為200,后文的實(shí)驗(yàn)部分對此有詳細(xì)闡述)

3.2 應(yīng)用舉例

基于本算法的處理流程,下面將列舉對一幅采集到的實(shí)際管道圖像的處理過程進(jìn)行說明。

本例證使用了OpenCV3.4.3,并在PC端的Visual Studio 2015編譯環(huán)境下進(jìn)行操作。在此基礎(chǔ)上,本文還使用了搭載Linux系統(tǒng)的樹莓派3b+主板(微處理器型號為ARM Cortex A53系列)進(jìn)行算法驗(yàn)證,并在管道中進(jìn)行實(shí)際測試。處理效果顯示本算法可以在開發(fā)板上進(jìn)行復(fù)現(xiàn),可以應(yīng)用于實(shí)際管道檢測產(chǎn)品。下文介紹的操作方法是在PC端上進(jìn)行的相關(guān)操作。

(1)通過攝像頭返回一張三通道彩色圖像并進(jìn)行灰度化處理。如圖1。

(2)將所得的圖片進(jìn)行截取,以獲得中心有效區(qū)域。這里的q值為0.6,以下的數(shù)據(jù)計算均為在此區(qū)域內(nèi)計算得出的。

(3)相關(guān)量的計算,此處設(shè)定基準(zhǔn)灰度值λ=200,需要計算超過基準(zhǔn)灰度值的像素總個數(shù)j、像素個數(shù)α以及灰度光強(qiáng)比例β。(如圖2)

判斷光照強(qiáng)度是否達(dá)到檢測要求,并根據(jù)公式δ=δ(α)對最佳檢測閾值進(jìn)行求解,(如圖3)得到此時的最佳處理閾值δ=190。

4 實(shí)驗(yàn)與分析

實(shí)驗(yàn)在模擬性半封閉的管道中開展,該管道中有5組人工制造的經(jīng)典故障。實(shí)驗(yàn)共采取了三種不同強(qiáng)度的光照條件(下文分別以光強(qiáng)Ⅰ、光強(qiáng)Ⅱ和光強(qiáng)Ⅲ代替,三種光強(qiáng)依次減弱),每種條件下分別對每組故障進(jìn)行三次圖像采集,并分別對采集到的圖像進(jìn)行實(shí)際最佳閾值范圍的手動測量和算法對最佳閾值范圍的計算測量,共計得到了135組有效閾值范圍。下面將選取其中具有代表性的5組實(shí)驗(yàn)數(shù)據(jù)(最強(qiáng)光強(qiáng)條件下的實(shí)驗(yàn)三次,普通光強(qiáng)和最弱光強(qiáng)條件下的實(shí)驗(yàn)各一次)進(jìn)行結(jié)果分析。

為了得到最接近實(shí)際最佳的檢測閾值范圍,可以通過手動調(diào)節(jié)二值化閾值參數(shù)并人工觀測各組圖像中故障輪廓能夠被識別和檢測出的最小臨界閾值和最大臨界閾值,從而得出對于該故障的實(shí)際最佳閾值范圍,表1所示的表格展示了實(shí)際最佳的檢測閾值范圍的測量情況;另外,先計算每組故障圖片的灰度光強(qiáng)比例β,進(jìn)而按照本文提出的光強(qiáng)自適應(yīng)算法得出一個最佳檢測閾值,表2所示的表格展示了最佳檢測閾值范圍的算法預(yù)測情況。

通過對比表1和表2中的數(shù)據(jù)可以發(fā)現(xiàn),算法預(yù)測的最佳檢測閾值均基本落在實(shí)際最佳檢測閾值范圍內(nèi),證明了本算法的有效性。

本文根據(jù)表1中的數(shù)據(jù)繪制了如圖4-1和圖4-2的閾值分布范圍直方圖。對比圖中數(shù)據(jù)可以發(fā)現(xiàn),當(dāng)光強(qiáng)變?nèi)鯐r,最佳檢測閾值范圍呈下降趨勢,同時最佳閾值的區(qū)間長度也隨著光強(qiáng)變?nèi)醵饾u縮短。因此,如果光強(qiáng)過弱,將會導(dǎo)致檢測效果不穩(wěn)定、誤檢率高等問題。為解決這些問題,本文建議使用者在檢測過程中適當(dāng)提高工作環(huán)境的光照強(qiáng)度。

另外,通過觀察閾值分布直方圖可以發(fā)現(xiàn),在最強(qiáng)光強(qiáng)下,高亮故障的最佳檢測閾值范圍為190-200,陰影故障的最佳檢測范圍為140-150,兩區(qū)間上(下)限差值為50。因此本文在算法中采用50作為高低閾值區(qū)間上(下)限的差值。

5 結(jié)語

本文提出了一種管道內(nèi)基于圖像處理的光強(qiáng)自適應(yīng)檢測算法并且展示了對實(shí)際管道故障進(jìn)行的檢測實(shí)驗(yàn)。該算法具體包括了一種基于灰度光強(qiáng)比例的閾值自適應(yīng)算法,基于OpenCV視覺庫,可以有效地適應(yīng)檢測過程中光照強(qiáng)度條件變化產(chǎn)生的影響,計算出適合該光照條件下的最佳檢測閾值范圍。實(shí)驗(yàn)結(jié)果表明,本文提出的算法可以準(zhǔn)確地選取最適合當(dāng)前光強(qiáng)條件的檢測閾值,這為后續(xù)管道故障圖像處理工作打下識別和提取方面的基礎(chǔ)。

參考文獻(xiàn)

[1]韓文花.油氣管道漏磁信號去噪及缺陷重構(gòu)算法的研究[D].上海:上海交通大學(xué),2006:2-5.

[2]廖志華,甘志梅,吳園.管道焊縫檢測視覺圖像處理的研究[J].工藝與新技術(shù),2011,40(6):33-36.

[3]林蘭極,王庫,陳立國.給予DSP的石油管道焊縫檢測機(jī)器人系統(tǒng)[J].電子測量技術(shù),微處理器應(yīng)用,2007,30(1):144-146.

[4]ANATOLY D, SERGEY K. The metal magnetic memory method application for monitoring of damage development in steel pipes and welded joints specimens[J].Weld World, 2013,57(12):123-136.

[5]NAVA B L,SOTO C J A.Development of an ulteasonic thickness measurement equipment[M].IEEE Signal Processing Magezine,2002,49(6):848-851.

[6]陳之堯.以O(shè)penCV為基礎(chǔ)的圖像預(yù)處理技術(shù)在無人機(jī)視頻的應(yīng)用[J].電子技術(shù)與軟件工程,2018,(16):63-64.

[7]楊少令,刁燕,羅華,徐天雄.一種改進(jìn)的Canny圖像分割算法[J].計算機(jī)與現(xiàn)代化,2018,(08):57-60.

娄烦县| 江城| 乌兰浩特市| 怀远县| 北票市| 万全县| 荣昌县| 运城市| 吉安市| 尖扎县| 驻马店市| 娄烦县| 肥西县| 神农架林区| 城固县| 怀远县| 柘荣县| 青阳县| 杭锦旗| 花莲市| 册亨县| 博罗县| 新巴尔虎右旗| 中西区| 洛宁县| 收藏| 南江县| 兴和县| 荥经县| 汪清县| 宝鸡市| 龙游县| 文山县| 容城县| 长汀县| 汕尾市| 林周县| 宜川县| 洛隆县| 桐梓县| 合川市|