欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于背景差分的运动目标检测与跟踪.doc

    • 资源ID:4211337       资源大小:410.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于背景差分的运动目标检测与跟踪.doc

    课程论文设计题 目 基于背景差分的运动目标检测与跟踪 学 院 计算机学院 专 业 计算机技术 学生姓名 学 号 年级 任课教师 二零一零年一月四日基于背景差分的运动目标检测与跟踪算法实现 摘要 运动目标检测与跟踪是计算机视觉、视频信息处理等领域的重要研究内容。减背景技术是常用的运动目标检测方法,其背景模型的提取、更新、背景扰动、光照条件变化等是必须要考虑的问题。提出了一种有效的运动目标检测方法,较好地解决了以上问题,首先利用统计方法建立背景模型,再对背景模型进行实时更新,以适应视频本身和光线的变化,最后使用形态学方法消除噪声和背景扰动带来的影响。运动目标跟踪方面使用区域跟踪技术,并引入两个参数实现跟踪匹配,很好地处理了目标之间的相互遮挡问题。实验结果表明,该方法是快速有效,能够满足实时的需要。关键词 视频信息处理;统计背景建模;目标跟踪;检测Moving object detection and tracking based on background subtraction Abstract Moving objects detection and tracking play an important role in computer vision and video processing. Background subtraction is usually used to detect object regions. But there are many problems, such as background extracting, update, illumination changes and shadows, in this method. We propose an effective moving objects detection model, which addresses the problems aforementioned. A statistical method is used to obtain the background that is updated real time in order to adapt to illumination changes and others. After threshold operation, we utilize the morphological operation to solve the effect of disturb and noise, and connected region measurement with two parameters to process the overlapping between many objects. Experimental results show that the proposed model achieves a better performance both in effectiveness and real-time aspect.Key Words Video information processing; Statistical background modeling; Object tracking; Detection1引言运动目标的检测与跟踪是视觉监控系统等应用领域的重要研究内容。随着视频信息智能化处理需求1,2的不断增加,如何从视频流中提取运动目标、并对目标进行实时跟踪越来越受到人们的关注。减背景方法3,4是常用的运动目标检测方法。其基本思想是将视频流中当前一帧所有像素点与事先通过某种方法计算得到的背景图像中对应像素点相减并取绝对值,如果绝对值超过某个预先设定好的阀值,则认为当前帧中对应的像素点是运动目标的像素点;否则,就认为对应的像素点是背景像素点。相减运算的结果还提供了视频流中运动目标的位置、大小及形状等信息。但是该方法在应用过程中常会遇到如下的问题:(1)背景获取:最简单的背景获取方法就是在视频场景没有运动目标的情况下直接将某一帧存储为背景图像,但在大多数的视频应用中,如交通监控和行人检测,这一要求很难得到满足,故需要一种能够在运动目标存在的视频流中实时获取背景图像的方法。(2)背景扰动:背景中经常存在一些对象轻微的扰动,如树枝的摇动,扰动部分不应该看作是前景运动目标。(3)光照变化:天气、光线等因素随着时间的变化也会影响运动目标的检测结果,这是必须要考虑的问题。(4)背景更新:为了适应外界各种条件的不断变化,有必要对建立起来的背景模型进行实时更新。以往的运动目标检测方法或者不能解决以上所有问题,或者是通过构造复杂的模型来解决以上问题,其计算复杂性和对系统的要求都比较高,有时可能无法满足实时处理的要求。本文在减背景方法的基础上,提出了一种更为有效的运动 目标检测方法。在背景的提取阶段,允许视频流中有运动目标的存在,在这种情况下,首先采用基于统计的方法建立背景模型,然后进行减背景操作来检测视频中的运动目标,并对背景模型进行实时更新,以适应光线的变化和场景本身的变化,最后对检测结果使用形态学运算和连通区域面积限制目标大小的方法进行后处理,消除噪声和背景扰动带来的影响。当运动目标确定后,采用区域跟踪技术对目标进行实时跟踪,跟踪技术中使用了两个参数以避免运动目标之间的遮挡问题。实验结果证明,提出的方法取得了比较理想的结果。 2 视频中运动目标的检测过程 2.1 背景模型的建立背景模型建立的准确与否,直接关系到运动目标检测结果的准确性。国内外已经提出了许多背景模型的建立方案,如W4方法5,该方法是在视频中没有目标出现的情况下,对场景进行一段时间的测量,记录每个像素点的最大和最小亮度值,以及相邻两帧间亮度最大差异值,然后使用这3个值表示背景模型。还有使用前几帧图像像素亮度值的平均值作为背景模型的。以上这些方法都要求视频中至少一段时间内没有运动目标的出现,但是这种要求在多数场合下并不能得到满足。 本文提出一种简单、有效的背景模型建立方法,它可以在视频场景中存在运动目标的情况下提取出背景图像。此方法是基于这样的假设,在背景模型建立阶段,运动目标虽然在场景区域中运动 ,但是它并不会长时问地停留在某一位置上。对视频流中某一像素点进行一段时间的观测,可以发现,它的亮度值只是在前景运动目标通过该点时,才会发生较大的变化,如图1(a)所示。对该像素点的亮度值进行统计,可以看出,在一段时间内,它的亮度值主要集中在一个很小的区域中,如图1(b)所示。因此,可以用这个区域内的平均值作为该点的背景值。图1具体实现过程如下:在灰度模式下,像素亮度值的变化范围为0 255,将该范围划分成若干区间 0,T,T,2T,nT,255,n = 255/T。对于每个像素点,统计一段视频内每个区间亮度值出现的次数,找出出现次数最多的那个区间,接着计算该区间内所有亮度值的平均值,用该平均值作为背景图像在该点的亮度值。实验表明,该方法提取背景过程的中,不受前景运动目标的影响。1.2运动目标检 运动目标检测是计算视频流中当前帧的像素点和背景图像中对应像素点的差异并取其绝对值,如果绝对值大于给定的阈值,则判定该像素点为前景运动目标的像素点。一对像素点在做相减运算时,可以使用它们的亮度值、色度值或其它参数,本文采用亮度值相减,检测规则如下:其中是运动目标像素点的集合,表示当前帧中的像素点亮度值,表示背景图像中对应像素点的亮度值,为阀值,目前阀值的选择主要依靠先验知识,比如根据目标与背景的亮度差别等。1.3 后处理及背景模型的更新由于视频本身不可避免的噪声影响,会使上述检测结果出现一些问题,比如本是背景图像的区域像素点经过检测后被当成运动区域的像素点,运动目标内的部分区域因为某种原因被漏检,以及背景图像的分部区域由于树枝、树叶的轻微晃动而被误判为运动目标的区域等等。为了消除这些影响,首先对上一步的检测结果用形态学的腐蚀、膨胀方法进行处理,再找出其经过形态学处理后的连通区域,接着计算每个连通区域的面积,对于面积小于一定阀值的区域,将其抛弃,不看作是前景运动目标区域。形态学运算使用5X5的矩阵算子,连通区域内像素点个数的阈值选择要视具体情况而定。背景模型的实时更新是要使背景能够对外界环境的变化具有一定的自适应性。对于光线的变化,我们的方法与文献6中采用的方法类似。对于检测到的存在运动目标的区域不进行更新,而只对没有检测到运动目标的区域进行实时更新,对于这部分区域:在具体的检测过程中,有时前景与背景对应像素点的亮度值相差很小,导致前景目标的部分区域被漏检掉,如果对背景中对应部分也进行更新,就会生成错误的背景模型,对后面的检测过程造成一定的影响,因此,选择最近N帧没有前景目标通过的像素点进行更新 。具体更新过程如下 : 其中分别代表当前和下一帧背景,分别代表该点最近的N个亮度值,为更新系数,控制背景更新的速度。图2是一个像素点亮度值的观测曲线,可以看出,该方法对于光线变化有很强的自适应性。 图23运动物体的跟踪当目标检测出来以后,就要对运动的目标进行跟踪,本文采用区域跟踪的方法实现对运动目标的跟踪, 并在区域跟踪算法中选用了二个参数实现匹配。该方法能够在物体重叠和遮挡的情况下准确地定位出运动物体在图像中的位置。很好地实现了物体的跟踪, 也满足了实时性处理的要求。图像中标号为I的目标的大小用目标面积 SizeI来描述,每一目标都对应一个外截矩形框,用 BoxI来进行描述。Box可用一条对角线的两端点 S , T的坐标来表示:定义1:相邻两帧中标号为 i的目标与标号为 j 的目标面积大小差:其中 N 为图像中目标的标号。定义2:标号为L的目标的质心定义如下这里N是图像中标号为L的目标含有象素点个数, xi是象素点i的横坐标, yi是象素点i的纵坐标。相邻两帧中标号为 I的目标与标号为J的目标质心之间的距离具体跟踪步骤如下:(1)将第一帧中的目标检测出来,并计算出被跟踪目标(假设为目标M)在本帧中面积的大小、质心的位置等数据。(2)检测出下一帧中的目标 ,计算出各自的面积以及质心的位置。(3)分别计算出目标M与下一帧中各目标的质心间的距离Dis和面积差DifThen i就是M这里是阀值,是加权系统,i为下一帧中各目标的标号。(4)更新被跟踪车辆 M 的面积和质心位置的数据。转到第(2)步继续实现对后续帧的跟踪。运用上述的跟踪算法就可以实现对某一目标的跟踪, 也能够实现对多目标的同时跟踪。以上算法是建立在这样的假设条件下的:由于两相邻帧的时间间隔很短,因而在相邻两帧之间目标的移动距离并不大, 并且目标在图像中的面积变化率不大。实验表明这种假设是完全满足的, 能很好地实现物体的跟踪。当两个物体在场景中相重叠时需要首先将它们分开后才能够用上述的算法进行跟踪。对于重叠物体的分割本文不再详述有兴趣的读者可以参考文献7。4实验结果及结论我们采用一段交通视频来验证提出的模型,编程环境选用Opencv2.1和Visual C+ 2010。Opencv2.1是一种开源的用于图像处理和计算机视觉的函数库,由Intel公司使用C+高级语言开发。Visual C+ 2010是微软公司开发的编程工具,支持最新的C+0x标准。图3是实验的结果,其中图3a是原始图像,图3b是检测和跟踪结果,检测方框可随着目标的大小而改变,目标的运动轨迹由同一目标在各帧中的质心组成,在每一帧中各个目标的质心由实心圆代表。图3提出的背景模型在提取过程中允许运动目标存在,因此需要2030秒的时间来完成背景模型的建立。通过对背景模型的实时更新,可以适应光线、天气等外界条件变化带来的影响。这种方法能够在运动物体频繁出现的场合下获得满意的效果,然后运用质心间的距离与物体面积之差两个参数对检测出来的目标进行实时跟踪。从上述实验结果中可以看到,该方法快速、准确,有着广泛的适用性。还可以在上述基础上,进行目标识别、流量统计等其它操作,这需要进一步的研究工作。方法还存在一些问题,第1个问题是当前景运动目标与背景亮度很接近时,运动目标很难被检测出来,或者是运动目标出现较大的空洞,对于这种 情况,是因为在判断运动目标时,仅仅使用了亮度信息,一个解决的途径是使用颜色与轮廓及深度等相结合的方法。第2个问题是如何实时更新背景来适应场景光线的突变,如室内开灯、关灯的情况,目前还没有比较有效的解决方法,有人采用事先存储有代表性的背景的方法,但这种方法对于场景本身发生变化的情况,明显无法适应。因此,这个问题需要在后续工作中进一步深入研究。参考文献1 Collins R, Lipton A, Kanade T, etal. A system for video surveillance and monitoringR. Tech. Report CMU-RI-TR-00-12, Robotics Institute, Carnegie Mellon University, 2000-05.2 Koller D, Daniilidis K, Nagel H. Model-based object tracking in monocular image sequences of road traffic scenesJ. International journal of computer vision, 1993, 10(3).3 Wren C R, Azarbayejani A, Darrell T. Plinder: real-time tracking of the human bodyJ. IEEE transactions on pattern analysis and machine intelligence, 1977-07, 7.4 Mclvor M. Background subtraction techniquesR. IVCNZ00, Hamilton, New Zealand, 2000-11.5 Haritaoglu I, Davis L S, Harwood D. W4 who? Where? What? A real time system for detecting and tracking peopleA. In FGR98C, 1998.6 Cucchiara R, Grana C, Piccardl M. Improving shadow suppression in moving object detection with HSV color informationJ. Proc. Of ITSC, 2001.附录1 源代码(模块代码主体部分)/下面的函数用以检测视频中运动的目标。基于背景差模型void CtraceDlg:OnBnClickedTracing()IplImage* pFrame=NULL;/声明当前帧IplImage* pFrImg=NULL;/声明前景图像IplImage* pBkImg=NULL;/声明背景图像/声明对应的图像矩阵CvMat* pFrameMat=NULL;CvMat* pFrMat=NULL;CvMat* pBkMat=NULL;CvCapture* pCapture=NULL;/声明视频捕捉器,用以读取视频内容int nFrmNum=0;if(!(pCapture=cvCaptureFromFile(aviFilePath)MessageBox(_T("请先打开视频文件");return;/create video windowscvNamedWindow("Video",1);cvNamedWindow("Background",1);cvNamedWindow("Foreground",1);cvMoveWindow("Video", 30, 0); cvMoveWindow("Background", 360, 0); cvMoveWindow("Foreground", 690, 0);/read every framewhile(pFrame=cvQueryFrame(pCapture)nFrmNum+;if(nFrmNum=1)/存放背景图像(灰度)pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);/存放前景图像(灰度)pFrImg=cvCreateImage(cvSize(pFrame->width,pFrame->height),IPL_DEPTH_8U,1);/图像对应的矩阵都是一维的pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1); pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);/将彩色图像转化为灰度图像cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);/将灰度图像存入矩阵,灰度图像是单通道的cvConvert(pFrImg, pFrameMat);cvConvert(pFrImg, pFrMat);cvConvert(pBackground, pBkMat);elsecvCvtColor(pFrame,pFrImg,CV_BGR2GRAY);cvConvert(pFrImg,pFrameMat);/高斯滤波cvSmooth(pFrameMat,pFrameMat,CV_GAUSSIAN,3,0,0,0);/当前帧减去背景图像并取绝对值cvAbsDiff(pFrameMat,pBkMat,pFrMat);/二值化前景图像cvThreshold(pFrMat, pFrImg, 20, 255.0, CV_THRESH_BINARY);/形态学滤波,去噪cvErode(pFrImg, pFrImg, 0, 1);cvDilate(pFrImg, pFrImg, 0, 2);cvErode(pFrImg,pFrImg,0,1);/滑动平均更新背景(求平均)cvRunningAvg(pFrameMat, pBkMat, 0.003, 0);/将背景矩阵转化为图像格式,用以显示cvConvert(pBkMat,pBkImg);/保持图像的旋转方向/pBkImg->origin=pFrImg->origin=pFrame->origin;/显示图像cvShowImage("Video",pFrame);cvShowImage("Background",pBackground);cvShowImage("Foreground",pFrImg);if(cvWaitKey(200)>=0)break;cvDestroyWindow("Video");cvDestroyWindow("Background");cvDestroyWindow("Foreground");cvReleaseImage(&pFrImg);cvReleaseImage(&pBkImg);cvReleaseMat(&pFrameMat);cvReleaseMat(&pFrMat);cvReleaseMat(&pBkMat);cvReleaseCapture(&pCapture);/下面的函数用来跟踪视频中的目标void CtraceDlg:OnBnClickedButton2()CvCapture* pCapture=cvCaptureFromFile(aviFilePath);/视频捕捉器 CvMat* foreImageMat=NULL;/前景矩阵CvMat* pBackgroundMat=NULL;CvMat* pMat=NULL;IplImage* pFrame=NULL,*pGray=NULL;pFrame=cvQueryFrame(pCapture);if(pFrame=NULL | pBackground=NULL)MessageBox(_T("请先打开视频文件并训练图像背景");return;int width=pFrame->width,height=pFrame->height;pBackgroundMat=cvCreateMat(height,width,CV_32FC1);pMat=cvCreateMat(height,width,CV_32FC1);foreImageMat=cvCreateMat(height,width,CV_32FC1);previousLabeledMat=cvCreateMat(height,width,CV_32FC1);/前帧标签矩阵currentLabeledMat=cvCreateMat(height,width,CV_32FC1);/当前帖标签矩阵pGray=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);previousObjectSet=new movingObject();/前帧目标单链表currentObjectSet=new movingObject();/当前帧目标单链表cvCvtColor(pFrame,pGray,CV_BGR2GRAY);/将当前帧灰度化cvSmooth(pGray,pGray,CV_GAUSSIAN,3);/高斯滤波cvAbsDiff(pGray,pBackground,pGray);/与背景作差并求绝对值cvThreshold(pGray,pGray,20,255,CV_THRESH_BINARY);/对前景图像二值化cvErode(pGray,pGray,0,1);/腐蚀cvDilate(pGray,pGray,0,1);/膨胀cvConvert(pGray,foreImageMat);/将前景图像转换为矩阵computeObject(foreImageMat,width,height,previousLabeledMat,previousObjectSet);/调用函数计算各目标movingObject*p=previousObjectSet->next,*q=NULL;/定义遍历目标单链表的临时指针objectList *t1=NULL,*t2=NULL;/定义遍历目标轨迹的临时指针char* data=pFrame->imageData;int step=pFrame->widthStep/sizeof(uchar);while(p!=NULL)data(p->y)*step+(p->x)*3+1=255;cvRectangle(pFrame,cvPoint(p->x-10,p->y-10),cvPoint(p->x+10,p->y+10),cvScalar(0,255,0),1,8,0);p=p->next;cvNamedWindow("test",1); cvNamedWindow("frame",1);cvShowImage("test",pFrame);pFrame=cvQueryFrame(pCapture);float tmp_x,tmp_y;int tmp_label;while(pFrame!=NULL)cvCvtColor(pFrame,pGray,CV_BGR2GRAY);cvShowImage("frame",pFrame);cvConvert(pBackground,pBackgroundMat);cvSmooth(pGray,pGray,CV_GAUSSIAN,3);cvConvert(pGray,pMat);cvRunningAvg(pMat,pBackgroundMat,0.003,0);cvAbsDiff(pMat,pBackgroundMat,pMat);cvConvert(pMat,pGray);cvThreshold(pGray,pGray,20,255,CV_THRESH_BINARY);cvErode(pGray,pGray,0,1);cvDilate(pGray,pGray,0,2);cvErode(pGray,pGray,0,1);cvConvert(pGray,foreImageMat);computeObject(foreImageMat,width,height,currentLabeledMat,currentObjectSet);/MessageBox(_T("success here");q=currentObjectSet->next;data=pFrame->imageData;step=pFrame->widthStep/sizeof(uchar);while(q!=NULL)/处理每个目标的轨迹p=previousObjectSet->next;if(p!=NULL)tmp_x=sqrt(pow(float)( p->x-q->x),2)+pow(float)(p->y-q->y),2); tmp_label=p->label;p=p->next;while(p!=NULL)if( sqrt(pow(float)( p->x-q->x),2)+pow(float)(p->y-q->y),2)<tmp_x)tmp_x=sqrt(pow(float)( p->x-q->x),2)+pow(float)(p->y-q->y),2); tmp_label=p->label;p=p->next;p=previousObjectSet->next;while(p!=NULL)if(p->label=tmp_label && abs(p->x-q->x)<100)q->head->next=p->head;p->head=NULL;break;p=p->next;t1=q->head;while(t1!=NULL)cvRectangle(pFrame,cvPoint(t1->x-1,t1->y-2),cvPoint(t1->x+1,t1->y+2),cvScalar(255,0,0),4,8,0);t1=t1->next;/cvLine(pFrame,cvPoint(q->head->x,q->head->y),cvPoint(t1->x,t1->y),cvScalar(255,0,0),6,8,0);dataq->y*step+q->x*3+1=255; int a=(int)sqrt(double)q->area);a=a/2;cvRectangle(pFrame,cvPoint(q->x-a,q->y-a),cvPoint(q->x+a,q->y+a),cvScalar(0,255,0),1,8,0);q=q->next;cvShowImage("test",pFrame);if(cvWaitKey(200)>0)break;pFrame=cvQueryFrame(pCapture);/前帧的目标链表清除,再指向当前帧的目标链表p=previousObjectSet->next;while(p!=NULL)待添加的隐藏文字内容2q=p; p=p->next; t1=q->head; q->head=NULL; while(t1!=NULL) t2=t1; t1=t1->next; delete t2; delete q;previousObjectSet->next=currentObjectSet->next;currentObjectSet->next=NULL;cvWaitKey(0);cvReleaseCapture(&pCapture);cvReleaseMat(&previousLabeledMat);cvReleaseMat(&currentLabeledMat);cvReleaseImage(&pGray);cvDestroyWindow("test");p=previousObjectSet;while(p!=NULL)q=p; p=p->next;delete q;p=currentObjectSet;while(p!=NULL)q=p;p=p->next;delete q;/对二值化的前景矩阵进连通分量标记,并返回一个结构数组。该结构包含区域面积、质心坐标及包/含本区域的矩形的宽高分量void computeObject(CvMat* foreImageMat,int width,int height, CvMat* labeledMat,movingObject* head)int neibor82= -1,-1,-1,0,-1,1,0,-1,0,1,1,-1,1,0,1,1 ;int index=0,row,col,tRow,tCol;cvSetZero(labeledMat);CvPoint points50000;int top=0; int* pmArr=NULL;/标记连通分量for(int i=0;i<height;i+)for(int j=0;j<width;j+)if(cvmGet(foreImageMat,i,j)=255 && cvmGet(labeledMat,i,j)=0)index+;pointstop.x=j; pointstop.y=i;top+;while(top>0)top-; row=pointstop.y; col=pointstop.x;cvmSet(labeledMat,row,col,index);for(int m=0;m<8;m+)tRow=row+neiborm0; tCol=col+neiborm1;if(tRow>=0 && tRow<height && tCol>=0 && tCol<width)if(cvmGet(foreImageMat,tRow,tCol)=255 && cvmGet(labeledMat,tRow,tCol)=0)pointstop.x=tCol; pointstop.y=tRow;top+;/统计运动目标pmArr=new intindex;int *mx0Arr=new intindex;int *my0Arr=new intindex;int value;for(int i=0;i<index;i+)pmArri=0; mx0Arri=0; my0Arri=0;for(int i=0;i<height;i+)for(int j=0;j<width;j+)value=(int)cvmGet(labeledMat,i,j);if(value!=0)pmArrvalue-1+; mx0Arrvalue-1+=j; my0Arrvalue-1+=i;movingObject *p=NULL, *t=NULL;p=head->next;if(p!=NULL)t=p; p=p->next;objectList *t1=NULL,*t2=NULL;t1=t->head; t->head=NULL;while(t1!=NULL)t2=t1;t1=t1->next;delete t2;delete t;p=head; p->next=NULL;

    注意事项

    本文(基于背景差分的运动目标检测与跟踪.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开