请求帮助 实现 背景差减法 、帧间差分法、光流法 的算法,C++或者matlab都行,现成的源码都行
建议用opencv库
环境搭建:
/album/2a138328497ce6074b134f64.html
矩阵操作:
/s/blog_afe2af380101bqhz.html
代码:
absdiff(frame, prveframe, differframe);//获取差分帧 differframe= frame-prveframePr怎么补帧?
工具/原料
一台电脑
方法/步骤
1、首先将视频素材倒入pr中。
2、鼠标右键选择【时间/持续速度】。
3、选择【帧采样】,点击确定。
4、接着再次鼠标右键,选择【时间/持续速度】。
5、将速度改为30%,将【帧采样】切换成【光流法】。
6、可以看到pr已经帮我们自动补帧,视频也不会卡顿啦!光流法一定需要rgb吗 二值图
是的! 在计算机 图像中,颜色值是由 8位 16位 32位等 二进制数来表示的! 他们都是整数! 但是在模拟信号中的RGB 为模拟值! 在AD转换中依旧为 二进制数(也是整数)!怎么跟踪 好好回答 实际找专业
视觉跟踪其实就是利用图像处理技术出图像序列中运动的那个物体。
特征是必须的,没有特诊就没有跟踪的依据,但是可以选择的特征很丰富,原理各部相同没有相关性。
你这里的光流法是利用时间上的统计特性,至于你所谓的特征光流法就看你自己做的什么东西什么要求了,别人不知道你要做什么,什么特征。
视频图像序列检测方法很多,无法回答
第四题大多的图像处理书上都有,建议你好好看看书
第五题更回答不出来了,原因前面说了。
基于你的问题,我认为,这个可能是硕士论文吧(除非是普通的背景生成可以给本科做做)!首先你要好好的看书,这些问题不应该来问而是自己学的,这是最基本的学习研究能力。
第二,你的问题问的太大了,显得很不专业,你的问题找教授来也无从下口回答你。
建议你看数字图像处理的书,外面很多,冈萨雷斯的可能比较容易上手。
讲解的比较通俗易懂,利于你掌握基本知识。
另外你应该在具体方法上大量查阅文献资料(不要说不会查),这些会是一系列的数学问题,别人帮不了你,即使你的导师(除非你是本科生,导师给你的基本都是有成型的东西)。
你论文中必须详细描述的。
高斯模型的具体介绍
展开全部
混合高斯模型:
运动检测的一般方法
目前,运动物体检测的问题主要分为两类,摄像机固定和摄像机运动。
对于摄像机运动的运动物体检测问题,比较著名的解决方案是光流法,通过求解偏微分方程求的图像序列的光流场,从而预测摄像机的运动状态。
对于摄像机固定的情形,当然也可以用光流法,但是由于光流法的复杂性,往往难以实时的计算,所以我采用高斯背景模型。
因为,在摄像机固定的情况下,背景的变化是缓慢的,而且大都是光照,风等等的影响,通过对背景建模,对一幅给定图像分离前景和背景,一般来说,前景就是运动物体,从而达到运动物体检测的目的。
单分布高斯背景模型
单分布高斯背景模型认为,对一个背景图像,特定像素亮度的分布满足高斯分布,即对背景图像B,(x,y)点的亮度满足: IB(x,y) ~ N(u,d) 这样我们的背景模型的每个象素属性包括两个参数:平均值u 和 方差d。
对于一幅给定的图像G,如果 Exp(-(IG(x,y)-u(x,y))^2/(2*d^2)) > T,认为(x,y)是背景点,反之是前景点。
同时,随着时间的变化,背景图像也会发生缓慢的变化,这时我们要不断更新每个象素点的参数 u(t+1,x,y) = a*u(t,x,y) + (1-a)*I(x,y) 这里,a称为更新参数,表示背景变化的速度,一般情况下,我们不更新d(实验中发现更不更新d,效果变化不大)。
高斯混合模型是用于背景提取的方法,OpenCV的cvaux中cvbgfg_gaussmix.cpp文件根据文献An improved adaptive background mixture model for real-time tracking with shadow中提供的方法编写了高斯混合模型函数。
其中定义了CvGaussBGModel类用于存放高斯混合模型的各个参数。
我用OpenCV使用高斯混合模型函数分以下几步: 1。
需要用到icvUpdateGaussianBGModel,icvReleaseGaussianBGModel两个函数,但是源程序中将这两个函数定义为内部函数,需要做一些修改,首先将cvbgfg_gaussmix.cpp中前面两个函数的声明static void CV_CDECL icvReleaseGaussianBGModel( CvGaussBGModel** bg_model ); static int CV_CDECL icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model );两行代码注释掉。
然后在cvbgfg_gaussmix.cpp中间部分两个函数的定义部分,函数头static int和static void改成CV_IMPL int 和CV_IMPL void。
最后在cvaux.h文件中CVAPI(CvBGStatModel*) cvCreateGaussianBGModel( IplImage* first_frame, CvGaussBGStatModelParams* parameters CV_DEFAULT(NULL));这句后面加上以下两句CVAPI(void) icvReleaseGaussianBGModel( CvGaussBGModel** bg_model ); CVAPI(int) icvUpdateGaussianBGModel( IplImage* curr_frame, CvGaussBGModel* bg_model ); 程序修改完毕,点rebuild all,全部重新编译。
2。
在程序初始化部分定义高斯混合模型参数CvGaussBGModel* bg_model=NULL;在读取第一帧图像(背景图像)时,进行高斯背景建模bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(image, 0);image可以是灰度图象也可以是彩色图像。
接下来再读取当前帧时,更新高斯模型 regioncount=icvUpdateGaussianBGModel(currframe, bg_model );regioncount的含义我不确定,我理解是代表背景中不同颜色区域的个数,这个参数我没有用到,它只是icvUpdateGaussianBGModel函数的返回值。
3。
现在bg_model已经保存了经过高斯混合模型分类后的结果,bg_model->background保存了背景图像,bg_model->foreground保存了前景图像。
include #include #include #include #include //必须引此头文件 int main( int argc, char** argv ) { IplImage* pFrame = NULL; IplImage* pFrImg = NULL; IplImage* pBkImg = NULL; CvCapture* pCapture = NULL; int nFrmNum = 0; cvNamedWindow("video", 1); cvNamedWindow("background",1); cvNamedWindow("foreground",1); cvMoveWindow("video", 30, 0); cvMoveWindow("background", 360, 0); cvMoveWindow("foreground", 690, 0); if( argc > 2 ) { fprintf(stderr, "Usage: bkgrd [video_file_name]
"); return -1; } //打开视频文件 if(argc == 2) if( !(pCapture = cvCaptureFromFile(argv[1]))) { fprintf(stderr, "Can not open video file %s
", argv[1]); return -2; } //打开摄像头 if (argc == 1) if( !(pCapture = cvCaptureFromCAM(-1))) { fprintf(stderr, "Can not open camera.
"); return -2; } //初始化高斯混合模型参数 CvGaussBGModel* bg_model=NULL; while(pFrame = cvQueryFrame( pCapture )) { nFrmNum++; if(nFrmNum == 1) { pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,3); pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1); //高斯背景建模,pFrame可以是多通道图像也可以是单通道图像 //cvCreateGaussianBGModel函数返回值为CvBGStatModel*, //需要强制转换成CvGaussBGModel* bg_model = (CvGaussBGModel*)cvCreateGaussianBGModel(pFrame, 0); } else { //更新高斯模型 cvUpdateBGStatModel(pFrame, (CvBGStatModel *)bg_model ); //pFrImg为前景图像,只能为单通道 //pBkImg为背景图像,可以为单通道或与pFrame通道数相同 cvCopy(bg_model->foreground,pFrImg,0); cvCopy(bg_model->background,pBkImg,0); //把图像正过来 pBkImg->origin=1; pFrImg->origin=1; cvShowImage("video", pFrame); cvShowImage("background", pBkImg); cvShowImage("foreground", pFrImg); if( cvWaitKey(2) >= 0 ) break; } } //释放高斯模型参数占用内存 cvReleaseBGStatModel((CvBGStatModel**)&bg_model); cvDestroyWindow("video"); cvDestroyWindow("background"); cvDestroyWindow("foreground"); cvReleaseImage(&pFrImg); cvReleaseImage(&pBkImg); cvReleaseCapture(&pCapture); return 0; }
DMIT,最近动作频繁,前几天刚刚上架了日本lite版VPS,正在酝酿上线日本高级网络VPS,又差不多在同一时间推出了美国cn2 gia线路不限流量的美国云服务器,不过价格太过昂贵。丐版只有30M带宽,月付179.99 美元 !!目前美国云服务器已经有个4个套餐,分别是,Premium(cn2 gia线路)、Lite(普通直连)、Premium Secure(带高防的cn2 gia线路),Prem...
sharktech怎么样?sharktech鲨鱼机房(Sharktech)我们也叫它SK机房,是一家成立于2003年的老牌国外主机商,提供的产品包括独立服务器租用、VPS主机等,自营机房在美国洛杉矶、丹佛、芝加哥和荷兰阿姆斯特丹等,主打高防产品,独立服务器免费提供60Gbps/48Mpps攻击防御。机房提供1-10Gbps带宽不限流量服务器,最低丹佛/荷兰机房每月49美元起,洛杉矶机房最低59美元...
BuyVM 商家算是有一些年头,从早年提供低价便宜VPS主机深受广大网友抢购且也遭到吐槽的是因为审核账户太过于严格。毕竟我们国内的个人注册账户喜欢账户资料乱写,毕竟我们看英文信息有些还是比较难以识别的,于是就注册信息的时候随便打一些字符,这些是不能通过的。前几天,我们可以看到BUYVM商家有新增加迈阿密机房,而且商家有提供大硬盘且不限制流量的VPS主机,深受有一些网友的喜欢。目前,BUYVM商家有...
光流法为你推荐
range3S压力开关上RANGE和 DIFF是什么意思?文件下载怎么把电脑上的文件下载到U盘里?ordinal频率是nominal还是ordinal按键精灵教程学按键精灵需要学些什么基础知识容灾备份容灾备份的容灾备份建设模式swift语言苹果为什么要推出swift语言javaHDvideojava手机视频转换器文件损坏安装软件显示文件已损坏怎么回事什么是cookie电脑里的cookies是什么意思,什么中文意思?支付宝账单查询支付宝每个月的账单怎么查看
国外免费域名网站 512m内存 京东商城0元抢购 免费个人空间 域名接入 卡巴斯基免费试用版 新睿云 腾讯总部在哪 免费外链相册 上海电信测速网站 英国伦敦 qq金券 深圳域名 可外链的相册 域名和主机 学生机 免 塔式服务器 forwarder asp介绍 更多