电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

镜头边缘检测VIP免费

镜头边缘检测_第1页
1/33
镜头边缘检测_第2页
2/33
镜头边缘检测_第3页
3/33
镜头边界检测01概念介绍三种方法实验小结02030405Contents01概念介绍基本概念视频由一个个镜头所组成,镜头是时间上连续的若干幅帧图像组成的片段。当镜头发生转变时,会产生一些明显的变化,镜头边界检测依据这些变化来判断镜头是否发生转变。镜头发生转变时的边界帧,也称关键帧。镜头镜头边界检测基本概念镜头边界检测的基础是两个连续镜头的内容有较大的不同性,因此可以用定量的方法来确定帧序列之间的差别;如果这种差别超出了给定的阈值,就可以提取出镜头的边界(关键帧)关键帧短片截图的关键帧02三种方法一帧本质就是一张图片,因此衡量两帧之间变化本质就是衡量两张图片的区别。在KNN算法中衡量两张图片之间相似度就是图片对应像素相减之和,将其累加,值最小的即最接近的两张图片。连续帧相减法中,我们同样使用这个指标来评价两张图片的近似度,一旦区别大到一定地步则认为该两帧是镜头边界。􀁺􀁺连续帧相减算法原理:计算相邻两帧像素变化的数目。当超过设定的阈值时,即找到镜头的边界缺点:对摄像机运动敏感,如放缩、平移,往往较小的物体运动会造成很大的帧间差,从而容易导致误检测解决办法:通过滤波器的使用来降低。在比较一帧的每个像素前,用它的邻近区域的平均值来代替,这也过滤了输入图像的一些噪声。􀁺连续帧相减图片演示相邻连续帧图片演示直方图相减代码算法原理:统计相邻两帧中所有像素在不同灰度(颜色)上的分布差异,当差异的累加值超过阈值T时,即检测到镜头边界优点:对对象运动不敏感,因为直方图忽略了帧内的空间变化缺点:可能两个图像有类似的直方图但却是完全不同的内容。然而,这种事件的概率是足够低图片演示相邻两个帧图像帧图像灰度图灰度图直方图􀁺时空切片代码切片就是从连续的视频图像序列的同一个位置提取出的一行(列)像素组合而成的一幅二维图像。如果将视频看作是一个(x,y,t)三维图像序列,其中(x,y)为图像维,t为时间维,则视频的时空切片可以看作是由时间维与图像维构成的一幅二维图像。􀁺时空切片切片颜色和纹理纹理中包含有对应视频的大量信息,包括镜头切变点、摄像机的运动方式等因为单个镜头内部的视频帧在时间、空间和图像结构上是连续的,在时空切片上的表现就是颜色和纹理空间上的连续性。镜头发生切换时,视频数据会跟着发生一系列的变化,表现在颜色差异突然增大、运动的不连续等,时空切片上的颜色和纹理也会表现出明显的不连续现象。03实验连续帧相减代码实现直方图相减代码实现//imhist(i);直接显示图像i的灰度直方图;直方图相减代码实现直方图相减少关键帧时空切片代码实现intmain(intargc,char**argv){//voidcutColSlide(CvMat*,CvMat*,int,int);//垂直切片voidcutRowSlide(CvMat*,CvMat*,int,int);//水平切片inti;intnFrmNum=0;inttotalFrmNum;//总帧数char*videofile="G:/Makoto.mkv";//声明IplImage指针IplImage*pFrame=NULL;//视频帧//IplImage*pSlImg_col;IplImage*pSlImg_row;//水平切片图像CvMat*pFrameMat=NULL;//视频帧数据矩阵CvMat*pFrMat_r=NULL;//前景数据CvMat*pFrMat_g=NULL;CvMat*pFrMat_b=NULL;//CvMat*pSlMat_col;CvMat*pSlMat_row;//CvMat*pSlMat_col_r[COL_NUM+1];//垂直切片数据矩阵CvMat*pSlMat_row_r[ROW_NUM+1];//水平切片数据矩阵//CvMat*pSlMat_col_g[COL_NUM+1];//垂直切片数据矩阵CvMat*pSlMat_row_g[ROW_NUM+1];//水平切片数据矩阵//CvMat*pSlMat_col_b[COL_NUM+1];//垂直切片数据矩阵CvMat*pSlMat_row_b[ROW_NUM+1];//水平切片数据矩阵CvCapture*pCapture=NULL;//读取视频数据的指针charfilename[50];时空切片代码实现//打开视频文件if(!(pCapture=cvCaptureFromFile(videofile))){fprintf(stderr,"Cannotopenvideofile%s\n",videofile);return-2;}//printf("StarttoreadingVideo!Andyouhavetobepatient!\n");//逐帧读取视频while(pFrame=cvQueryFrame(pCapture)){nFrmNum++;//如果是第一帧,需要申请内存,并初始化if(nFrmNum==1){totalFrmNum=(int)cvGetCaptureProperty(pCapture,CV_CAP_PROP_FRAME_COUNT);//获取视频文件总帧数//创建切片初始矩阵pSlImg_row=cvCreateImage(cvSize(pF...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

镜头边缘检测

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部