高 鵬
(1.中煤科工集團(tuán)唐山研究院有限公司,河北 唐山 063012;2.華北理工大學(xué) 電氣工程學(xué)院,河北 唐山 063009;3.河北省煤炭洗選工程技術(shù)研究中心,河北 唐山 063012)
計(jì)算機(jī)視覺是一個(gè)迅速發(fā)展的領(lǐng)域,攝像機(jī)價(jià)格不斷降低且功能越來越強(qiáng)、計(jì)算能力的普及和視覺算法的日臻成熟都帶動了該領(lǐng)域的發(fā)展。OpenCV(計(jì)算機(jī)視覺庫)在計(jì)算機(jī)視覺的發(fā)展中扮演著重要的角色,該視覺庫使數(shù)千名研究人員在視覺領(lǐng)域能夠獲得更高的生產(chǎn)力[1]。傳統(tǒng)的浮選尾礦在線檢測主要集中在γ射線檢測法和光電式測灰法兩種方法。近年來,隨著圖像識別技術(shù)的發(fā)展,利用計(jì)算機(jī)視覺分析煤泥浮選尾礦圖片的灰度,再根據(jù)經(jīng)驗(yàn)公式推導(dǎo)出對應(yīng)的尾礦灰分的方法正在逐步興起。
包玉奇[2]等人提出以灰度值子區(qū)間的像素點(diǎn)分布構(gòu)成建立特征向量,對尾礦灰分進(jìn)行識別的方法,使特征敏感度得到一定程度的增強(qiáng),尾礦識別精度提高比較明顯;但該研究所用樣本是在實(shí)驗(yàn)室配制的,缺少現(xiàn)場工業(yè)性試驗(yàn)的驗(yàn)證。王曉坤[3]等人研制的浮選尾礦灰分在線檢測裝置,解決了浮選尾礦灰分無法直接測量的難題,克服了人工采制化帶來的化驗(yàn)誤差大、實(shí)時(shí)性差、勞動強(qiáng)度大、工序繁瑣的缺點(diǎn),減小了工藝指標(biāo)控制的調(diào)整時(shí)間;但該裝置采用原始圖像灰度值比對方法來檢測尾礦灰分,誤差干擾偏大,僅適用于環(huán)境不復(fù)雜的工況條件。工業(yè)現(xiàn)場利用計(jì)算機(jī)視覺技術(shù)分析尾礦灰分,其中的關(guān)鍵環(huán)節(jié)是如何合理地剔除光照不均和化學(xué)流變產(chǎn)生的泡沫噪點(diǎn)影響。文章重點(diǎn)分析了如何在算法中消除這類因素的不良影響,從而得到更客觀的、可用于計(jì)算分析的尾礦圖片。
(1)硬件平臺。煤泥浮選尾礦圖片采樣分析系統(tǒng)的硬件平臺主要包括工控機(jī)、USB視頻采集卡、工業(yè)CCD相機(jī)。在實(shí)際操作過程中,可根據(jù)試驗(yàn)需要選擇合適的硬件設(shè)備。
(2)軟件平臺。在綜合考慮的基礎(chǔ)上,利用USB視頻采集卡,結(jié)合VS2010平臺開發(fā)浮選尾礦圖片采樣分析系統(tǒng)。圖像處理算法庫選擇OpenCV,其包含了一系列C函數(shù)和少量C++函數(shù),能夠?qū)崿F(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。它擁有包括300多個(gè)C/C++函數(shù)的跨平臺的中、高層API,無需依賴其他的外部庫,通過調(diào)用OpenCV算法庫,即可在前人已完成的成熟算法基礎(chǔ)上迅速開展自己的工作。OpenCV作為一個(gè)基本的計(jì)算機(jī)視覺、圖像處理和模式識別的開源項(xiàng)目,可以直接用于很多領(lǐng)域,是二次開發(fā)的理想工具[4]。
OpenCV庫擁有的顯著優(yōu)點(diǎn)為:獨(dú)立于操作系統(tǒng)、硬件及圖形管理器,可以跨平臺操作;無論是非商業(yè)應(yīng)用還是商業(yè)應(yīng)用,都無需付費(fèi);計(jì)算速度快,使用方便;可擴(kuò)展性好,包括底層和高層的應(yīng)用開發(fā)包;圖像/視頻載入、保存及獲取模塊具有通用性。
該系統(tǒng)的首要功能是定時(shí)采集圖片,即根據(jù)設(shè)定的時(shí)間間隔對特定對象拍照;其次是剔除干擾,包括光源反光和氣泡反光造成的干擾;再次是按照設(shè)定的時(shí)間存儲圖片,圖片依據(jù)采集時(shí)間命名;最后是記錄采集時(shí)得到的灰度數(shù)據(jù),根據(jù)內(nèi)部建立的公式將其轉(zhuǎn)換成尾礦灰分?jǐn)?shù)據(jù)并輸出。系統(tǒng)檢測流程框圖如圖1所示。
圖1 系統(tǒng)檢測流程框圖
程序開頭是加載必要的頭文件。頭文件作為一種包含功能函數(shù)、數(shù)據(jù)接口聲明的載體文件,主要用于保存程序的聲明,而定義文件用于保存程序的實(shí)現(xiàn)。程序中的頭文件主要包括“highgui.h”、“cv.h”、“cxcore.h”、“windows.h”、“atltime.h”、“cvaux.h” 等。該程序的加載頭文件如圖2所示。
圖2 加載頭文件
在安裝好USB視頻采集卡驅(qū)動后,需在程序中指定采集的圖片來源。該采集卡屬于外部來源,故設(shè)置為“CAM(1)”,對應(yīng)的源程序?yàn)?“CvCapture *capture=cvCaptureFromCAM(1);”。 接下來是創(chuàng)建采樣窗口,程序中設(shè)置了4個(gè)顯示窗口,分別為“原圖”、“灰度圖”、“灰度分布圖”、“二值圖”,該步的操作主要包括定義字符串變量“const char”,設(shè)置窗口名稱 “cvNamedWindow”,設(shè)置窗口大小 “cvResizeWindow”,排布窗口位置 “cvMoveWindow”。顯示窗口設(shè)置如圖3所示。
圖3 顯示窗口設(shè)置
在接下來的while循環(huán)中,利用OpenCV自帶的CV_BGR2GRAY函數(shù)命令,將彩色圖片轉(zhuǎn)換為灰度圖片,再通過CV_THRESH_BINARY函數(shù)將灰度圖片轉(zhuǎn)換為二值圖片,二值圖片轉(zhuǎn)換時(shí)閾值暫定為185。閾值處理的操作過程是通過算法生成一個(gè)閾值,如果圖像中某像素的灰度值小于該閾值,則將該像素的灰度設(shè)置為0或255,否則灰度值設(shè)置為255或0[5]。圖片色彩轉(zhuǎn)換設(shè)置如圖4所示。
圖4 圖片色彩轉(zhuǎn)換設(shè)置
接下來是以時(shí)間為名稱保存灰度圖片和二值圖片,定義時(shí)間字符串變量,命名圖片格式,讀取系統(tǒng)時(shí)鐘,此時(shí)分別用到了GetLocalTime(&sysTime)、GetCurrentTime()、cvSaveImage三個(gè)函數(shù)。保存圖片設(shè)置如圖5所示。
在算法實(shí)現(xiàn)環(huán)節(jié),首先是定義灰度圖中的總灰度值為M0,總像素點(diǎn)數(shù)為N0;二值化后的圖片總灰度值為M1,白色像素點(diǎn)的個(gè)數(shù)N1。由于二值化后的圖片總灰度值均是由白色像素點(diǎn)組成,假設(shè)每一個(gè)干擾氣泡或反光點(diǎn)的灰度值近似為255,故可求出干擾點(diǎn)個(gè)數(shù),即N1=M1/255。原始圖片剔除干擾后的真實(shí)灰度值為(M0-M1),有效像素點(diǎn)為(N0-N1);真實(shí)的平均灰度即為(M0-M1)/(N0-N1);最后通過“ofstream ofs”函數(shù)將采樣結(jié)果存入EXCEL表格。程序?qū)崿F(xiàn)過程如圖6所示。
利用Sleep函數(shù)設(shè)定采樣間隔時(shí)間,通過cout在windows控制臺按照設(shè)定時(shí)間輸出采樣結(jié)果,并銷毀窗口,釋放內(nèi)存,最終跳出循環(huán)。
程序運(yùn)行后的界面輸出如圖7所示。左側(cè)上方是windows控制臺的輸出,按照采樣日期和時(shí)間分別輸出原始灰度值、剔除氣泡和反光后的灰度值、總像素點(diǎn)個(gè)數(shù)、噪點(diǎn)像素點(diǎn)個(gè)數(shù)。右側(cè)為實(shí)時(shí)輸出的采樣圖片,其中左上角是相機(jī)采集的原始圖片,右上角是經(jīng)過轉(zhuǎn)換的灰度圖片(灰階圖),左下角是灰度分布圖,右下角是二值圖?;叶确植紙D可以反映圖象中每種灰度值出現(xiàn)的頻率,其橫坐標(biāo)是灰度級,縱坐標(biāo)是該灰度級出現(xiàn)的頻率。
圖6 程序?qū)崿F(xiàn)過程
圖7 程序運(yùn)行界面
從灰度圖片可以看出,在浮選尾礦流過閘板位置時(shí)出現(xiàn)一個(gè)小“瀑布”,該位置最易形成反光干擾;浮選尾礦槽的邊緣出現(xiàn)了一些堆積氣泡,也容易造成反光干擾。通過二值圖中亮點(diǎn)的計(jì)算,能夠?qū)⒆罱K灰度圖中的反光和氣泡干擾濾掉。
將不同時(shí)刻的原始灰度值和修正灰度值與化驗(yàn)灰分值進(jìn)行比較,生成的對比曲線如圖8所示。其中,灰度值范圍在0~255之間,灰分值區(qū)間在0~100%之間,坐標(biāo)軸的橫坐標(biāo)代表采樣次數(shù),縱坐標(biāo)分別為灰度均值和尾礦灰分百分?jǐn)?shù)。
由圖8可知:剔除氣泡、反光干擾后,圖片的灰度值與化驗(yàn)所得灰分值的對應(yīng)關(guān)系更加明顯。
圖8 原始灰度值與修正灰度值及化驗(yàn)灰分曲線
為了改進(jìn)浮選尾礦的采樣分析算法,以煤泥浮選尾礦圖片為研究對象,基于OpenCV開源的計(jì)算機(jī)視覺函數(shù)庫、USB視頻采集卡、VS2010平臺開發(fā)出浮選尾礦圖片采樣分析系統(tǒng)。該系統(tǒng)能夠有效剔除采樣過程中的光照和氣泡干擾,使圖片中數(shù)據(jù)的客觀性、真實(shí)性得到顯著提高,這為驗(yàn)證圖片灰度與浮選尾礦灰分的關(guān)系提供了可靠的解決方案。
[1] BRADSKI G,KAEHLER A.學(xué)習(xí)OpenCV[M].于仕琪,劉瑞禎,譯.北京:清華大學(xué)出版社,2009:XV.
[2] 包玉奇,楊潔明.基于機(jī)器視覺的浮選尾礦灰分檢測[J].煤炭技術(shù), 2015, 34(9):313-316.
[3] 王曉坤,張衛(wèi)軍,高 鵬,等. 一種浮選尾礦灰分在線檢測裝置:201320375280.5[P]. 2013-11-20.
[4] 陳勝勇,劉 盛.基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)[M]. 北京:科學(xué)出版社,2008:8.
[5] 楊淑瑩.VC++圖像處理程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005:58.