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

?

基于視覺的發(fā)電機油位檢測與控制研究

2017-11-02 00:34李洋洋
軟件導(dǎo)刊 2017年10期

李洋洋

摘要:設(shè)計了一種基于圖像視覺技術(shù)的發(fā)電機油箱油位檢測與控制系統(tǒng)。通過MVCII1MM黑白相機采集油位觀察口液位圖像,通過USB2.0接口傳送到工控機,采用自適應(yīng)閾值二值化、橢圓檢測、直線檢測等一系列圖像檢測技術(shù),得到當(dāng)前油位高度,通過RS232接口傳入PLC,根據(jù)油位高度打開液位閥進(jìn)行相應(yīng)的添油、排油、報警等操作。

關(guān)鍵詞:圖像視覺;發(fā)電機油位檢測;二值化;直線檢測

DOIDOI:10.11907/rjdk.171698

中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A文章編號:16727800(2017)010013903

0引言

傳統(tǒng)的發(fā)電機油箱油位檢測是靠人工觀察和浮子閥控制,可靠性不高,難以及時獲取油箱液位數(shù)據(jù)并進(jìn)行相應(yīng)操作,容易出現(xiàn)事故,需要一種穩(wěn)定、安全、有效的液位檢測技術(shù)。

隨著科技的發(fā)展,人們研制出多種液位檢測方法,如浮子式、壓力式、電容式等[1]。由于發(fā)電機油箱密封,易燃、易爆,對壓強要求高,非接觸式液位檢測方法是首選。常見的非接觸式液位檢測方法有雷達(dá)式液位檢測、激光式液位檢測、基于圖像視覺的液位檢測等等[2]。雷達(dá)式液位檢測精度高,但成本高且技術(shù)難度大;激光式液位檢測可在易燃易爆環(huán)境下進(jìn)行,抗干擾能力強,但對安裝空間及激光頭防腐要求高;基于圖像視覺的液位檢測,經(jīng)圖像采集后由計算機進(jìn)行處理獲得液位高度。這種檢測方法具有適應(yīng)性好、檢測精度高等優(yōu)點。

本文提出基于圖像視覺技術(shù)的發(fā)電機油箱油位檢測與控制系統(tǒng)。通過微視工業(yè)攝像頭采集油箱液位觀察口液位圖像,在VC++6.0平臺下配置OpenCV1.0,對圖像進(jìn)行一系列圖像處理獲得油位的高低,并通過PLC打開液位閥進(jìn)行相應(yīng)的添油、排油、報警等控制。

1系統(tǒng)結(jié)構(gòu)設(shè)計

系統(tǒng)由圖像采集裝置、PLC、工控機、RS232接口幾部分組成。油箱液位由圖像采集裝置(相機、光源)采集圖像,傳入工控機,進(jìn)行數(shù)字圖像處理得到液位高度,通過RS232接口傳入PLC,與PLC中預(yù)設(shè)好的上下限位閥進(jìn)行比較,發(fā)出控制閥門和報警器信號。系統(tǒng)框圖如圖1所示。

系統(tǒng)CMOS光學(xué)傳感器采用北京微視公司的MVCII1MM黑白攝像頭,采用USB2.0接口,可使用自身SDK函數(shù)庫進(jìn)行二次開發(fā),采集實時圖像。

常見的照明技術(shù)有背光照明、直接照明、散射照明、同軸照明等[3]。由于本設(shè)計是對密封油箱液位觀察口里的液位進(jìn)行檢測,不易采用采光效果較好的背光照明,但如果采用直接照明,觀察口是玻璃材質(zhì)會引起鏡面反光現(xiàn)象,故使用同軸照明,即設(shè)置一塊45°半透半反玻璃,LED燈發(fā)出的光線垂直照在液位觀察口,從液位觀察口反射的光向上穿過半透半反玻璃進(jìn)入攝像頭。這樣消除了反光,圖像中也沒有攝像頭影子。

選用三菱FX2N作為控制單元,只需使用一個IO口接收由FX2N232BD 通訊模塊接口傳來的液位高度信息,3個數(shù)字輸出口用來控制補油閥、排油閥和報警器。

2基于OpenCV的視覺測量軟件

視覺測量系統(tǒng)軟件設(shè)計流程:微視相機采集實時圖像,進(jìn)行圖像轉(zhuǎn)換成OpenCV的數(shù)據(jù)類型,再采用OpenCV 庫函數(shù)進(jìn)行處理分析,如圖3所示。

2.1圖像采集預(yù)轉(zhuǎn)換

使用微視公司的MVCII1MM工業(yè)攝像頭,不能直接調(diào)用OpenCV函數(shù)打開視頻函數(shù)進(jìn)行采集,只能使用自身SDK函數(shù)。先初始化設(shè)備,使用cvSetData函數(shù)對每一幀圖像進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成OpenCV 庫函數(shù)常使用的IplImage數(shù)據(jù)類型,再利用相關(guān)圖像處理函數(shù)對采集的圖像進(jìn)行處理分析。對圖像的圓和直線進(jìn)行檢測,模擬油位觀察口和油位檢測效果。初始化函數(shù)和轉(zhuǎn)化程序如下:

(1)設(shè)備初始化函數(shù)MV_Usb2Init。

int nRet = MV_Usb2Init("MVC1000", &nIndex, &m_CapInfo, &m_hMVC1000);

"MVC1000"用于表示攝像機的字符串

nIndex當(dāng)此函數(shù)調(diào)用成功時返回,返回MVC1000相機索引,本設(shè)計只采用一個攝像頭,則返回0

m_CapInfo用于初始化捕獲視頻幀的參數(shù)

m_hMVC1000返回的MVC1000設(shè)備句柄

(2)設(shè)置每幀顯示前的圖像處理回調(diào)。

MV_Usb2SetFrameCallBack( m_hMVC1000, FrameCallBack, this )

FrameCallBack是設(shè)置的回調(diào)函數(shù)指針,里面的第一參數(shù)是sdk開發(fā)包送出的采集圖像像素首地址指針[3],本文通過這個指針訪問并轉(zhuǎn)換處理圖像數(shù)據(jù)。

(3)圖像格式轉(zhuǎn)化程序。

void CDlgDemoDlg::FrameCallBack(BYTE *pData)

{

int nScaleMode = GetScaleMode( &m_CapInfo );

for( int i= 0; i< 20; i++ )

for( int j= 0; j<30; j++ )

pData[i*m_CapInfo.Width/nScaleMode+j] = 255;

IplImage*src_Img=cvCreateImageHeader(cvSize(m_CapInfo.Width,m_CapInfo.Height),IPL_DEPTH_8U,1);

cvSetData(src_Img,pData,m_CapInfo.Width);//根據(jù) BYTE*圖像數(shù)據(jù)指針設(shè)置IplImage圖像頭的據(jù)數(shù)據(jù)

}endprint

2.2圖像預(yù)處理

視頻采集畫面常常超過液位觀察口大小,為此可對圖像設(shè)置感興趣區(qū)域ROI,以降低邊緣檢測的復(fù)雜性,減少區(qū)域干擾,節(jié)約圖像處理時間。使用OpenCV函數(shù)cvSetImageROI(),在圖像中央設(shè)置一個長300寬300的矩形區(qū)域,只對這個區(qū)域進(jìn)行圖像處理和分析。

使用Gamma矯正進(jìn)行圖像增強,將gamma值設(shè)置為0.7,增強暗光部分。然后使用cvSmooth()函數(shù)對液位圖像進(jìn)行平滑處理,消除噪聲。平滑方式選用CV_MEDIAN中值濾波方式,濾波板塊選用3×3板塊,使圖像孤立的噪聲邊大大減少,液位線和觀察口的輪廓邊變清晰。

2.3自適應(yīng)閾值二值化

雖然光照系統(tǒng)設(shè)計很好,但還是會出現(xiàn)光照不均、突發(fā)噪聲等情況。假設(shè)使用一個恒定的全局閾值量對油位圖像二值化,會因為不能照顧所有的地方而影響二值化效果。本文使用OpenCV的自適應(yīng)二值化函數(shù)void cvAdaptiveThreshold(const CvArr* src, CvArr* dst, double max_value,int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,int threshold_type=CV_THRESH_BINARY,int block_size=3, double param1=5)。這個函數(shù)轉(zhuǎn)換方法由threshold_type參數(shù)類型決定 [4],這里選用CV_THRESH_BINARY_INV類型,其轉(zhuǎn)換公式如下:

dst(x,y)=0ifsrc(x,y)>T(x,y)

max_valueotherwise(1)

其中任一個像素點的閾值T(x,y)都不一樣,通過選擇CV_ADAPTIVE_THRESH_MEAN_C方法,計算像素點周圍區(qū)域的均值,再減去param1常數(shù)來得到相應(yīng)閾值。這種自適應(yīng)圖像二值化方法不僅有二值化效果,還可以獲得物體邊緣,起著邊緣檢測的作用。

2.4液位觀察口外輪廓擬合

在擬合類橢圓時本文采用經(jīng)典的最小二乘法。最小二乘法即在隨機誤差項大體服從高斯分布后,結(jié)合最大似然估計法建立一套最優(yōu)估計法,運用此估計法可估算出離實際數(shù)據(jù)最近的未知數(shù)據(jù)。換言之,使估計的數(shù)據(jù)結(jié)果與實際數(shù)據(jù)之間的離差平方和達(dá)到最小。

設(shè)橢圓方程:

Ax2+Bxy+Cy2+Dx+Ey+F=0(2)

為避免出現(xiàn)全為0的解,在參數(shù)設(shè)置時再添加一個數(shù)值約束條件:假定A+C=1,將該約束條件直接帶入公式(2),即用最小二乘法分析檢測到的邊緣點數(shù)據(jù),繼而求取目標(biāo)函數(shù)f(A,B,D,E,F(xiàn)):

f(A,B,D,E,F(xiàn))=

∑ni(Ax2i+Bxiyi+Cy2i+Dxi+Eyi+F)2(3)

解出函數(shù)(3)中的系數(shù)值(A,B,…,F(xiàn)),再通過極值原理即目標(biāo)函數(shù),對各系數(shù)求為0的偏導(dǎo)數(shù),從而使f(A,B,D,E,F(xiàn))最?。?/p>

fA=fB=fD=fE=fF=0(4)

結(jié)合約束條件,建立一個由6個等式組成的線性方程組。6個方程,6個未知數(shù),求出唯一解,即所要估計的參數(shù)值[5]。

最小二乘法參數(shù)估計,調(diào)用Opencv中的cvFitElipse()庫函數(shù)即可完成對橢圓的最小乘法擬合,視覺上表現(xiàn)為返回一個與實際圖像最為近似的輪廓橢圓。假設(shè)輪廓橢圓在成像中的短軸半徑為r,橢圓心坐標(biāo)為(xr,yr)。

2.5液位線檢測

本文采用hough變換檢測直線。在平面直角坐標(biāo)系中,一條直線一般都用式(5)表示:

y=kx+b(5)

假設(shè)點(x0,y0)為直線上的一個定點,有y0=kx0+b,為參數(shù)平面(k-b)的直線,即圖像中的每個點的位置都與參數(shù)平面中唯一的一條直線對應(yīng),圖像中的任意一條直線都有唯一的一個參數(shù)平面中的點與之對應(yīng)。用霍夫變換處理圖像中所有點,其中直線相交頻繁的點所在的直線即所要檢測的直線。

工程數(shù)學(xué)中常用極坐標(biāo)參數(shù)方程表示直線:

p=xcosθ+ysinθ(6)

直線檢測調(diào)用Opencv中的cvHoughLines2庫函數(shù)。根據(jù)檢測到的液位直線與直線檢測原理,即可求解出液位線上的一個點(xp,yp)。圖4、圖5為檢測前的圖像和檢測完擬合好的橢圓和直線圖像。

2.6油位高度測算方法

處理上述圖像得到橢圓和直線的相關(guān)參數(shù),代入公式(7)即可求出油位高度h。

h=yr-yp+r2r×1 0000

其中:yr為橢圓圓心y的坐標(biāo)值,yp為液位線坐標(biāo)值,r為橢圓短軸半徑。

3油位控制

油位高度信息通過RS232接口傳入到PLC并進(jìn)行相應(yīng)處理。工控機得到液位高度信息,經(jīng)過RS232接口,PLC將其與預(yù)設(shè)好的上下限位閾值比較。當(dāng)油位低于設(shè)定下限閾值時,打開補油閥,油箱進(jìn)油;當(dāng)油位高于設(shè)定上限閾值,則打開排油閥排油;當(dāng)油位在設(shè)定值范圍內(nèi)則關(guān)閉閥門。通過PLC顯示當(dāng)前的油位與閥門狀態(tài),根據(jù)設(shè)定好的油位上下限與當(dāng)前實際值之間的變化控制閥門開關(guān),實現(xiàn)注油、排油。當(dāng)油位超過上限閾值或低于下限閾值,開始報警。

4結(jié)語

本文基于視覺OpenCV設(shè)計了一套發(fā)電機油位檢測與控制智能系統(tǒng),能自動監(jiān)視發(fā)電機油箱油位實時數(shù)據(jù)并進(jìn)行相應(yīng)處理。系統(tǒng)輔助設(shè)施簡單,大大節(jié)省了人力物力,為發(fā)電機液位智能化管理提供了解決方案,很大程度上避免了意外事件的發(fā)生。在后續(xù)工作中還需要研究照明系統(tǒng)在光線不足情況下的實時曝光補償,以及更高效的液位檢測算法。

參考文獻(xiàn)參考文獻(xiàn):

[1]劉治鋒.基于圖像的水位自動檢測研究[D].南京:南京理工大學(xué),2004.

[2]龔聲蓉,劉純平,王強,等.數(shù)字圖像處理與分析[M].北京:清華大學(xué)出版社,2006.

[3]王敏,夏咸軍.新型LED背光源技術(shù)及應(yīng)用[J].光電子技術(shù),2005,25(4):267270.

[4]劉瑞禎,于仕琪.OpenCV教程基礎(chǔ)篇[M].北京:北京航空航天大學(xué)出版社,2007.

[5]劉江,張岑.基于OpenCV的圓形標(biāo)記點的提取[J].組合機床與自動化加工技術(shù),2013(5):2628.

責(zé)任編輯(責(zé)任編輯:杜能鋼)