日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

光流法简介

發(fā)布時(shí)間:2024/9/5 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 光流法简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)自:http://blog.163.com/prevBlogPerma.do?host=quanhuatang&srl=222682420080137347226&mode=prev

光流法是比較經(jīng)典的運(yùn)動(dòng)估計(jì)方法,本文不僅敘述簡(jiǎn)單明了,而且附代碼,故收藏.

在空間中,運(yùn)動(dòng)可以用運(yùn)動(dòng)場(chǎng)描述。而在一個(gè)圖像平面上,物體的運(yùn)動(dòng)往往是通過(guò)圖像序列中不同圖象灰度分布的不同體現(xiàn)的。從而,空間中的運(yùn)動(dòng)場(chǎng)轉(zhuǎn)移到圖像上就表示為光流場(chǎng),光流場(chǎng)反映了圖像上每一點(diǎn)灰度的變化趨勢(shì)。

光流可以看作帶有灰度的像素點(diǎn)在圖像平面運(yùn)動(dòng)產(chǎn)生的瞬時(shí)速度場(chǎng)。下面我們推導(dǎo)光流方程:

假設(shè)E(x,y,t)為(x,y)點(diǎn)在時(shí)刻t的灰度(照度)。設(shè)t+dt時(shí)刻該點(diǎn)運(yùn)動(dòng)到(x+dx,y+dy)點(diǎn),他的照度為E(x+dx,y+dy,t+dt)。我們認(rèn)為,由于對(duì)應(yīng)同一個(gè)點(diǎn),所以

E(x,y,t) = E(x+dx,y+dy,t+dt) —— 光流約束方程

將上式右邊做泰勒展開(kāi),并令dt->0,則得到:Exu+Eyv+Et= 0,其中:

Ex = dE/dx Ey = dE/dy Et = dE/dt u = dx/dt v = dy/dt

上面的Ex,Ey,Et的計(jì)算都很簡(jiǎn)單,用離散的差分代替導(dǎo)數(shù)就可以了。光流法的主要任務(wù)就是通過(guò)求解光流約束方程求出u,v。但是由于只有一個(gè)方程,所以這是個(gè)病態(tài)問(wèn)題。所以人們提出了各種其他的約束方程以聯(lián)立求解。但是由于我們用于攝像機(jī)固定的這一特定情況,所以問(wèn)題可以大大簡(jiǎn)化。

攝像機(jī)固定的情形

在攝像機(jī)固定的情形下,運(yùn)動(dòng)物體的檢測(cè)其實(shí)就是分離前景和背景的問(wèn)題。我們知道對(duì)于背景,理想情況下,其光流應(yīng)當(dāng)為0,只有前景才有光流。所以我們并不要求通過(guò)求解光流約束方程求出u,v。我么只要求出亮度梯度方向的速率就可以了,即求出sqrt(u*u+v*v)。

而由光流約束方程可以很容易求到梯度方向的光流速率為 V = abs(Et/sqrt(Ex*Ex+Ey*Ey))。這樣我們?cè)O(shè)定一個(gè)閾值T。

V(x,y) > T 則(x,y)是前景 ,反之是背景

C++實(shí)現(xiàn)

在實(shí)現(xiàn)攝像機(jī)固定情況的光流法時(shí),需要有兩幀連續(xù)的圖像,下面的算法針對(duì)RGB24格式的圖像計(jì)算光流:

void calculate(unsigned char* buf)
{
int Ex,Ey,Et;
int gray1,gray2;
int u;
int i,j;
memset(opticalflow,0,width*height*sizeof(int));
memset(output,255,size);
for(i=2;i<height-2;i++){
for(j=2;j<width-2;j++){
gray1 = int(((int)(buf[(i*width+j)*3])
+(int)(buf[(i*width+j)*3+1])
+(int)(buf[(i*width+j)*3+2]))*1.0/3);
gray2 = int(((int)(prevframe[(i*width+j)*3])
+(int)(prevframe[(i*width+j)*3+1])
+(int)(prevframe[(i*width+j)*3+2]))*1.0/3);
Et = gray1 - gray2;
gray2 = int(((int)(buf[(i*width+j+1)*3])
+(int)(buf[(i*width+j+1)*3+1])
+(int)(buf[(i*width+j+1)*3+2]))*1.0/3);
Ex = gray2 - gray1;
gray2 = int(((int)(buf[((i+1)*width+j)*3])
+(int)(buf[((i+1)*width+j)*3+1])
+(int)(buf[((i+1)*width+j)*3+2]))*1.0/3);
Ey = gray2 - gray1;
Ex = ((int)(Ex/10))*10;
Ey = ((int)(Ey/10))*10;
Et = ((int)(Et/10))*10;
u = (int)((Et*10.0)/(sqrt((Ex*Ex+Ey*Ey)*1.0))+0.1);
opticalflow[i*width+j] = u;
if(abs(u)>10){
output[(i*width+j)*3] = 0;
output[(i*width+j)*3+1] = 0;
output[(i*width+j)*3+2] = 0;
}
}
}
memcpy(prevframe,buf,size);
}

//////////////////////////////////////////////////////////////////////////

/另一個(gè)代碼

/

/////////////////////////////////////////////////////////////////////////////

WW_RETURN HumanMotion::ImgOpticalFlow(IplImage *pre_grey,IplImage *grey)
/*************************************************
Function:
Description: 光流法計(jì)算運(yùn)動(dòng)速度與方向
Date:2006-6-14
Author:
Input:
Output:
Return:
Others:
*************************************************/
{

IplImage *velx = cvCreateImage( cvSize(grey->width ,grey->height),IPL_DEPTH_32F, 1 );
IplImage *vely = cvCreateImage( cvSize(grey->width ,grey->height),IPL_DEPTH_32F, 1 );

velx->origin = vely->origin = grey->origin;
CvSize winSize = cvSize(5,5);
cvCalcOpticalFlowLK( prev_grey, grey, winSize, velx, vely );

cvAbsDiff( grey,prev_grey, abs_img );
cvThreshold( abs_img, abs_img, 29, 255, CV_THRESH_BINARY);

CvScalar xc,yc;
for(int y =0 ;y<velx->height; y++)
for(int x =0;x<velx->width;x++ )
{
xc = cvGetAt(velx,y,x);
yc = cvGetAt(vely,y,x);


float x_shift= (float)xc.val[0];
float y_shift= (float)yc.val[0];
const int winsize=5; //計(jì)算光流的窗口大小


if((x%(winsize*2)==0) && (y%(winsize*2)==0) )
{

if(x_shift!=0 || y_shift!=0)
{

if(x>winsize && y>winsize && x <(velx->width-winsize) && y<(velx->height-winsize) )
{

cvSetImageROI( velx, cvRect( x-winsize, y-winsize, 2*winsize, 2*winsize));
CvScalar total_x = cvSum(velx);
float xx = (float)total_x.val[0];
cvResetImageROI(velx);

cvSetImageROI( vely, cvRect( x-winsize, y-winsize, 2*winsize, 2*winsize));
CvScalar total_y = cvSum(vely);
float yy = (float)total_y.val[0];
cvResetImageROI(vely);

cvSetImageROI( abs_img, cvRect( x-winsize, y-winsize, 2*winsize, 2*winsize));
CvScalar total_speed = cvSum(abs_img);
float ss = (float)total_speed.val[0]/(4*winsize*winsize)/255;
cvResetImageROI(abs_img);

const double ZERO = 0.000001;
const double pi = 3.1415926;
double alpha_angle;

if(xx<ZERO && xx>-ZERO)
alpha_angle = pi/2;
else
alpha_angle = abs(atan(yy/xx));

if(xx<0 && yy>0) alpha_angle = pi - alpha_angle ;
if(xx<0 && yy<0) alpha_angle = pi + alpha_angle ;
if(xx>0 && yy<0) alpha_angle = 2*pi - alpha_angle ;



CvScalar line_color;
float scale_factor = ss*100;
line_color = CV_RGB(255,0,0);
CvPoint pt1,pt2;
pt1.x = x;
pt1.y = y;
pt2.x = static_cast<int>(x + scale_factor*cos(alpha_angle));
pt2.y = static_cast<int>(y + scale_factor*sin(alpha_angle));

cvLine( image, pt1, pt2 , line_color, 1, CV_AA, 0 );
CvPoint p;
p.x = (int) (pt2.x + 6 * cos(alpha_angle - pi / 4*3));
p.y = (int) (pt2.y + 6 * sin(alpha_angle - pi / 4*3));
cvLine( image, p, pt2, line_color, 1, CV_AA, 0 );
p.x = (int) (pt2.x + 6 * cos(alpha_angle + pi / 4*3));
p.y = (int) (pt2.y + 6 * sin(alpha_angle + pi / 4*3));
cvLine( image, p, pt2, line_color, 1, CV_AA, 0 );

/*
line_color = CV_RGB(255,255,0);
pt1.x = x-winsize;
pt1.y = y-winsize;
pt2.x = x+winsize;
pt2.y = y+winsize;
cvRectangle(image, pt1,pt2,line_color,1,CV_AA,0);
*/

}
}
}
}


cvShowImage( "Contour", abs_img);
cvShowImage( "Contour2", vely);

cvReleaseImage(&velx);
cvReleaseImage(&vely);
cvWaitKey(20);

return WW_OK;

}

總結(jié)

以上是生活随笔為你收集整理的光流法简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美整片sss | 成人福利在线观看 | 视频在线观看一区二区三区 | 秋霞影院午夜丰满少妇在线视频 | 四虎影院成人 | 久久久午夜视频 | 韩国一级一片高清免费观看 | 国产综合在线播放 | 番号动态图| 手机看片1024久久 | 日少妇视频 | 日本人视频69式jzzij | 污视频免费在线观看网站 | 国产激情av一区二区三区 | 亚洲精品国产成人无码 | 人人看人人爱 | 亚洲综合图区 | 久久激情久久 | 亚洲网色 | 极品少妇一区二区三区 | 亚洲AV成人精品 | 少妇丰满尤物大尺度写真 | 免费美女av | 色黄视频 | 国产精品久久久 | 国产福利精品在线 | 亚洲石原莉奈一区二区在线观看 | 又爽又黄视频 | 奇米狠狠去啦 | 欧美全黄| 久久久久久久久久久久久久 | 女子spa高潮呻吟抽搐 | 美国福利片 | 污污小说在线观看 | 依依成人在线 | 精品人妻一区二区免费 | 老子影院午夜伦不卡大全 | 永久看看免费大片 | 极品少妇av| 亚洲福利影视 | 国产剧情av麻豆香蕉精品 | 日韩精品毛片 | 黄色视屏免费 | 日本精品一区二区在线观看 | 中文字幕一区二区三 | 毛片亚洲av无码精品国产午夜 | 九九热在线视频观看 | 日本精品一区二区三区在线观看 | 亚洲奶水xxxx哺乳期 | 综合久久av | 成人毛片视频免费看 | 免费看60分钟黄视频 | 99久久国产宗和精品1上映 | 久久夜色精品国产欧美乱 | 国产清纯白嫩初高中在线观看性色 | 亚洲激情短视频 | 北条麻妃av在线 | wwwwxxxxx日本 | 国产精品jizz在线观看美国 | 葵司有码中文字幕二三区 | 亚洲成人黄色影院 | 免费在线观看黄色 | 800av在线播放| 欧美一级特黄aa大片 | 国产丝袜久久 | 国产午夜精品久久久久久久久久 | 日韩精品毛片 | 69sex久久精品国产麻豆 | 粗大的内捧猛烈进出 | 久久尹人 | 国产精品99久久久久久www | 久久午夜无码鲁丝片 | 男女黄色网 | 中文字幕在线观看视频网站 | 欧美黄色大片网站 | 成人a站| 蜜臀免费av| 黑森林av导航| 婷婷综合网 | 亚洲 自拍 另类 欧美 丝袜 | 欧美美女黄色 | 无码精品人妻一区二区三区湄公河 | 国产黄色一级网站 | 黄色在线视频播放 | 亚洲最大av网 | 人成免费| 看免费一级片 | 亚洲国产精品麻豆 | 伊人激情网 | 手机免费av | 日韩中文字幕综合 | 国产精品一级黄色片 | 国产精品主播在线 | 中文字幕av网站 | 给我免费观看片在线电影的 | 好吊一区 | 欧美又粗又长又爽做受 | 日本极品丰满ⅹxxxhd | 欧美日韩毛片 |