孫雷+孫慶蘇
摘 要:塔式太陽能聚光發(fā)電系統(tǒng),在實際運用中由于天氣、溫度和鏡子的執(zhí)行傳動結(jié)構(gòu)等因素產(chǎn)生誤差,太陽光不一定能夠按照理想的情況反射到聚光位置。為使定日鏡能夠準(zhǔn)確跟蹤太陽和反射太陽熱能,提出一種基于VC的太陽光斑圖像識別跟蹤系統(tǒng),使用視頻捕捉和圖像處理技術(shù),獲取太陽光斑的誤差偏移距離,并將這個修正數(shù)據(jù)通過串口發(fā)送給控制系統(tǒng)。根據(jù)定日鏡自動跟蹤太陽軌跡、反射光斑并進(jìn)行圖像修正的試驗,結(jié)果顯示能夠計算確定圖像中光斑的位置,獲取實際偏差,并且在監(jiān)視器上清晰看見每面定日鏡的輪廓及其反射的光斑。系統(tǒng)采用圖像匹配算法,具有精度高等特點,能夠有效實現(xiàn)太陽光斑的識別與跟蹤。
關(guān)鍵詞:太陽光斑;識別;跟蹤;定日鏡場; VC
DOIDOI:10.11907/rjdk.172320
中圖分類號:TP317.4
文獻(xiàn)標(biāo)識碼:A 文章編號:1672-7800(2018)002-0205-03
0 引言
太陽能是最豐富、持久的能源,但因能量密度低,使其被提取需要聚光,目前主要的太陽能聚光發(fā)電系統(tǒng)有塔式、槽式,其中,塔式是太陽能熱發(fā)電系統(tǒng)中具有吸引力的一種方式[1]。
由于太陽東升西落,定日鏡場中的每一面鏡子也必須由東向西,同時由下而上、再由上而下運動,才能保證每一面鏡子對陽光的反射聚集到塔上的吸熱器上。根據(jù)每一面鏡子與吸熱器的相對位置、時間、地點等,可以計算出每一面鏡子在任何時刻的方位角和仰角[2],但是,由于大氣折射、機械誤差、熱脹冷縮、材料老化等原因,將引起反射的偏差,影響發(fā)電效率。
圖像識別系統(tǒng)可作為控制系統(tǒng)的負(fù)反饋,及時調(diào)整每一面鏡子的方位角和仰角,使每一面鏡子對陽光的反射永遠(yuǎn)對準(zhǔn)吸熱器,提高發(fā)電效率。具體方法是安裝高清晰攝像頭,實時采集定日鏡反射的圖片,進(jìn)行圖像識別,找出圖像中的太陽光斑(即太陽的位置)與標(biāo)準(zhǔn)圖片進(jìn)行比對,如果所拍攝光斑X、Y向偏差與標(biāo)準(zhǔn)太陽光斑位置偏離,發(fā)出修正信息對鏡子設(shè)定值進(jìn)行修正[3],同時記錄或報警。
1 系統(tǒng)設(shè)計
1.1 功能設(shè)計
在太陽能熱發(fā)電電站中,定日鏡的作用是收集太陽輻射能并將其匯聚到吸熱器處,它由按一定方式排列的可繞雙軸跟蹤的定日鏡組成,每個定日鏡通過繞軸轉(zhuǎn)動跟蹤太陽,并將輻射到其表面的太陽能反射到塔頂吸熱器[4]。
太陽光斑圖像識別跟蹤系統(tǒng)的功能是采用特殊的高清攝像圖像識別方法,用于定日鏡受外力位移出現(xiàn)的偏差修正,使得定日鏡能夠準(zhǔn)確跟蹤太陽和反射太陽熱能。
1.2 可行性分析
由于太陽不停在轉(zhuǎn)動,為了使光線經(jīng)過定日鏡反射后能夠一直照射到這個面上,需要根據(jù)太陽在不同時間的位置來調(diào)整定日鏡的水平和垂直位置。但是,根據(jù)太陽的運行規(guī)律計算的太陽軌跡會因為天氣、溫度和鏡子的執(zhí)行傳動結(jié)構(gòu)等產(chǎn)生誤差,太陽光不一定能夠按照理想的情況反射到聚光位置,而且當(dāng)其中的一面或幾面鏡子發(fā)生偏離,沒有反射到聚光位置的時候也無法知道。由此設(shè)計,利用圖像識別系統(tǒng),將這個偏差值反饋給控制系統(tǒng),控制系統(tǒng)可以利用偏差值進(jìn)行修正。
太陽能控制系統(tǒng)主要由計算機、攝像機(CCD)、聚光接收器、定日鏡和定日鏡控制系統(tǒng)組成,核心是圖像分析監(jiān)測系統(tǒng),系統(tǒng)組成如圖1所示。利用攝像機拍攝整個定日鏡場的畫面,由于攝像頭和鏡場中的各面鏡子都相對固定,在抓取的圖片中可以區(qū)分出每一面鏡子位置太陽光線是平行的光線,鏡子上太陽光斑的偏移即是接收點的偏移。因此,在軟件中通過對光斑輪廓的判斷獲取光斑的中心值[5],然后算出與中心點像素的偏差值,并將這個像素的偏差值轉(zhuǎn)化為實際的偏差值,發(fā)送給控制系統(tǒng)。
1.3 系統(tǒng)流程
太陽能圖像分析監(jiān)測系統(tǒng)采用Visual C++設(shè)計,使用視頻捕捉和圖像處理技術(shù),獲取太陽光斑的誤差偏移距離,并將這個修正數(shù)據(jù)通過串口發(fā)送給控制系統(tǒng)。
軟件設(shè)計思想是獲取攝像機采集并通過圖像卡傳輸過來的視頻,對視頻圖像進(jìn)行圖片抓取,通過軟件算法進(jìn)行太陽光斑的識別,計算確定圖像中光斑的位置,然后通過計算獲取實際偏差,將光斑的實際偏移距離通過串口發(fā)送到控制系統(tǒng)中,圖2為軟件的流程圖。
2 系統(tǒng)實現(xiàn)
2.1 太陽光斑位置識別
太陽能圖像分析系統(tǒng)的基本思想是采用輪廓與特征提取相結(jié)合的方法,首先系統(tǒng)采用VC++定時器的功能,每5s進(jìn)行一次太陽光斑位置的識別[6],獲取相應(yīng)的數(shù)據(jù),讀取圖片,然后獲取圖片的大小,根據(jù)圖片中點的像素值來判斷滿足要求的點,由滿足要求的點來判斷光斑的輪廓,根據(jù)輪廓來計算中心值。
計算實際偏差值流程是計算每像素值對應(yīng)的實際距離參數(shù),根據(jù)這個參數(shù)算出實際距離。
2.2 串口數(shù)據(jù)發(fā)送
在獲取太陽光斑的位置數(shù)據(jù)后,采用Modbus通訊協(xié)議,用串口將數(shù)據(jù)發(fā)送出去,串口發(fā)送數(shù)據(jù)流程為,首先在初始化軟件時建立串口連接,然后監(jiān)聽端口,有數(shù)據(jù)發(fā)送過來后,執(zhí)行讀操作。獲取數(shù)據(jù)報文格式,根據(jù)報文格式組織數(shù)據(jù),執(zhí)行寫操作,將數(shù)據(jù)發(fā)送過去。圖3為串口發(fā)送數(shù)據(jù)流程圖[7]。
2.3 程序?qū)崿F(xiàn)
圖像分析監(jiān)測系統(tǒng)程序設(shè)計的重點是光斑的識別算法,還有主要的類的實現(xiàn),使用類封裝函數(shù)功能,使程序有很好的可讀性,并減少一些重復(fù)的工作[8]。在封裝的類中實現(xiàn)視頻流讀入、圖片保存、位圖編程以及串口通訊的實現(xiàn)。
2.3.1 類的設(shè)計
圖像分析監(jiān)測系統(tǒng)程序主要包含以下幾個類:①Class CRecoSunView:一個從基類CView繼承的類;②Class CBmproDlg:圖片處理類;③Class CComm:一個串口通訊類;④Class CDib:從CObject類繼承的類;⑤Class CSampleGrabberCB:從基類ISampleGrabberCB繼承的類。endprint
主要類定義說明為:
(1)CRecoSunView類。此類主要完成了以下功能,實現(xiàn)對參數(shù)的初始化,視頻圖象接口的初始化,視頻圖象的顯示,以及定時函數(shù)的實現(xiàn),圖象處理函數(shù)的調(diào)用,和串口通訊的實現(xiàn)。
(2)CBmproDlg類。此類的主要功能是實現(xiàn)對圖片的讀取,圖片的分割掃描,掃描后對斑點中心點的判斷。
(3)CComm類。此類的主要功能是實現(xiàn)對串口的操作,包括串口的打開,設(shè)置,以及數(shù)據(jù)發(fā)送和接收以及一個數(shù)據(jù)接收響應(yīng)線程。
(4)CDib類。此類的主要功能是實現(xiàn)對位圖文件的裝載,讀文件,寫文件以及對位圖的各種屬性操作。
(5)CSampleGrabberCB類。此類的主要功能是實現(xiàn)對視頻流中的圖片抓取,以及文件的保存。
2.3.2 光斑識別算法
識別光斑是在類CBmproDlg中進(jìn)行的,主要功能是實現(xiàn)對位圖的讀取,識別位圖中的光斑位置。識別光斑的算法為:
(1)調(diào)用函數(shù)dib.load()函數(shù)讀取位圖,調(diào)用dib.GetWidth()和dib.GetHeight()獲取圖片的寬、高。
(2)給數(shù)組xydata,line,pt分配空間大小。
(3)按照定義的分割區(qū)域,進(jìn)行像素掃描,對滿足條件的像素進(jìn)行標(biāo)記,保存在xydata數(shù)組中。
(4)掃描完成后,區(qū)域中的滿足條件的點組成線,對無法成線的斑點舍棄,得到的結(jié)果保存在line數(shù)組中。
(5)由線來構(gòu)成一個斑點的形狀,并由組成的斑點的輪廓來計算斑點的中心值,結(jié)果保存在pt數(shù)組中。
(6)由計算得到的斑點中心值與實際定義的中心相減,即得到偏差值。
2.3.3 算法的程序?qū)崿F(xiàn)
首先調(diào)用dib.load(lpszDibFile)函數(shù)來裝載圖片,ScanRect數(shù)組的數(shù)據(jù)即是分割的范圍,按照ScanRect數(shù)組定義的范圍進(jìn)行循環(huán),獲取滿足條件的點,獲取點后,調(diào)用OnOpen()函數(shù)。在OnOpen函數(shù)中,算法的實現(xiàn)為,當(dāng)點的標(biāo)志位為真時,則調(diào)用函數(shù)getline獲取線的范圍。依次調(diào)用,則最后獲取的就是線的范圍。然后調(diào)用OnGetp()函數(shù),函數(shù)的功能是有線獲取光斑的輪廓,當(dāng)line數(shù)組的標(biāo)志位為真時,調(diào)用getp()函數(shù)來獲取后繼的線還原輪廓,由輪廓獲取中心值[9]。
if (dib.Load(lpszDibFile))
{
for(int scan=0;scan<4;scan=scan+2)
{
for(i=ScanRect[scan].x;i { m=0; for(j=ScanRect[scan].y;j { if(pan(i,j)) //判斷此點像素值是否滿足太陽光斑的特征 { …… huafen(); //如滿足,找出y軸方向所有滿足光斑條件判斷的點 } 2.3.4 軟件代碼說明 軟件代碼如下: float value=(float)254/(752*3);//計算實際一個像素的實際表示 OnPhoto(); //抓取圖片 CBmproDlg dlg; const char *lpctStr=(LPCTSTR)mCB.str; dlg.OnBrowse(lpctStr);//處理抓取的圖片,獲取數(shù)據(jù) for(int i=0;i<2;i++) { float x=(float)value*dlg.pot[i].x; float y=(float)value*dlg.pot[i].y; pot[i].x=(int)x;//(float)(value*dlg.pot[i].x)); pot[i].y=(int)y;//(float)value*dlg.pot[i].y); } ChangeStatusBar(); OnCOM(); 3 系統(tǒng)數(shù)據(jù)記錄與處理 根據(jù)多日來定日鏡自動跟蹤太陽軌跡、反射光斑并進(jìn)行圖像修正的試驗,對軟件結(jié)果檢測:鏡子的中心像素位置為X:350、Y:312,計算實際距離的參數(shù)為10/7。 利用算法得出的像素距離與鏡子的中心位置相減,即可得到光斑以鏡子中心位置為圓心的幾何坐標(biāo)值,再用計算實際距離的參數(shù)來算出實際距離。 在獲取的圖片中,選出一部分圖片,如圖4、圖5,利用這3個參數(shù)設(shè)置,軟件的運行結(jié)果分別如下: 光斑中心點:X:354 Y:319 實際偏差:ΔX:5 ΔY:-10 光斑中心點:X:362 Y:309 實際偏差:ΔX:17 ΔY:4 4 結(jié)語 定日鏡的跟蹤控制是塔式太陽能發(fā)電系統(tǒng)的關(guān)鍵技術(shù),由于定日鏡執(zhí)行機構(gòu)不可測的因素使定日鏡運動出現(xiàn)偏差,本文設(shè)計了太陽光斑圖像識別跟蹤系統(tǒng),采用VC++圖像分析算法,有效實現(xiàn)了太陽光斑的識別與跟蹤。 通過實際測試,在太陽光斑圖像識別跟蹤系統(tǒng)中,可以在監(jiān)視器上清晰看見每面定日鏡的輪廓及其反射的光斑,通過太陽光斑圖像識別跟蹤系統(tǒng)與其它系統(tǒng)的結(jié)合,可以控制定日鏡跟蹤太陽運行軌跡,把光斑實時反射到正確位置[10]。 參考文獻(xiàn): [1] 杜春旭,吳玉庭,王普,等.塔式太陽能發(fā)電系統(tǒng)鏡場跟蹤角分析[J].工程熱物理學(xué)報,2012,33(9):1575-1579. [2] 余強,徐二樹,常春,等.塔式太陽能電站定日鏡場的建模與仿真[J].中國電機工程學(xué)報,2012,32(23):90-97. [3] 許芳.塔式太陽能定日鏡聚光成像建模及仿真[J].太陽能學(xué)報,2010,32(10):1304-1309. [4] 耿其,東朱天宇,陳飛.塔式太陽能熱發(fā)電中的定日鏡跟蹤系統(tǒng)設(shè)計[J].熱力發(fā)電,2009,38(2):81-83. [5] 王孝紅,劉化果.塔式太陽能定日鏡控制系統(tǒng)綜述[J].濟南大學(xué)學(xué)報,2010,24(3):302-307. [6] 王鵬飛,王鵬.基于Visual C++6.0的Windows應(yīng)用程序定時器研究[J].計算機技術(shù)與發(fā)展,2013,23(2):44-48. [7] 王中訓(xùn),徐超.基于VC++6.0的多串口通信方法[J].計算機應(yīng)用,2008,28(6):254-257. [8] 楊韜.用C語言實現(xiàn)類封裝的研究[J].微型機與應(yīng)用,2016,35(21):24-27. [9] 李洪雷.VC++環(huán)境下基于OpenCV的攝像機標(biāo)定系統(tǒng)的開發(fā)[J].計算機應(yīng)用與軟件,2011,28(6):19-22. [10] 王魏.塔式太陽能定日鏡聚光策略及其應(yīng)用仿真[J].上海電氣技術(shù),2014,97(3):36-40.