摘 要:本文設(shè)計了一套針對煙葉自動化烤制過程中圖像處理與特征圖樣識別的算法,并給出了其中一些步驟的C語言和MATLAB程序以作模擬。以期為煙葉生產(chǎn)廠商自動化生產(chǎn)流程中關(guān)鍵階段準(zhǔn)確識別提供思路。
關(guān)鍵詞:煙葉烤制;圖像處理;圖像識別;自動化
1 烤煙制作全過程中各狀態(tài)圖像的特征分析
1.1 鮮煙狀態(tài)(烘烤前):煙葉呈現(xiàn)鮮綠色,葉片明顯舒展文理較為平整、圖中的“溝壑”較少,葉片過渡平整。
1.2 葉片變軟狀態(tài)(失水20%):煙葉明顯變黃,呈現(xiàn)黃綠色,葉片開始蜷縮但“溝壑”仍較少,葉片較為平整。
1.3 主脈變軟狀態(tài)(失水30%):葉片基本全部變黃,只有葉片中部尚存在零星綠色(應(yīng)為煙葉的輸水管部分),葉片蜷縮現(xiàn)象更加明顯。
1.4 勾尖卷邊狀態(tài)(失水40%):葉片黃色繼續(xù)加深,蜷縮明顯,出現(xiàn)“溝壑”現(xiàn)象。
1.5 小打筒狀態(tài)(失水55%):黃色略微加深,“溝壑”繼續(xù)加深。
1.6 大打筒狀態(tài)(失水75%):葉片最黃,“溝壑”最為明顯。
1.7 干筋狀態(tài)(烘烤結(jié)束):葉片黃色略微回淺(即更鮮亮),綠色含量最少,“溝壑”現(xiàn)象依舊比較明顯但比較前一狀態(tài)有所舒展,葉片色澤均勻。
2 本文設(shè)計的工作流程
2.1 CCD數(shù)碼相機定時拍攝圖像直接傳至計算機端,每次圖像保存兩份;
2.2 對一份圖片分別進入RGB通道處理,處理前先進行巴特沃斯低通濾波或中值濾波(普遍認為巴特沃斯低通濾波效果更好,如采用中值濾波經(jīng)重慶大學(xué)楊陽[3]等人反復(fù)試驗測試得出采用5 X 5鄰域的中值濾波效果較好),再分別求出其紅綠藍分量特征值。紅綠藍三色特征值分別達到146、115、43時可以認為煙葉是烤制完成的干筋狀態(tài)。三色中有一色不符合即為未完成,刪除舊圖像后從新提取新的圖像進行檢測。顏色識別還可以利用二值化,當(dāng)三色中不符合要求的點數(shù)少到一定值后,可以認為煙葉烤制完成。
2.3 當(dāng)煙葉的顏色達標(biāo)后,對所保存的另一張相同圖像只使用其R分量做下述處理,提取其形態(tài)學(xué)特征(煙葉顏色不能達標(biāo)時此步驟直接略去):
①在配置OpenCV庫函數(shù)的C語言編輯器中使用Sobel 算子或Canny 算子等提取圖像邊緣,如需使用C語言編程,可以考慮在配置好OpenCV庫函數(shù)的C語言編輯器下運行Sobel算子函數(shù),鄭州大學(xué)郭明儒[4]曾給出如下計算方法:cvSobel(const CvArr* src, CvArr* dst, int xorder, int yorder, int aperyure_size=3); src:輸入圖像;dst:輸出圖像; xorder:x方 向上的差分階數(shù); yorder:y方向上的差分階數(shù); aperyure_size:擴展Sobel核的窗口階數(shù),必須是1,3,5,7。
②提取后的圖像需要經(jīng)過1~2次開運算腐蝕膨脹消除噪聲后提取主筋,再利用Hough變換提取出煙葉的主脈部分。提取后的紋理與上文表格中提到的紋理熵等進行比較,如果其取值在合理范圍內(nèi),就說明烤制完成。
3 針對所使用的算法編制相應(yīng)的處理程序
3.1 MATLAB編程
(1) 圖像讀取與存儲:
讀取f=imread(‘C:\Users\Administrator\1.jpg);
存儲imwrite(f,C:\Users\Administrator\Desktop)
for i=1:10
str=[‘C:\Users\Administrator\Desktop\img,num2str(i),.tif];
f=imread(str);
end
(2) 濾波:
>> w=ones(2);
>> g1=imfilter(f,w,replicate);
>> subplot(2,2,1);imshow(f);title(‘origin image);
>> subplot(2,2,2);imshow(g1);title(‘smooth image);
>> g2=medfilt2(f(:,:,1),[4,4]);
>> subplot(2,2,3);imshow(g2,[]);title(‘med filter);
>> se=strel(‘square,4);
>> g3=imclose(f(:,:,1),se);
>> subplot(2,2,4);imshow(g3,[]);title(‘imclose);
(3) 形態(tài)學(xué)分析:條紋間距
>> f4=f2(50:350,200:300);
>> figure,imshow(f4);
>> [r,c]=find(f4==1);
(4) 閾值化:
>> f=im2double(f(:,:,1));
>> subplot(2,2,1);imshow(f);title(‘origin iamge);
>> [gv t]=edge(f,sobel);
>> subplot(2,2,2);imshow(gv,[]);title(‘sobel);
>> [gf t]=edge(f,log);
>> subplot(2,2,3);imshow(gf,[]);title(‘log);
>> [gc t]=edge(f,canny);
>> subplot(2,2,4);imshow(gc,[]);title(‘canny);
3.2 C語言編程
上述過程均可采用C語言實現(xiàn),如:
閾值化:
void CZqlView::OnThresh()
{CZqlDoc* pDoc = GetDocument();
if (?。╬Doc->m_Dib.GetHandle())) return;
int iWidth = pDoc->m_Dib.GetWidth();
int iHeight = pDoc->m_Dib.GetHeight();
int iBitsWidth = pDoc->m_Dib.GetBitsWidth();
LPSTR lpStartBit = pDoc->m_Dib.GetPixelBit();
int i,j,n=0;
unsigned char * lpPixel;
for (i=0;i
中值濾波
void CZqlView::OnZhongzhilvbo() {CZqlDoc* pDoc = GetDocument();
if (?。╬Doc->m_Dib.GetHandle())) return; CDIB Dib=pDoc->m_Dib; int iWidth = Dib.GetWidth(); int iHeight = Dib.GetHeight(); int iBitsWidth = Dib.GetBitsWidth();
LPSTR lpStartBitb =Dib.GetPixelBit();LPSTR lpStartBits =pDoc->m_Dib.GetPixelBit();
int i,j,k,m,n; int c[9]; unsigned char * lpPixelb; unsigned char * lpPixels; double dp=0;
for (i=1;i for(m=0;m<8;m++) {for(n=0;n<8-m;n++) { if(c[n]>c[n+1]) {k=c[n]; c[n]=c[n+1]; c[n+1]=k; }}} dp=c[4]; lpPixels=(unsigned char*)lpStartBits + (iHeight-1-i) * iBitsWidth + j; *lpPixels=(unsigned char)dp;}} Invalidate(); }4 系統(tǒng)總結(jié) 本文分兩路對煙葉的顏色和形態(tài)分別鑒定,二者均達標(biāo)時檢出。這樣的要求很高,被檢出的煙葉為干筋狀態(tài)的概率會非常大,但顯易存在已烤好的煙葉因某種情況未能檢出的現(xiàn)象,需多試驗定好各閾值來避免此現(xiàn)象的發(fā)生。 對于其中的幾個算法,采用MATLAB進行了仿真模擬,尤其是顏色提取等效果比較好,這一系統(tǒng)可以對本例中已經(jīng)烤制好的煙葉與未烤制完成的煙葉進行區(qū)分。正如首段提及的,因為本文在設(shè)計中本著烤制完成誤差率最低思想進行的實際,也就是對烤制完成的標(biāo)準(zhǔn)要求設(shè)計的較高,這樣被識別的煙葉處于干筋狀態(tài)的概率極大,但也可能存在有些煙葉因為各種原因已經(jīng)烤制完成卻無法檢出的情況。由于實驗條件有限,尚未發(fā)現(xiàn)這一情況,但是可以預(yù)料到高的水準(zhǔn)要求一定會存在這種未檢出的情況,關(guān)于各種閾值的把控,還需要經(jīng)過多次實際實驗檢驗才能摸索出最好的狀態(tài)。 考慮產(chǎn)品的便攜性,本文認為采用C語言雖然初期編程較為繁瑣,但后期應(yīng)用的方便性遠好于MATLAB,便于在各種嵌入式設(shè)備上輕松移植,使產(chǎn)品小型化、便攜化、成本最低化和效率最高化。另外C語言運行更快捷,短時間內(nèi)處理圖像能力更高,配置OpenCV等庫函數(shù)后功能同樣齊全,也更適合在工廠等部門進行實際推廣應(yīng)用。 參考文獻 [1].段史江,宋朝鵬,馬力,史龍飛,王文超,宮長榮.基于圖像處理的烘烤過程中煙葉含水量檢測[J].西北農(nóng)林科技大學(xué)學(xué)報,2012,05. [2].宋朝鵬,段史江,李長軍,馬力,史龍飛,宮長榮.烘烤過程中基于圖像處理的烤煙形態(tài)特征分析[J].湖南農(nóng)業(yè)大學(xué)學(xué)報,2011,12. [3].楊陽.基于煙葉圖像處理的密集化烤房溫濕度系統(tǒng)設(shè)計[D].重慶大學(xué),2014. [4].郭明儒.基于模糊 PID 的煙葉烤房控制系統(tǒng)設(shè)計[D]. 鄭州大學(xué), 2011. 作者簡介 張青林(1995-),鄭州大學(xué)物理工程學(xué)院電子信息科學(xué)與技術(shù)專業(yè)2013級本科生,曾主持河南省“挑戰(zhàn)杯”競賽作品一項、鄭州大學(xué)“大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目”一項等。