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

?

基于VC的太陽光斑圖像識(shí)別跟蹤系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2018-03-10 07:43孫雷孫慶蘇
軟件導(dǎo)刊 2018年2期
關(guān)鍵詞:跟蹤識(shí)別

孫雷+孫慶蘇

摘 要:塔式太陽能聚光發(fā)電系統(tǒng),在實(shí)際運(yùn)用中由于天氣、溫度和鏡子的執(zhí)行傳動(dòng)結(jié)構(gòu)等因素產(chǎn)生誤差,太陽光不一定能夠按照理想的情況反射到聚光位置。為使定日鏡能夠準(zhǔn)確跟蹤太陽和反射太陽熱能,提出一種基于VC的太陽光斑圖像識(shí)別跟蹤系統(tǒng),使用視頻捕捉和圖像處理技術(shù),獲取太陽光斑的誤差偏移距離,并將這個(gè)修正數(shù)據(jù)通過串口發(fā)送給控制系統(tǒng)。根據(jù)定日鏡自動(dòng)跟蹤太陽軌跡、反射光斑并進(jìn)行圖像修正的試驗(yàn),結(jié)果顯示能夠計(jì)算確定圖像中光斑的位置,獲取實(shí)際偏差,并且在監(jiān)視器上清晰看見每面定日鏡的輪廓及其反射的光斑。系統(tǒng)采用圖像匹配算法,具有精度高等特點(diǎn),能夠有效實(shí)現(xiàn)太陽光斑的識(shí)別與跟蹤。

關(guān)鍵詞:太陽光斑;識(shí)別;跟蹤;定日鏡場(chǎng); VC

DOIDOI:10.11907/rjdk.172320

中圖分類號(hào):TP317.4

文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)002-0205-03

0 引言

太陽能是最豐富、持久的能源,但因能量密度低,使其被提取需要聚光,目前主要的太陽能聚光發(fā)電系統(tǒng)有塔式、槽式,其中,塔式是太陽能熱發(fā)電系統(tǒng)中具有吸引力的一種方式[1]。

由于太陽東升西落,定日鏡場(chǎng)中的每一面鏡子也必須由東向西,同時(shí)由下而上、再由上而下運(yùn)動(dòng),才能保證每一面鏡子對(duì)陽光的反射聚集到塔上的吸熱器上。根據(jù)每一面鏡子與吸熱器的相對(duì)位置、時(shí)間、地點(diǎn)等,可以計(jì)算出每一面鏡子在任何時(shí)刻的方位角和仰角[2],但是,由于大氣折射、機(jī)械誤差、熱脹冷縮、材料老化等原因,將引起反射的偏差,影響發(fā)電效率。

圖像識(shí)別系統(tǒng)可作為控制系統(tǒng)的負(fù)反饋,及時(shí)調(diào)整每一面鏡子的方位角和仰角,使每一面鏡子對(duì)陽光的反射永遠(yuǎn)對(duì)準(zhǔn)吸熱器,提高發(fā)電效率。具體方法是安裝高清晰攝像頭,實(shí)時(shí)采集定日鏡反射的圖片,進(jìn)行圖像識(shí)別,找出圖像中的太陽光斑(即太陽的位置)與標(biāo)準(zhǔn)圖片進(jìn)行比對(duì),如果所拍攝光斑X、Y向偏差與標(biāo)準(zhǔn)太陽光斑位置偏離,發(fā)出修正信息對(duì)鏡子設(shè)定值進(jìn)行修正[3],同時(shí)記錄或報(bào)警。

1 系統(tǒng)設(shè)計(jì)

1.1 功能設(shè)計(jì)

在太陽能熱發(fā)電電站中,定日鏡的作用是收集太陽輻射能并將其匯聚到吸熱器處,它由按一定方式排列的可繞雙軸跟蹤的定日鏡組成,每個(gè)定日鏡通過繞軸轉(zhuǎn)動(dòng)跟蹤太陽,并將輻射到其表面的太陽能反射到塔頂吸熱器[4]。

太陽光斑圖像識(shí)別跟蹤系統(tǒng)的功能是采用特殊的高清攝像圖像識(shí)別方法,用于定日鏡受外力位移出現(xiàn)的偏差修正,使得定日鏡能夠準(zhǔn)確跟蹤太陽和反射太陽熱能。

1.2 可行性分析

由于太陽不停在轉(zhuǎn)動(dòng),為了使光線經(jīng)過定日鏡反射后能夠一直照射到這個(gè)面上,需要根據(jù)太陽在不同時(shí)間的位置來調(diào)整定日鏡的水平和垂直位置。但是,根據(jù)太陽的運(yùn)行規(guī)律計(jì)算的太陽軌跡會(huì)因?yàn)樘鞖?、溫度和鏡子的執(zhí)行傳動(dòng)結(jié)構(gòu)等產(chǎn)生誤差,太陽光不一定能夠按照理想的情況反射到聚光位置,而且當(dāng)其中的一面或幾面鏡子發(fā)生偏離,沒有反射到聚光位置的時(shí)候也無法知道。由此設(shè)計(jì),利用圖像識(shí)別系統(tǒng),將這個(gè)偏差值反饋給控制系統(tǒng),控制系統(tǒng)可以利用偏差值進(jìn)行修正。

太陽能控制系統(tǒng)主要由計(jì)算機(jī)、攝像機(jī)(CCD)、聚光接收器、定日鏡和定日鏡控制系統(tǒng)組成,核心是圖像分析監(jiān)測(cè)系統(tǒng),系統(tǒng)組成如圖1所示。利用攝像機(jī)拍攝整個(gè)定日鏡場(chǎng)的畫面,由于攝像頭和鏡場(chǎng)中的各面鏡子都相對(duì)固定,在抓取的圖片中可以區(qū)分出每一面鏡子位置太陽光線是平行的光線,鏡子上太陽光斑的偏移即是接收點(diǎn)的偏移。因此,在軟件中通過對(duì)光斑輪廓的判斷獲取光斑的中心值[5],然后算出與中心點(diǎn)像素的偏差值,并將這個(gè)像素的偏差值轉(zhuǎn)化為實(shí)際的偏差值,發(fā)送給控制系統(tǒng)。

1.3 系統(tǒng)流程

太陽能圖像分析監(jiān)測(cè)系統(tǒng)采用Visual C++設(shè)計(jì),使用視頻捕捉和圖像處理技術(shù),獲取太陽光斑的誤差偏移距離,并將這個(gè)修正數(shù)據(jù)通過串口發(fā)送給控制系統(tǒng)。

軟件設(shè)計(jì)思想是獲取攝像機(jī)采集并通過圖像卡傳輸過來的視頻,對(duì)視頻圖像進(jìn)行圖片抓取,通過軟件算法進(jìn)行太陽光斑的識(shí)別,計(jì)算確定圖像中光斑的位置,然后通過計(jì)算獲取實(shí)際偏差,將光斑的實(shí)際偏移距離通過串口發(fā)送到控制系統(tǒng)中,圖2為軟件的流程圖。

2 系統(tǒng)實(shí)現(xiàn)

2.1 太陽光斑位置識(shí)別

太陽能圖像分析系統(tǒng)的基本思想是采用輪廓與特征提取相結(jié)合的方法,首先系統(tǒng)采用VC++定時(shí)器的功能,每5s進(jìn)行一次太陽光斑位置的識(shí)別[6],獲取相應(yīng)的數(shù)據(jù),讀取圖片,然后獲取圖片的大小,根據(jù)圖片中點(diǎn)的像素值來判斷滿足要求的點(diǎn),由滿足要求的點(diǎn)來判斷光斑的輪廓,根據(jù)輪廓來計(jì)算中心值。

計(jì)算實(shí)際偏差值流程是計(jì)算每像素值對(duì)應(yīng)的實(shí)際距離參數(shù),根據(jù)這個(gè)參數(shù)算出實(shí)際距離。

2.2 串口數(shù)據(jù)發(fā)送

在獲取太陽光斑的位置數(shù)據(jù)后,采用Modbus通訊協(xié)議,用串口將數(shù)據(jù)發(fā)送出去,串口發(fā)送數(shù)據(jù)流程為,首先在初始化軟件時(shí)建立串口連接,然后監(jiān)聽端口,有數(shù)據(jù)發(fā)送過來后,執(zhí)行讀操作。獲取數(shù)據(jù)報(bào)文格式,根據(jù)報(bào)文格式組織數(shù)據(jù),執(zhí)行寫操作,將數(shù)據(jù)發(fā)送過去。圖3為串口發(fā)送數(shù)據(jù)流程圖[7]。

2.3 程序?qū)崿F(xiàn)

圖像分析監(jiān)測(cè)系統(tǒng)程序設(shè)計(jì)的重點(diǎn)是光斑的識(shí)別算法,還有主要的類的實(shí)現(xiàn),使用類封裝函數(shù)功能,使程序有很好的可讀性,并減少一些重復(fù)的工作[8]。在封裝的類中實(shí)現(xiàn)視頻流讀入、圖片保存、位圖編程以及串口通訊的實(shí)現(xiàn)。

2.3.1 類的設(shè)計(jì)

圖像分析監(jiān)測(cè)系統(tǒng)程序主要包含以下幾個(gè)類:①Class CRecoSunView:一個(gè)從基類CView繼承的類;②Class CBmproDlg:圖片處理類;③Class CComm:一個(gè)串口通訊類;④Class CDib:從CObject類繼承的類;⑤Class CSampleGrabberCB:從基類ISampleGrabberCB繼承的類。endprint

主要類定義說明為:

(1)CRecoSunView類。此類主要完成了以下功能,實(shí)現(xiàn)對(duì)參數(shù)的初始化,視頻圖象接口的初始化,視頻圖象的顯示,以及定時(shí)函數(shù)的實(shí)現(xiàn),圖象處理函數(shù)的調(diào)用,和串口通訊的實(shí)現(xiàn)。

(2)CBmproDlg類。此類的主要功能是實(shí)現(xiàn)對(duì)圖片的讀取,圖片的分割掃描,掃描后對(duì)斑點(diǎn)中心點(diǎn)的判斷。

(3)CComm類。此類的主要功能是實(shí)現(xiàn)對(duì)串口的操作,包括串口的打開,設(shè)置,以及數(shù)據(jù)發(fā)送和接收以及一個(gè)數(shù)據(jù)接收響應(yīng)線程。

(4)CDib類。此類的主要功能是實(shí)現(xiàn)對(duì)位圖文件的裝載,讀文件,寫文件以及對(duì)位圖的各種屬性操作。

(5)CSampleGrabberCB類。此類的主要功能是實(shí)現(xiàn)對(duì)視頻流中的圖片抓取,以及文件的保存。

2.3.2 光斑識(shí)別算法

識(shí)別光斑是在類CBmproDlg中進(jìn)行的,主要功能是實(shí)現(xiàn)對(duì)位圖的讀取,識(shí)別位圖中的光斑位置。識(shí)別光斑的算法為:

(1)調(diào)用函數(shù)dib.load()函數(shù)讀取位圖,調(diào)用dib.GetWidth()和dib.GetHeight()獲取圖片的寬、高。

(2)給數(shù)組xydata,line,pt分配空間大小。

(3)按照定義的分割區(qū)域,進(jìn)行像素掃描,對(duì)滿足條件的像素進(jìn)行標(biāo)記,保存在xydata數(shù)組中。

(4)掃描完成后,區(qū)域中的滿足條件的點(diǎn)組成線,對(duì)無法成線的斑點(diǎn)舍棄,得到的結(jié)果保存在line數(shù)組中。

(5)由線來構(gòu)成一個(gè)斑點(diǎn)的形狀,并由組成的斑點(diǎn)的輪廓來計(jì)算斑點(diǎn)的中心值,結(jié)果保存在pt數(shù)組中。

(6)由計(jì)算得到的斑點(diǎn)中心值與實(shí)際定義的中心相減,即得到偏差值。

2.3.3 算法的程序?qū)崿F(xiàn)

首先調(diào)用dib.load(lpszDibFile)函數(shù)來裝載圖片,ScanRect數(shù)組的數(shù)據(jù)即是分割的范圍,按照ScanRect數(shù)組定義的范圍進(jìn)行循環(huán),獲取滿足條件的點(diǎn),獲取點(diǎn)后,調(diào)用OnOpen()函數(shù)。在OnOpen函數(shù)中,算法的實(shí)現(xiàn)為,當(dāng)點(diǎn)的標(biāo)志位為真時(shí),則調(diào)用函數(shù)getline獲取線的范圍。依次調(diào)用,則最后獲取的就是線的范圍。然后調(diào)用OnGetp()函數(shù),函數(shù)的功能是有線獲取光斑的輪廓,當(dāng)line數(shù)組的標(biāo)志位為真時(shí),調(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)) //判斷此點(diǎn)像素值是否滿足太陽光斑的特征

{

……

huafen(); //如滿足,找出y軸方向所有滿足光斑條件判斷的點(diǎn)

}

2.3.4 軟件代碼說明

軟件代碼如下:

float value=(float)254/(752*3);//計(jì)算實(shí)際一個(gè)像素的實(shí)際表示

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ù)多日來定日鏡自動(dòng)跟蹤太陽軌跡、反射光斑并進(jìn)行圖像修正的試驗(yàn),對(duì)軟件結(jié)果檢測(cè):鏡子的中心像素位置為X:350、Y:312,計(jì)算實(shí)際距離的參數(shù)為10/7。

利用算法得出的像素距離與鏡子的中心位置相減,即可得到光斑以鏡子中心位置為圓心的幾何坐標(biāo)值,再用計(jì)算實(shí)際距離的參數(shù)來算出實(shí)際距離。

在獲取的圖片中,選出一部分圖片,如圖4、圖5,利用這3個(gè)參數(shù)設(shè)置,軟件的運(yùn)行結(jié)果分別如下:

光斑中心點(diǎn):X:354 Y:319

實(shí)際偏差:ΔX:5 ΔY:-10

光斑中心點(diǎn):X:362 Y:309

實(shí)際偏差:ΔX:17 ΔY:4

4 結(jié)語

定日鏡的跟蹤控制是塔式太陽能發(fā)電系統(tǒng)的關(guān)鍵技術(shù),由于定日鏡執(zhí)行機(jī)構(gòu)不可測(cè)的因素使定日鏡運(yùn)動(dòng)出現(xiàn)偏差,本文設(shè)計(jì)了太陽光斑圖像識(shí)別跟蹤系統(tǒng),采用VC++圖像分析算法,有效實(shí)現(xiàn)了太陽光斑的識(shí)別與跟蹤。

通過實(shí)際測(cè)試,在太陽光斑圖像識(shí)別跟蹤系統(tǒng)中,可以在監(jiān)視器上清晰看見每面定日鏡的輪廓及其反射的光斑,通過太陽光斑圖像識(shí)別跟蹤系統(tǒng)與其它系統(tǒng)的結(jié)合,可以控制定日鏡跟蹤太陽運(yùn)行軌跡,把光斑實(shí)時(shí)反射到正確位置[10]。

參考文獻(xiàn):

[1] 杜春旭,吳玉庭,王普,等.塔式太陽能發(fā)電系統(tǒng)鏡場(chǎng)跟蹤角分析[J].工程熱物理學(xué)報(bào),2012,33(9):1575-1579.

[2] 余強(qiáng),徐二樹,常春,等.塔式太陽能電站定日鏡場(chǎng)的建模與仿真[J].中國電機(jī)工程學(xué)報(bào),2012,32(23):90-97.

[3] 許芳.塔式太陽能定日鏡聚光成像建模及仿真[J].太陽能學(xué)報(bào),2010,32(10):1304-1309.

[4] 耿其,東朱天宇,陳飛.塔式太陽能熱發(fā)電中的定日鏡跟蹤系統(tǒng)設(shè)計(jì)[J].熱力發(fā)電,2009,38(2):81-83.

[5] 王孝紅,劉化果.塔式太陽能定日鏡控制系統(tǒng)綜述[J].濟(jì)南大學(xué)學(xué)報(bào),2010,24(3):302-307.

[6] 王鵬飛,王鵬.基于Visual C++6.0的Windows應(yīng)用程序定時(shí)器研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,23(2):44-48.

[7] 王中訓(xùn),徐超.基于VC++6.0的多串口通信方法[J].計(jì)算機(jī)應(yīng)用,2008,28(6):254-257.

[8] 楊韜.用C語言實(shí)現(xiàn)類封裝的研究[J].微型機(jī)與應(yīng)用,2016,35(21):24-27.

[9] 李洪雷.VC++環(huán)境下基于OpenCV的攝像機(jī)標(biāo)定系統(tǒng)的開發(fā)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(6):19-22.

[10] 王魏.塔式太陽能定日鏡聚光策略及其應(yīng)用仿真[J].上海電氣技術(shù),2014,97(3):36-40.

猜你喜歡
跟蹤識(shí)別
法學(xué)意義上的弱者識(shí)別問題研究
青島市中山公園園林樹木易混淆品種識(shí)別
跟蹤學(xué)情,及時(shí)調(diào)整教學(xué)策略
基于視頻的手寫數(shù)字識(shí)別