视频处理接口概要设计方案_第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

提交评论