999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于機器視覺的嵌入式教室照明自動控制系統開發

2022-01-06 10:39:56李香萍
實驗室研究與探索 2021年11期
關鍵詞:背景區域系統

白 煜, 李香萍

(天津大學a.電氣自動化與信息工程學院;b.天津市類腦智能技術重點實驗室,天津300072)

0 引 言

教室照明控制系統對于節省辦學經費和保護學生視力有重要的意義。室內照明控制系統分為手動模式和自動控制模式[1-4]。基于傳感器的自動控制模式中,傳感器的數量和安放位置對照明控制效果的影響很大。室內環境的限制因素多,傳感器布置困難。基于機器視覺的教室照明控制系統[5-7],解決了傳感器布置的難題。機器視覺算法需要工控機來實現,使得系統的成本和復雜度較高,缺乏靈活性,且不適合實踐教學使用。

本文基于嵌入式平臺,設計了機器視覺算法,對教室監控設備獲取的圖像進行處理,得到室內照明亮度和人員位置信息。在此基礎上,實現教室照明自動控制。本系統的特點是:不需要傳感器,僅利用教室已有的監控設備,獲得基本信息;單層結構,獨立運行,無須上位機和組網;基于嵌入式平臺,成本低、使用靈活,適用于實踐教學。

1 系統設計

1.1 系統方案

如圖1所示,中型教室內部分為6個區域,假定每個區域安裝一組燈。嵌入式平臺的主要任務是控制攝像機的工作狀態,執行機器視覺算法,控制繼電器。

圖1 基于機器視覺的嵌入式教室照明自動控制系統框圖

1.2 機器視覺算法

本系統的機器視覺算法分為人員位置檢測和照明亮度測量兩部分。設計難點為優化算法,使之適應嵌入式系統有限的存儲和計算能力。

1.2.1 人員位置檢測算法

(1)人員位置計算。基于圖像處理的人體檢測算法,大致可分為背景差分法[8]、幀間差分法[9]、光流法[10]3種。根據算法的硬件開銷和處理效果,本文選用背景差分法。

根據文獻[8]中對背景差分法的定義可得

式中:Fn(x,y)為差分結果圖像;Bn(x,y)、Jn(x,y)分別為當前時刻背景圖像和教室實時圖像矩陣中對應的灰度級;T=30為一常數。將Fn(x,y)中灰度級大于等于30的位置標記為1,反之為0。在Fn(x,y)的基礎上,進行室內人員位置計算。

構建一個6×10的矩形窗,令其在Fn(x,y)上移動。若窗內標記為1的像素個數≥50,則認為此區域有人。

圖2為像素級教室內部劃分示意圖,圖像大小為320×240。

圖2 教室區域像素級劃分

假定攝像機位于教室后面中間位置,區域1、2位于圖像0~50行,區域3、4位于圖像51~90行,區域5、6位于圖像91~120行,各區域寬為160列。圖像中121~240行為講臺和墻壁。為提高速度,縱向每隔3行掃描一次,橫向每隔5列掃描一次。

(2)背景圖像構建。背景圖像構建是背景差分法的關鍵。目前,已有的背景構建方法,例如中值法[11]、均值法[12]、高斯分布法[13],都存在硬件開銷大、計算復雜等不足,在嵌入式平臺上難以實現,需要設計更簡單有效的方法。

本文采集不同情況下教室內無人時的圖像作為背景。針對圖1所示的中型教室,根據燈具亮滅,有26個不同的背景,需要系統存儲64幅圖片。圖1中區域1和區域3、6相距較遠,可忽略區域3、6的燈光對區域1的影響。對于區域1,只需考慮區域1、2、4、5照明影響。其余同理,可得表1。

表1 背景模板所需考慮情況

根據表1,通過不同排列組合方式將原本需要的64個背景圖像減少為16個,如圖3所示。

圖3 16幅背景圖像中6個區域照明燈具的開關情況

1.2.2 照明強度測量算法

根據實驗結果可得,光照強度與圖像的灰度正相關[14]。通過計算圖像灰度來測量光照強度。

計算如圖4中兩個紅色區域的平均灰度值,即黑板兩側2塊50×50像素的區域。對應圖2,2塊區域的范圍為:160~209行,40~89列、240~299列。若平均灰度值≥120,說明教室光照充足,反之說明太弱。測量該值的作用為:判斷室內是否太暗,提前開燈防止人員檢測算法失效。系統計算有人區域的圖像灰度值,若≥150則逐一關燈,若<120則逐一開燈,否則保持不變。

圖4 教室內部平均灰度值計算區域

2 硬件原理圖及電路連接

系統使用的嵌入式平臺為STM32開發板,內核為STM32F103。圖5所示為系統實物圖,包含開發板、右側為一組繼電器、左下角為OV7725攝像機。

圖5 系統整體實物圖

2.1 STM32F103和OV7725電路連接

OV7725與STM32開發板的對應接口,見表2中CAMERA接口。STM32F103通過OV_SDA和OV_SCL將控制信息寫入OV7725的寄存器,控制圖像的輸出格式。僅當STM32F103的FIFO寫使能信號FIFO_WEN為高電平,OV7725行同步信號OV_HREF為低電平時,數據才能寫入STM32F103的內部Flash。

2.2 外部存儲空間和STM32F103電路連接

STM32F103的內存較小,需要增加外部存儲器,存儲16幅背景圖像。系統使用W25Q128芯片作為外部存儲器,容量為16 MB。該芯片與STM32開發板的接口,見表2中的W25Q128接口。

2.3 液晶顯示屏和STM32F103電路連接

7 cm的液晶顯示屏,采用16 bit FSMC總線與STM32開發板連接,接口如表2中液晶屏接口所示。

2.4 輸出控制電路的連接

對于中型教室,本系統共需要輸出6路控制信號,分別控制6個電磁繼電器的閉合。繼電器與STM32連接方式,如表2中的電磁繼電器接口所示。

表2 STM32F103 GPIO接口分配情況

3 編程實現

本文設計的機器視覺算法流程如圖6所示。首先進行硬件初始化,設定中斷等級等。然后獲取一幀教室圖像,計算平均灰度值,判斷是否需要開燈。如果需要開燈,則將6個輸出接口設置為高電平,點亮所有燈具,并保持60 s供學生選擇座位。否則關閉所有燈具,進入下一步。

圖6 機器視覺算法流程圖

3.1 OV7725圖像輸出

3.1.1 設置圖像輸出格式

通過SCCB控制總線,寫OV7725的COM7寄存器,可設置圖像輸出格式。COM7寄存器地址為0X12。根據表3,可得控制字為“0100 0110”即0X46。

表3 COM7寄存器各位表示意義

3.1.2 圖像的輸出過程

(1)捕獲圖像輸出信號。當幀同步信號為高電平、行同步信號為低電平時,OV7725輸出一行數據。STM32F103采用外部中斷8捕獲OV7725的幀同步信號,中斷8程序代碼如下:

if(EXTI_GetITStatus(EXTI_Line8)==SET);//外部8的中斷

OV7670_WRST=0; //復位FIFO芯片寫指針 OV7670_WRST=1;

OV7670_WREN=1; //FIFO芯片寫使能

ov_sta++; //幀中斷加1

(2)STM32F103從OV7725的FIFO中讀取圖像。讀取過程為:STM32F103復位FIFO讀指針,給FIFO讀時鐘,1個像素占用2個Byte,第1個時鐘讀取高Byte,第2個時鐘讀取低Byte。QVGA模式RGB565格式下,需要循環320×240×2次,讀取1幀圖像。將讀取的圖像存儲到內部Flash,進行圖像處理;同時,將數據寫入到LCD的RAM,進行顯示。

STM32F103的SRAM只有64 KB,不能申請150 KB的二維數組作為中間變量。編程時申請一個1 024×2 Bytes的數組,使用變量buf_flag作為標記,當buf_flag對1024取模等于1 023時,將存儲1 024個像素數據的數組寫入內部Flash。重復75次上述過程讀取1幀圖像。使用2層循環完成1幀QVGA圖像的讀取。第1層循環240次,是圖像的寬度,第2層循環320次,是圖像的長度。代碼如下:

for(i=0;i<OV7725_WINDOW_HEIGHT;i++);//共240行

{for(j=0;j<OV7725_WINDOW_WIDTH;j++);//320每行

picture2[(buf_flag% 1024)]=camera_gray;

if(buf_flag%1024==1023)

STMFlash_Write(Flash_SAVE_ADDR+((buf_flag/1024)*2048),picture2,1024) }

3.2 圖像平均灰度計算程序

采用brightness1表示灰度值得總和。

if((i>=160 && i<210 && j>=40 &&j<90)||(i>=160 && i<210 && j>=250 &&j<300))

brightness1=brightness1+camera_gray;

總灰度值除以5 000,得到灰度平均值,如果該值大于120,說明教室照明不暗,令b_flag=0;反之說明教室光線弱,令b_flag=1。

為了提高算法穩定性,采用一個8 bit無符號數b_buff作為標記,每次左移1位,最低位變成b_flag,最高位舍棄,最低位用于記錄最新的灰度平均值,如果這個標記等于0XFF,說明有連續8幀圖像的b_flag都為1,連續8幀圖像的灰度平均值都低于閾值,此時室內需要開燈。

b_buff?=1;//左移一位,

if(b_flag==1)b_buff+=1;

if(b_buff==0XFF)

3.3 圖像顯示至LCD顯示屏

程序中使用LCD_Scan_Dir(U2D_L2R)函數,通過FSMC總線控制器將數據寫入LCD中的RAM。

3.4 圖像預處理

3.4.1 圖像的灰度化

圖像灰度化之前,需要分離R、G、B分量。由RGB565輸出標準可知,每個像素占2 Byte,第1 Byte高5位表示R分量,第1 Byte低3位以及第2 Byte高3位表示G分量,第2 Byte低5位表示B分量。

提取R、G、B的程序代碼為:

camera_red=(color&0xF800)?8;camera_green=

(color&0x07E0)?3;

camera_blue=(color&0x001F)?3;

將R、G、B圖像轉化成灰度圖像的方法通常有平均值法、最大值法和加權平均值法等[15]。3種方法中,加權平均值法最符合人眼特征,且不同顏色灰度值的區分度高,該方法通過對3個分量賦予不同的權值,得到加權平均值示灰度值。

式中,f(R,G,B)為灰度值,代碼實現如下:

camera_gray=(30*camera_red+59*camera_green+

11*camera_blue+50)/10);

編程時為了減少Flash的讀寫次數,先將OV7725輸出的圖像灰度化后,再存儲到內部Flash中。

3.4.2 背景圖像的存入

背景圖像存儲于外部存儲器。核心代碼如下,括號中的參數為背景圖像的序號。

picture2[(buf_flag% 128)]=camera_gray;

if(buf_flag%128==127)

{W25 QXX_Write(picture2,((ad_flag+1)*76800+((buf_flag/128)*128)),128);}

3.5 背景差分實現

將兩幅圖像對應像素進行差分,需要循環讀取像素。每個循環,分別讀取2幅圖像中1024個對應像素數據,對每個像素進行差分。具體代碼如下:

STMFlash_Read(Flash_SAVE_ADDR+(i*2048),picture1,1024);

W25QXX_Read(picture2,i*1024,1024);//外部Flash讀背景

for(j=0;j<1024;j++)//對每數組中每個像素進行差分

if(picture1[j]>picture2[j]);

picture1[j]=picture1[j]-picture2[j];

if(picture2[j]<30)picture1[j]=0;

else picture1[j]=1;//若灰度差≥30,置1

else

picture1[j]=picture2[j]-picture1[j];

if(picture2[j]<30)picture1[j]=0;

else picture1[j]=1;

圖7(a)為教室背景圖像,圖7(b)為灰度化后的教室實時圖像,圖7(c)為差分后的灰度圖像,圖7(d)為二值化圖像。最終差分后的圖像為一幅320×240二值圖像。

圖7 圖像處理流程中間圖像

3.6 人員位置計算

程序實現代碼如下:

STMFlash_Read(Flash_SAVE_ADDR+(i*960),picture1,1920);

//一次讀取6行,需要讀取1920個數據

for(j=0;j<31;j++)

{for(k=0;k<6;k++)

{for(m=0;m<10;m++)

{if(picture1[k*320+m+j*5]==1)coment1++;}

//計算每個6×10方塊中像素為1的個數。

if(coment1>55)flag1=1;

//如≥55,則此區域有人,令flag1=1并跳出循環

if(flag1==1)break;

根據圖6,當b_buff為0XFF時,對教室中的人員進行識別。依次執行差分、去噪、人員識別。人員識別完成后判斷人員位置是否變化。判斷方法是設2個8 bit無符號整數updatebuf1和updatebuf2,updatebuf1存儲上一幀圖像的人員位置,updatebuf2存儲當前幀的人員位置,如果兩個數相同則不需要更改燈光,否則需要根據新的識別結果更改燈光控制,并對背景進行更新。

實現代碼如下:

cf();//灰度圖像背景差分,并進行二值化

remo_noise();//圖像去噪,二值化形態學操作

recg_person();//檢驗個區域是否有人

updatebuf2=six2one(flag1_w,flag2_w,flag3_w,flag1_w,flag4_w,flag5_w);//計算對應背景圖像存儲的首地址

if(updatebuf2!=updatebuff1);//如相等,則不更新背景

if(flag1_w==1)GPIO_SetBits(GPIOD,GPIO_Pin_11);//更改

else GPIO_ResetBits(GPIOD,GPIO_Pin_11);

……

if(flag6_w==1)GPIO_SetBits(GPIOE,GPIO_Pin_2);

else GPIO_ResetBits(GPIOE,GPIO_Pin_2);

updatebuff1=updatebuff2;

for(j=0;j<75;j++);//更新背景,并存儲到w25q128

25QXX_Read(picture4,(updatebuff2+1)*76 800+j*1 024,1 024);

W25QXX_Write(picture4,j*1 024,1 024);

}}

3.7 輸出控制

STM32F103的對應接口輸出高電平“1”時,與此接口相連的繼電器導通,反之繼電器斷開。

4 系統響應速度分析

采用串口調試軟件,獲取OV7725向STM32F103傳輸圖像的幀率,幀率越大說明處理速度越快,幀率越小則說明越慢。綜上,系統可以保證在10 s之內處理完一幀圖像,基本滿足實際使用需要(見表4)。

表4 系統響應耗時

5 結 語

本系統已在本科畢業設計和大學生創新實踐活動中得到多次應用,學生參與的積極性很高,教學效果反映良好。本系統可作為全國大學生電子設計大賽的選手選拔和實訓項目。將該系統與基于機器視覺的面碗旋轉對正系統、產品缺陷檢測系統和機器人導航系統打包,開設基于機器視覺的實訓項目群,更好的培養學生的創新實踐能力。

猜你喜歡
背景區域系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
“新四化”背景下汽車NVH的發展趨勢
WJ-700無人機系統
《論持久戰》的寫作背景
當代陜西(2020年14期)2021-01-08 09:30:42
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
晚清外語翻譯人才培養的背景
關于四色猜想
分區域
基于嚴重區域的多PCC點暫降頻次估計
電測與儀表(2015年5期)2015-04-09 11:30:52
主站蜘蛛池模板: 久久久成年黄色视频| 亚洲动漫h| 国产欧美精品专区一区二区| 美女无遮挡免费网站| 国产精品区视频中文字幕| 欧美第二区| 国产打屁股免费区网站| 亚洲精品国产日韩无码AV永久免费网| 欧美日韩动态图| 国产亚洲精品97在线观看| 欧美日韩动态图| 亚洲天堂免费观看| 欧美视频二区| 狠狠色香婷婷久久亚洲精品| 色老头综合网| 91伊人国产| 中文字幕佐山爱一区二区免费| 国产第一页免费浮力影院| 国产在线小视频| 欧美视频在线播放观看免费福利资源| 国产99精品视频| 久久精品66| 国产精品无码久久久久久| 国产精品主播| 色婷婷丁香| 国产精品无码制服丝袜| 日韩欧美视频第一区在线观看 | 久操中文在线| 久久国产精品夜色| 99精品国产电影| 国产精品免费露脸视频| 久久99精品国产麻豆宅宅| 国产乱子伦视频三区| 欧美日韩导航| 国产成人福利在线视老湿机| 99久久无色码中文字幕| 久久一本精品久久久ー99| 亚洲欧美在线看片AI| 免费观看三级毛片| 97国产精品视频自在拍| 在线观看国产网址你懂的| 毛片网站在线播放| 高清亚洲欧美在线看| 午夜福利亚洲精品| 久久不卡国产精品无码| 重口调教一区二区视频| 欧美福利在线| 人妻无码一区二区视频| 日韩人妻少妇一区二区| 99视频免费观看| 国产91精品最新在线播放| 99国产在线视频| 中文字幕日韩丝袜一区| 久久公开视频| 992Tv视频国产精品| 欧美一级夜夜爽www| 直接黄91麻豆网站| a天堂视频| 亚洲一区二区在线无码| 99r在线精品视频在线播放| 好吊色国产欧美日韩免费观看| 丰满的熟女一区二区三区l| 四虎影视无码永久免费观看| 国产黄色免费看| 久久伊伊香蕉综合精品| 亚洲成aⅴ人片在线影院八| 亚洲精品在线91| 色综合中文字幕| 欧美在线视频不卡| 怡春院欧美一区二区三区免费| 欧美在线一二区| 中文字幕伦视频| 免费aa毛片| 国产精品夜夜嗨视频免费视频| 91区国产福利在线观看午夜| 69av在线| 99草精品视频| 91区国产福利在线观看午夜| 人妻少妇乱子伦精品无码专区毛片| 女人18毛片一级毛片在线| 欧美午夜在线观看| 免费国产在线精品一区|