視頻處理接口概要設計方案_第1頁
視頻處理接口概要設計方案_第2頁
視頻處理接口概要設計方案_第3頁
視頻處理接口概要設計方案_第4頁
視頻處理接口概要設計方案_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

視頻處理接口概要設計基于嵌入式系統的智能安防系統V1.0編寫:甘淼日期:2015-08-15檢查:胡德昆日期:審核:日期:批準:日期:成都大學計算機學院1、系統概述本系統是基于嵌入式的智能安防分析系統,系統拓撲圖如圖1所示,接口利用高清監控攝像頭獲取視頻數據,通過視頻分析接口分析視頻,并將異常發送至終端。視頻采集層:本系統對攝像頭圖像的采集,主要是利用linux內核提供的usb設備的編程框架v4l2。通過v4l2可以簡單方便的打開usb和板載攝像頭,以及對攝像頭屬性、格式的設定。視頻分析層:本接口自動將傳入的各種視頻原始數據(YUV420、YUV422)轉換成視頻分析所需要的視頻格式(RGB24),再通過分析RGB24視頻流來發現異常(攝像頭干擾、物體闖入、陌生人員等)。報警應用層:若系統檢測出異常,則使用報警應用層將異常信息推送至報警設備,報警設備可以是電腦端、手機端、平板端以及其它報警設備,報警應用層負責對報警設備的管理或者對報警信息的推送等等。Main管理層:對視頻采集模塊、視頻分析模塊以及報警模塊做統一管理。通過調用視頻采集模塊獲取視頻流,并將視頻流傳入視頻分析接口,若接口返回異常,則調用報警模塊。

圖1系統拓撲圖2、系統結構本系統主要分為三層結構,視頻采集層、視頻分析接口層以及報警層。實現的功能模塊有視頻采集、視頻格式轉換、攝像頭干擾檢測、人臉檢測與識別以及物品出入檢測。功能結構圖如圖2所示:視頻采集層分析接口層圖2系統功能結構圖YuV視頻報警模塊.視頻采集層分析接口層圖2系統功能結構圖YuV視頻報警模塊.報警設備3報警設備2■(待定)報警設備1應用層系統通過高清攝像頭來獲取實時監控視頻,由于獲取的視頻幀格式YUV420和YUV422格式,所以系統會先將視頻格式轉換至視頻分析算法需要的RGB24格式,分析接口層負責分析視頻信息,如若分析接口分析出異常,則調用報警模塊來管理報警設備或者發送報警信息,接收報警信息的設備為遠程終端或者本地報警設備。采集設備:系統暫定為ARM自帶的板載攝像頭或者外接的USB攝像頭,系統可以采集這兩種設備視頻信息,若要使用其它類別的攝像頭,比如網絡攝像頭等等,則需要重新設計編碼采集模塊。采集模塊:系統通過調用Linux內核提供的IO通道管理接口V4L2來獲取實時視頻,因為V4L2管理USB攝像頭和板載攝像頭采用的是相同的管理方式,所以本系統同時對者兩種設備兼容。格式轉換模塊:系統獲取到的視頻為YUV420和YUV422格式,本模塊負責將YUV格式的視頻轉換成RGB格式的視頻。干擾檢測模塊:通過設計的干擾檢測算法來分析實時視頻,如若分析出攝像頭受到遮擋或者干擾,返回干擾異常。人臉檢測模塊:通過訓練好的人臉模型,來對實時視頻幀做遍歷檢測,若找到人臉,則返回人臉輪廓。人臉識別模塊:若人臉檢測模塊找到人臉輪廓,則本模塊負責分割人臉圖像,然后與訓練好的人臉作比對,返回相應的人名。若人臉檢測模塊未找到人臉,則本模塊不做處理。物品檢測模塊(待定):通過相應的物品檢測算法來分析實時視頻幀,若檢測到物品出入,則返回異常,若未檢測到物品出入,則返回正常。報警模塊:報警模塊負責接收相應的報警狀態,然后做出相應的報警操作,報警操作主要包括對本地報警設備的管理,和發送報警信息至遠程終端。報警設備:報警設備可以是本地設備(蜂鳴器、顯示器等),也可以是遠程終端(PC機、手機、平板電腦等)。3、模塊分析3.1視頻采集模塊3.1.1模塊功能視頻采集模塊主要通過linux提供的V4L接口來管理攝像頭,模塊主要功能有攝像頭的打開、初始化、幀提取以及關閉攝像頭,模塊流程如圖3所示:圖3采集流程V4L利用open函數打開設備文件并獲取設備文件標識符,然后通過接口函數ioctl和文件標識符來管理IO通道,達到初始化攝像頭的目的。由于申請到的緩存屬于內核存儲區,所以需要用mmap函數將內核存儲區映射到用戶存儲區。V4L關閉攝像頭,就是利用ioctl來關閉視頻流,用close函數關閉設備文件,從而達到對關閉攝像頭所做的善后處理。3.1.2模塊接口函數⑴打開攝像頭接口函數:boolopenCam(char*device);函數功能:打開攝像頭的設備文件,獲取到攝像頭的設備ID,成功返回true,失敗返回falseo函數介紹:device:為攝像頭設備文件的路徑,由接口外部傳入接口。vfd:獲取到的設備文件標識符。O_RDWR:以讀寫方式打開文件。⑵攝像頭初始化接口函數:voidcamInit();函數功能:查詢攝像頭支持的所有格式、設置幀格式、申請幀緩存、將緩存映射到用戶存儲區、打開視頻流。函數介紹:intioctl(intfd,intcmd,…);fd:文件標識符cmd:VIDIOC_RECBUFS分配內存VIDIOC_QUERYBUF把VIDIOC_RECBUFS中分配的內存轉換成物理地址VIDIOC_ENUM_FMT查詢當前驅動支持的視頻格式VIDIOC_S_FMT設置當前驅動的頻捕獲格式VIDIOC_G_FMT讀取當前驅動的頻捕獲格式VIDIOC_TRY_FMT驗證當前驅動的顯示格式VIDIOC_QBUF把數據從緩存中讀出來VIDIOC_DQBUF把數據放入緩存隊列VIDIOC_STREAMOM打開數據流VIDIOC_STREAMOFF關閉數據流V4L2_FIELD_NONE以逐行采用獲取視頻V4L2_MEMORY_MMAP以映射方式讀取緩存mmap函數將內核緩存區映射到用戶內存區⑶取幀接口函數:unsignedchar*getFrame();函數功能:讀取幀序列中的一幀,返回幀緩存首地址函數介紹:intselect(vfd+1,&rfds,NULL,NULL,&ts)select機制VIDEO結構體用戶緩存一幀⑷關閉攝像頭接口函數:voidcloseCam();函數功能:關閉數據流,關閉設備文件函數介紹:vfd設備文件標識符close()關閉文件3.1.3模塊私有函數⑴視頻格式查詢私有函數:voidqueryFormat();函數功能:查詢設備驅動支持的視頻格式,存儲結構為structv4l2_fmtdescfmtd,提供給格式設置時調用函數介紹:利用ioctl接口的VIDIOC_ENUM_FMT宏控制查詢視頻格式,存儲在v4l2_fmtdesc結構中3.1.4結構介紹⑴structv4l2_format(enumv4l3_buf_typetype;union(/*V4L2_BUF_TYPE_VIDEO_CAPTURE*/structv4l2_pix_formatpix;//本系統中的格式/*V4L2_BUF_TYPE_VIDEO_OVERLAY*/structv4l2_windowwin;/*V4L2_BUF_TYPE_VBI_CAPTURE*/structv4l2_vbi_formatvbi;/*V4L2_BUF_TYPE_SLICED_VBI_CAPTURE*/structv4l2_sliced_vbi_formatsliced;/*userdefined*/__u8raw_data[200];}}⑵structv4l2_pix_format{__u32width;//幀寬__u32height;//幀高__u32pixelforamt;//幀格式enumv4l2_filedfiled;//采樣區域__u32bytesperline;//備用__u32sizeimage;//圖像大小enumv4l2_colorspace;//顏色空間__u32priv;//私有數據}⑶structv4l2_requestbuffers{__u32count;〃緩存區大小,幀數量enumv4l2_buf_typetype;//緩存區類型enumv4l2_memorymemory;//內存區的使用方式__u32reserved[2];//}3.2格式轉換模塊3.2.1模塊功能格式轉換模塊的功能就是負責將采集模塊采集到的視頻轉換成視頻分析所需要的格式。其中分為YUV420轉IplImage、YUV422轉IplImage以及RGB轉IplImage,轉換流程如圖4所示:圖4格式轉換流程本系統使用的攝像頭暫定為arm板載攝像頭和USB攝像頭,獲取的視頻格式分別為YUV420打包格式和YUV422平面格式,所以本模塊暫時只支持這兩種格式轉換,YUV轉RGB的通用公式如公式(1)。系統采用的是計算機視覺開源庫opencv,所以還需要將RGB數據轉換成IplImage結構,這里要注意IplImage結構通道排列為BGR。1R]‘101.402'fy11^^FT1-0.3441-0.7141>\(U-128)>⑴B.11.7720,.(V-128),⑴原始數據轉IplImage接口函數:IplImage*DATA_2_IplImage(unsignedchar*input,intwidth,intheight,enumframeformatformat);接口功能:YUV422平面格式轉IplImage、YUV420打包格式轉IplImage以及RGB格式轉IplImage的統一封裝接口,提供給各個分析模塊調用接口介紹:input輸入的原始數據幀width幀寬度height幀高度format原始幀格式,這里支持YUV422(平面)、YUV420(打包)、RGB24⑵YUV420轉IplImage接口函數:IplImage*YUV420_2_IplImage(unsignedchar*input,intwidth,intheight);接口功能:將yuv420數據幀轉換成IplImage幀(備用)接口介紹:input傳入的yuv420數據width幀寬height幀高⑶YUV422轉IplImage接口函數:IplImage*YUV422_2_IplImage(unsignedchar*input,intwidth,intheight);接口功能:將yuv422數據幀轉換成IplImage幀(備用)接口介紹:input傳入的yuv422數據width幀寬height幀高⑷RGB轉IplImage接口函數:IplImage*BGR_2_IplImage(unsignedchar*input,intwidth,intheight);接口功能:將RGB數據幀轉換成IplImage幀(備用)接口介紹:input傳入的BGR數據width幀寬height幀高3.2.3模塊私有函數⑴YUV420轉BGR私有函數:boolYUV420_2_BGR(unsignedchar*puc_y,unsignedchar*puc_u,unsignedchar*puc_v,unsignedchar*puc_rgb,intwidth,intheight);函數功能:將YUV420原始數據轉換成IplImage需要的BGR24格式,提供給YUV420_2_IplImage接口使用函數介紹:puc_yY通道分量puc_uU通道分量puc_vV通道分量puc_rgb輸出的BGR數組width、height幀的寬高⑵YUV422轉BGR私有函數:boolYUV422_2_BGR(unsignedchar*yuv_buf,unsignedchar*rgb_buf,intwidth,intheight);函數功能:將YUV422數據轉換成IplImage需要的BGR24格式,提供給YUV422_2_IplImage接口使用函數介紹:yuv_buf輸入的yuv數據rgb_buf輸出的rgb數據width幀寬height幀高3.2.4結構介紹⑴typedefstruct_IplImage{intnSize;//IplImage大小intID;〃版本intnChannels;〃通道數intalphaChannel;〃忽略intdepth;〃位深charcolorMode[4];〃被opencv忽略charchannelSeq[4];//被opencv忽略intdataOrder;//0-交叉存取顏色通道1-分開存取顏色通道intorigin;〃圖像原點位置intwidth;〃圖像寬度intheight;〃圖像高度structIplROI*roi;〃圖像感興趣區域struct_IplImage*maskROI;//opencv中為NULLvoid*imageId;//同上struct_IplTileInfo*tileInfo;//同上intimageSize;〃圖像大小char*imageData;〃像素數據intwidthStep;〃行大小,字節為單位intBorderMode⑷;//邊際結束模式,被opencv忽略intBorderConst[4];//同上char*imageDataOrigin;//指針指向一個不同的圖像數據結構(不是必須排列的),是為了糾正圖像內存分配準備的}IplImage;

3.3干擾檢測模塊3.3.1模塊功能干擾檢測模塊的功能是自動檢測攝像設備是否受到遮擋或其它干擾,若檢測到異常及時反饋。檢測流程如圖5所示:NO圖5NO圖5干擾檢測流程干擾檢測模塊的檢測算法,主要采用混合高斯模型來提取前景,通過計算前景區域面積所占比例來判斷攝像頭是否受到干擾。混合高斯算法相比其它算法識別準確率更高,抗干擾能力更強,能有效識別各類復雜場景,非常適合做本場景的前景提取。3.3.2模塊接口函數⑴干擾檢測接口函數:intinterference(unsignedchar*input,intwidth,intheight,enumframeformatformat);接口功能:檢測攝像設備是否受到遮擋或者其它干擾,干擾返回1,正常返接口介紹:input視頻幀數據width幀寬height幀高format傳入的視頻幀格式3.3.3模塊私有函數無3.3.4結構介紹⑴Mat類型查看:/893948.html3.4人臉檢測模塊3.4.1模塊功能人臉檢測模塊的功能主要是通過訓練好的級聯分類器對傳入的視頻幀進行查找,然后返回找到的人臉個數和人臉輪廓。人臉檢測流程如圖6所示:圖6人臉檢測流程圖6人臉檢測流程識別模塊本系統用的人臉模型和檢測算法摒棄了復雜的浮點數運算,人臉模型和檢測算法均采用二進制整數形式存儲和運算,檢測速度得到大大的提升,非常適合嵌入式系統應用。檢測算法采用N.Markus,M.Frljak,I.SPandzic,J.Ahlberg和R.Forchheimer算法實現,版權歸上述人所有。3.4.2模塊接口函數⑴人臉檢測接口函數:intdetectFaceInImage(IplImage*input,CvRect**faceRect);接口功能:檢測幀圖像中的人臉,返回人臉輪廓和人臉數,本接口函數只提供給人臉識別模塊調用接口介紹:inputImg輸入的幀圖像facesRect輸出的人臉輪廓3.4.3模塊私有函數⑴人臉查找私有函數:intfind_objects(floatrs[],floatcs[],floatss[],floatqs[],intmaxndetections,void*params,void*pixels,intnrows,intncols,intldim,floatscalefactor,floatstridefactor,floatminsize,flaotmaxsize);函數功能:查找返回圖像中所有檢測到的人臉以及人臉數,其中包括臨近的人臉簇函數介紹:rs人臉中心y坐標cs人臉中心x坐標ss人臉直徑qs人臉可信度maxndetections最大查找人臉數params人臉模型pixels待檢測的像素數據nrows圖像高度9)ncols圖像寬度Idim圖像行字節數scalefactor查找框放大比例系數stridefactors查找框移動步幅minsize最小查找框maxsize最大查找框⑵消除人臉簇私有函數:intcluster_detections(floatrs[],floatcs[],floatss[],floatqs[],intn);函數功能:find_object函數找到的人臉,包含了相同人臉的不同大小輪廓,本函數負責去除這些人臉簇,返回實際人臉數函數介紹:rs人臉中心y坐標cs人臉中心x坐標ss人臉直徑qs人臉可信度nfind_object函數返回的輪廓個數⑶加載人臉分類器私有函數:boolloadCascade(char*cascadeFile);函數功能:加載人臉分類器至內存,為人臉檢測提供人臉模型函數介紹:1)cascadeFile人臉分類器文件,文件名為facefinder3.4.4結構介紹⑴typedefstruct_CvRect{Intx;//矩形左上方x坐標Inty;//矩形左上方y坐標Intwidth;//矩形寬度Intheight;//矩形高度}CvRect;

3.5人臉識別模塊3.5.1模塊功能人臉識別模塊的功能是對視頻幀中的人臉與訓練好的人臉做比對,返回可信度最大的可信值和人名,檢測流程如圖7所示:檢測模塊人臉分割人臉圖像h重置大小檢測模塊人臉分割人臉圖像h重置大小人臉圖像b直方圖均衡化人臉圖像b人臉識別圖像,圖像,圖像,MaxConfidence,Name本系統使用的人臉識別算法采用的是opencv基于PCA原理的的特征點識別算法,其實現流程主要為,對人臉圖像做預處理,增強圖像的人臉特征,然后利用深度卷積神經網絡(CNNs,ConvolutionalNeuralNetwork)模型對圖像做識別,使精確性較更高。3.5.2模塊接口函數⑴人臉識別接口接口函數:char*faceRecongnition(unsignedchar*input,intwidth,intheightEnumframeformatformat);接口功能:對傳入的視頻幀中的人臉做識別,返回可信度最高的人臉名字接口介紹:input傳入的視頻幀數據width圖像寬度height圖形高度format傳入的圖像格式3.5.3模塊私有函數⑴加載訓練的人臉數據私有函數:intloadTrainingData(CvMat**pTrainPersonNumMat);函數功能:加載訓練好的人臉結果集,成功返回1,失敗返回0函數介紹:1)pTrainPersonNumMat輸出的訓練的人臉結果集⑵人臉分割私有函數:IplImage*crop

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論