国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于視頻圖像的乒乓球落點(diǎn)檢測(cè)研究

2014-12-31 01:25:21劉帥張寬慕善文
電腦知識(shí)與技術(shù) 2014年35期
關(guān)鍵詞:球臺(tái)落點(diǎn)乒乓球

劉帥 張寬 慕善文

摘要:該文運(yùn)用圖像檢測(cè)與跟蹤技術(shù)實(shí)現(xiàn)了計(jì)算機(jī)代替人工采集乒乓球的落點(diǎn),通過對(duì)乒乓球比賽視頻的分析,得到乒乓球的落點(diǎn),準(zhǔn)確度較高,可以為乒乓球戰(zhàn)術(shù)的后續(xù)工作提供有力支持。該文就將本次實(shí)驗(yàn)中所用到的相關(guān)技術(shù)作以說明。

關(guān)鍵詞:圖像檢測(cè);落點(diǎn)

中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)35-8523-04

Resereach of the Table Tennis Ball Placement Detection Based on Video Image

LIU Shuai, ZHANG Kuan, MU Shan-wen

(North China University of Technology, Beijing 100144, China)

Abstract:The paper uses the technology of detection and tracking of image to beinstance of the computer instead of manual collecting the placement of table tennis.through the analysis on the table tennis video of game, we can get theplacement of table tennis ball with higher accuracy, which can provide the powerful support for the follow-up work table tennis tactics. This paper will demonstrate the related technologies used in this study.

Key words: detection of image; placement of table tennis

在現(xiàn)代體育競技中,教練員與運(yùn)動(dòng)員在比賽前對(duì)對(duì)手的技戰(zhàn)術(shù)情況分析的需求越來越大,因此,人們需要掌握更詳細(xì)的技戰(zhàn)術(shù)數(shù)據(jù),靠人工是不能滿足需求的,所以開發(fā)了這種領(lǐng)域——體育計(jì)算。

具體到乒乓球上主要研究的是識(shí)別球的運(yùn)動(dòng)方向和軌跡,能統(tǒng)計(jì)其落點(diǎn)的位置和概率。在比賽中每得一分幾乎就是幾秒鐘的事,如果想人工記錄雙方運(yùn)動(dòng)員的每一個(gè)戰(zhàn)術(shù)細(xì)節(jié),人工的記錄速度不可能趕上比賽的節(jié)奏。如果對(duì)不同的球員進(jìn)行統(tǒng)計(jì),光統(tǒng)計(jì)發(fā)球、接發(fā)球和得分三個(gè)要點(diǎn)的情況下,每個(gè)球中運(yùn)動(dòng)員可能采用的動(dòng)作組合數(shù)千變?nèi)f化,記錄員是不可能在幾秒種之內(nèi)完成統(tǒng)計(jì),而且非常容易疲勞,但計(jì)算機(jī)技術(shù)是可以代替人輕松完成這個(gè)任務(wù)。

本次實(shí)驗(yàn)的目的就利用計(jì)算機(jī)計(jì)算乒乓球的落點(diǎn),從而解決傳統(tǒng)人工采集工作的難度很大、難以保證記錄的準(zhǔn)確性的問題。

1 開發(fā)環(huán)境

本系統(tǒng)開發(fā)硬件為dell inspiron5520,采用Intel Core i5-3210M處理器。操作系統(tǒng)為windows7-64bit。軟件開發(fā)平臺(tái)為Visual Studio 2010, Microsoft所提供的集成開發(fā)環(huán)境。所用語言為C++。

2 關(guān)鍵技術(shù)分析

2.1圖像預(yù)處理

在這次實(shí)驗(yàn)中,我們運(yùn)用了30幀/秒的錄像,一幀圖片的大小為1256*1000,攝像地點(diǎn)為學(xué)校體育館,室內(nèi)光線環(huán)境為普通光線條件。

圖1為取自于源視頻的一張截圖,顯然這樣的圖像不足以進(jìn)行檢測(cè),尤其是在球臺(tái)檢測(cè)過程中,需要運(yùn)用Retinex聯(lián)合增強(qiáng)。

下面就來說明下Retinex聯(lián)合增強(qiáng)的實(shí)現(xiàn)方法:

給定一張視頻截圖,確定路徑數(shù)目,計(jì)算路徑上連續(xù)相鄰點(diǎn)的比值:

1) 如果其與1相差的比值不超過一個(gè)固定的數(shù)值,認(rèn)為該比率單一;

2) 如果超過了這個(gè)數(shù)值,累計(jì)亮度加1,然后從這個(gè)點(diǎn)重新開始計(jì)算。

公式:

[L(i)=hlijkN] (1)

[lijk=x∈pathσlogIx+1Ix] (2)

[σ=1,if(logIx+1Ix>threshold)0,otherwise] (3)

其中,I為每條路徑的結(jié)束值,[jk]為初始值,L是圖像亮度值。

可以看出增強(qiáng)后的圖像相比源圖像更加自然,貼近實(shí)際。

2.2檢測(cè)乒乓球臺(tái)

我們知道乒乓球臺(tái)是一個(gè)四邊形,通過Hough變換可以計(jì)算出直線的長度,從而取得球臺(tái)的長和寬,然后找出在兩線上的兩端的角點(diǎn),可以將其視作乒乓球臺(tái)的四角點(diǎn)坐標(biāo)。

2.3檢測(cè)球

球的檢測(cè)將分5步:

1) 若只是對(duì)圖像進(jìn)行色度閾值劃分,但圖像中與球顏色相似的區(qū)域不能消除,所以必須差分。顧名思義,就是用兩幀圖片差分,此類幀間差算法大致分為三部分:①選擇,產(chǎn)生一個(gè)參考或者背景圖像。②做幀間差運(yùn)算操作。③選擇一個(gè)合適的閾值。還有一種算法是基于背景圖像的與當(dāng)前幀的算法。背景差分檢測(cè)方法適用于檢測(cè)速度比較快的物體檢測(cè),而且該算法非常精準(zhǔn),在實(shí)現(xiàn)上也比較容易完成,背景顏色的確定是這種方法的要點(diǎn)所在。因?yàn)楹芏啾尘笆沁\(yùn)動(dòng)的,所以直接提取靜態(tài)背景有一定難度。這個(gè)時(shí)候就需要將背景進(jìn)行一下重新構(gòu)建,方法就是將視頻系列的數(shù)據(jù)幀與數(shù)據(jù)幀之間的相關(guān)信息進(jìn)行計(jì)算同時(shí)恢復(fù)必要的數(shù)據(jù),選擇背景的時(shí)候,通常選擇時(shí)常更新的。

[Idiff(x,y)=I(x,y)-Ibackground(x,y)] (4)

[Idiff(x,y)]為差分圖像,[Ibackground(x,y)]為背景圖像;

2) 圖像平滑去除高斯白噪聲。

在影像的拍攝過程中,必然會(huì)有高斯白噪聲的影響,采用平滑處理的方法可以消除。

[I(x,y)=19(I8-area(x,y)+I(x,y))](5) [I8-area(x,y)]為八鄰域內(nèi)的八個(gè)像素點(diǎn)的灰度。

3) 取2)中的質(zhì)心。

[Xcenter=i=1nxI(x,y)],[Ycenter=i=1nyI(x,y)] (6)

此處[I(x,y)]為歸一化后的灰度,[Xcenter],[Ycenter]分別為球在x,y方向上的質(zhì)心。

4) 落點(diǎn)

在本文中主要采用球模板來進(jìn)行乒乓球的具體追蹤,模板就是一幅已知的小圖像,模板匹配就是在一幅大圖像中找到目標(biāo),球形,顏色模板相結(jié)合這樣就可以確定一個(gè)球的具體位置。經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn),一回合球大約有9幀-14幀左右,所以每一次觸臺(tái)前約有6-8幀,將這6-8幀擬合成一條拋物線,最后通過拋物線方程尋求其交點(diǎn),將其視為球的落點(diǎn)。

模板匹配的工作基本方法:首先確定一個(gè)球形模板T,然后查找,具體過程如下:

(1) 讀取球形模板P,將被搜索圖Q分為H*W個(gè)像素,將球形模板放在被搜索圖上,被覆蓋的區(qū)域叫臨時(shí)圖像;

(2) 將P和臨時(shí)圖像對(duì)比,對(duì)比結(jié)果記為c;

(3) 對(duì)比結(jié)果c,就是結(jié)果圖像的像素值;

(4) 將T向前移位一個(gè)像素,對(duì)比,并記錄到結(jié)果圖像;

(5) 重復(fù)1-4步直到對(duì)比完整個(gè)被搜索圖。

將得到的點(diǎn)擬合成拋物線,通過兩條拋物線求出球交點(diǎn),即為落點(diǎn)。

5)球跡跟蹤

在本文中主要采用以Kalman濾波算子為主,粒子濾波為輔助的方式來對(duì)乒乓球的飛行軌跡來跟蹤球體。

因?yàn)槠古仪蚴腔睾媳荣?。所以,每?dāng)換人接球的時(shí)候球會(huì)改變方向,Kalman濾波器就必須改變狀態(tài)好重新跟蹤球的運(yùn)動(dòng)方向。如果方向改變則上一時(shí)刻的測(cè)量值位于當(dāng)前時(shí)刻的預(yù)測(cè)值和測(cè)量值之間。所以,從本幀圖片之后,為下一板球的開始。在當(dāng)前幀重新設(shè)置Kalman濾波器的初始狀態(tài)值,進(jìn)行下一次的跟蹤。

當(dāng)Kalman濾波器求出乒乓球在圖像中的估計(jì)位置之后,再用三步法就可以求出乒乓球在臺(tái)子上的具體位置。三步法可以描述如下:

第一步:選擇初始步長。在當(dāng)前幀圖像中圍繞當(dāng)前幀圖像中心點(diǎn)均勻分布 8 個(gè)圖像子塊,并分別進(jìn)行匹配比較。

第二步:將步長減為原來的一半。圖像的中心移到第一步中比較結(jié)果最小誤差點(diǎn)處。

第三步:重復(fù)第一步和第二步,直到步長小于或等于1個(gè)像素。

2.4 落點(diǎn)在乒乓球臺(tái)上的映射

在獲得落點(diǎn)后,需要把落點(diǎn)位置具體放到球臺(tái)的相應(yīng)位置。我們運(yùn)用仿射變換的方法實(shí)現(xiàn)。具體實(shí)現(xiàn)方法是:保持圖形的平直行和平行性。通過實(shí)驗(yàn)得知該變換后會(huì)有改變的部分和不變的部分。改變的部分是指,通過仿射變換,部分變換線的長度會(huì)發(fā)生改變;不變的是平行線還是平行線,點(diǎn)的順序也不變。以下是仿射變換的介紹。

圖2.41是代數(shù)的仿射變換,設(shè)仿射變換的坐標(biāo)為{[o];e,e},對(duì)[p]進(jìn)行仿射變換,得到其仿射坐標(biāo)[Pct] ,相應(yīng)的,可以找到其仿射后的坐標(biāo),如圖5所示。

當(dāng)求得相應(yīng)落點(diǎn)時(shí),就可以將落點(diǎn)位置映射到球臺(tái)的對(duì)應(yīng)位置了。

我們將球臺(tái)劃分區(qū)域:

球臺(tái)每一端被分作9個(gè)區(qū)域,其中:

1、2、3、4、5和6是臺(tái)內(nèi)區(qū)域。

7、8和9為出界區(qū)域。

在本文中采用的映射方案如下:

仿射變換表達(dá)式:

[1shx0shy10001]=[100shy100011shx0010001] (10)

式中:shx和shy為在y軸和x軸上的壓縮。

3 落點(diǎn)檢測(cè)算法設(shè)計(jì)

3.1總體流程

準(zhǔn)備工作將其截取成一幀一幀的圖片,并對(duì)圖像進(jìn)行預(yù)處理。然后開始檢測(cè)。首先,尋找乒乓球球臺(tái)角點(diǎn)坐標(biāo),如果存在,則將乒乓球臺(tái)的坐標(biāo)存儲(chǔ)并使用,否則重新尋找。其次,對(duì)于第一幀,需要使用全局圖片來判斷乒乓球的具體位置,以后的位置判斷都建立在Kalman濾波的判斷位置附近區(qū)域,然后根據(jù)乒乓球的運(yùn)動(dòng)軌跡計(jì)算在球臺(tái)上的落點(diǎn)。最后是根據(jù)前面提取的乒乓球球臺(tái)的角點(diǎn)坐標(biāo)將乒乓球的落點(diǎn)映射到具體的區(qū)域,通過以上步驟可以檢測(cè)乒乓球落點(diǎn)。

3.2主要檢測(cè)算法

1) 模板匹配算法

if((!bFindBall)&&(FrameNum==2))//抓取模板圖片

if(FindBallContour(binImg,moothGrayImg,storage,contour,rectContour,ob))

//尋找球板的邊境

{kalman→state_post→data.fl[0]=ob.rect.x;

kalman→state_post→data.fl[1]=ob.rect.y;

kalman→state_post→data.fl[2]=40;

kalman→state_post→data.fl[3]=7;

bFindBall=1;

//設(shè)定Kalman濾波器的初值

pTemple=cvCreateImage(cvSize(ob.rect.width,ob.rect.height),moothGrayImg→depth,moothGrayImg→nChannels);

cvZero(pTemple);

GetTempleImage(moothGrayImg,pTemple,ob.rect);

listOneDirectionObject.push_back(ob);//將找到的物體加入曲線list

cvCopy(frame1_retinex,frame2);

continue;}

else

{cvCopy(frame1_retinex,frame2);

continue;}

2) 球跡跟蹤過程

if(MatchBall(moothGrayImg,pTemple,radius,ob,rectMatch))

{if(((rectMatch.xob.rect.x)&&(ob.rect.x>*(prediction→data.fl)))) //X方向上

{//更改初始狀態(tài)

kalman→state_post→data.fl[0]=rectMatch.x;

kalman→state_post→data.fl[1]=rectMatch.y;

kalman→state_post→data.fl[2]=-kalman→state_post→data.fl[2];}

if(((rectMatch.yob.rect.y)&&(ob.rect.y>*(prediction→data.fl+1)))) //Y方向

{//更改初始狀態(tài)

kalman→state_post→data.fl[0]=rectMatch.x; kalman→state_post→data.fl[1]=rectMatch.y; kalman→state_post→data.fl[3]=-kalman→state_post→data.fl[3];} cvRectangle(frame1,cvPoint(rectMatch.x,rectMatch.y),cvPoint(rectMatch.x+rectMatch.width,rectMatch.y+rectMatch.height),cvScalar(0,0,255));

CvMat *z_k=cvCreateMat(2,1,CV_32FC1); //半徑更換

float measure[]={rectMatch.x,rectMatch.y};

memcpy(z_k→data.fl,measure,sizeof(measure));

cvKalmanCorrect(kalman,z_k);

MovingObjectobNew; //給相關(guān)點(diǎn)設(shè)置飛行方向

…}

3) 映射過程

ConvertImageToTable(IplImage*pSrc,CvPoint2D32fm_ptTableCorner[],CvPoint &ptBoundPointInPic,int n){ if(n!=4)return 0;

CvPoint2D32f m_ptBoundPoint;

CvPoint2D32f src[4];

CvPoint2D32f dst[4]; //目標(biāo)圖像中的點(diǎn)

CvPoint2D32f ptBoundPoint;

charresBuf[10]={'\0'};

memcpy(src,m_ptTableCorner,sizeof(CvPoint2D32f)*4);

dst[0].x = 0;

dst[0].y = 0;

dst[1].x = 0;

dst[1].y = 300;

dst[2].x = 400;

dst[2].y = 0;

dst[3].x = 400;

dst[3].y = 300;

CvMat *warp_matrix=cvCreateMat(3,3,CV_32FC1);

CvMat *des_point=cvCreateMat(3,1,CV_32FC1);

CvMat *res=cvCreateMat(3,1,CV_32FC1);

float des[3]={(float)ptBoundPointInPic.x,(float)ptBoundPointInPic.y,1.0};

memcpy(des_point→data.fl,des,sizeof(float)*3);

cvGetPerspectiveTransform(src,dst,warp_matrix);//計(jì)算透視變換矩陣

cvMatMul(warp_matrix,des_point,res);//矩陣變換

ptBoundPoint.x=res→data.fl[0]/res→data.fl[2];

ptBoundPoint.y=res→data.fl[1]/res→data.fl[2];

X:"<

//選擇映射在哪個(gè)球臺(tái)區(qū)域

if((ptBoundPoint.x<=100.0)&&(ptBoundPoint.y<=100.0)){resBuf[0]='L',resBuf[1]='1';}

else if((ptBoundPoint.x<=100.0)&&(ptBoundPoint.y>100.0)&&(ptBoundPoint.y<=200)){resBuf[0]='L',resBuf[1]='2';}

else if((ptBoundPoint.x<=100.0)&&(ptBoundPoint.y>200.0)&&(ptBoundPoint.y<=300)){resBuf[0]='L',resBuf[1]='3';}

else if((ptBoundPoint.x>100.0)&&(ptBoundPoint.x<=200)&&(ptBoundPoint.y>200.0)&&(ptBoundPoint.y<=300)){resBuf[0]='L',resBuf[1]='4';}

else if((ptBoundPoint.x>100.0)&&(ptBoundPoint.x<=200)&&(ptBoundPoint.y>100.0)&&(ptBoundPoint.y<=200)){resBuf[0]='L',resBuf[1]='5';}

else if((ptBoundPoint.x>100.0)&&(ptBoundPoint.x<=200)&&(ptBoundPoint.y<=100.0)){resBuf[0]='L',resBuf[1]='6';}

else if((ptBoundPoint.x>300.0)&&(ptBoundPoint.x<=400)&&(ptBoundPoint.y>200.0)&&(ptBoundPoint.y<=300)){resBuf[0]='R',resBuf[1]='1';}

else if((ptBoundPoint.x>300.0)&&(ptBoundPoint.x<=400)&&(ptBoundPoint.y>100.0)&&(ptBoundPoint.y<=200)){resBuf[0]='R',resBuf[1]='2';}

else if((ptBoundPoint.x>300.0)&&(ptBoundPoint.x<=400)&&(ptBoundPoint.y<=100)){resBuf[0]='R',resBuf[1]='3';}

else if((ptBoundPoint.x>200.0)&&(ptBoundPoint.x<=300)&&(ptBoundPoint.y<=100)){resBuf[0]='R',resBuf[1]='4';}

else if((ptBoundPoint.x>200.0)&&(ptBoundPoint.x<=300)&&(ptBoundPoint.y>100.0)&&(ptBoundPoint.y<=200)){resBuf[0]='R',resBuf[1]='5';}

else if((ptBoundPoint.x>200.0)&&(ptBoundPoint.x<=300)&&(ptBoundPoint.y>200.0)&&(ptBoundPoint.y<=300)){resBuf[0]='R',resBuf[1]='6';}

4 總結(jié)

本文利用圖像檢測(cè)技術(shù)測(cè)量乒乓球的位置,并提取落點(diǎn)??梢酝ㄟ^一段乒乓球比賽的視頻提取乒乓球落點(diǎn),準(zhǔn)確度較高,有助于后續(xù)技戰(zhàn)術(shù)的處理。有兩點(diǎn)不足需要改正:第一,背景的適應(yīng)性差,不能在背景較為明亮的環(huán)境中進(jìn)行;第二,視頻的播放速度遠(yuǎn)低于正常的比賽速度,算法還需要優(yōu)化。

參考文獻(xiàn):

[1] 楊宜和,周維真.成像跟蹤技術(shù)導(dǎo)論[M].西安:西安電子科技大學(xué)出版社,1991:20-25.

[2] 劉學(xué)東,賈玉林,孫昊.相關(guān)算法中跟蹤穩(wěn)定性問題的研究[J].紅外與激光工程,1998,27(1):9-13.

[3] 王鄭耀,程正興,湯少杰.基于視覺特征的尺度空間信息量度量[J].中國圖象圖形學(xué)報(bào),2005,10(7):922-928.

[4] 詹勁峰.非制冷紅外熱成像系統(tǒng)圖像處理與顯示[D]南京理工大學(xué),1998:27-31.

[5] 崔巖梅.一種基于小波變換的多尺度多算子圖像融合方法[J].光學(xué)技術(shù),1999,4:37-39.

[6] 王潤生. 圖像理解[M].國防科技大學(xué)出版社,1995:54-58.

[7] 崔國華.計(jì)算方法[M].華中理工大學(xué)出版社,1996:67-76.

[8] 李國宏,施鵬飛.基于次特征值誤差補(bǔ)償和非對(duì)稱分布的馬氏距離改進(jìn)算法[J].電子學(xué)報(bào),2007,35(4):747-750.

[9] 王世平.基于DSP 的運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤[D].西安:西安理工大學(xué),2007:8-9.

[10] 周猛,李剛.一種具有抗噪聲干擾的圖像輪廓跟蹤算法的研究[J].計(jì)算機(jī)研究技術(shù)與發(fā)展,2006,16(9):21-23.

[11] 張江山,朱光喜.一種基于Kalman 濾波的視頻對(duì)象跟蹤方法[J].中國圖象圖形學(xué)報(bào),2002,7(6):606-609.

[12] 田 捷.實(shí)用圖像分析與處理技術(shù)[M]北京:電子工業(yè)出版社,1995:30-40.

[13] 崔風(fēng)魁,王曉強(qiáng),張豐收.二值圖象細(xì)化算法的比較與改進(jìn)[J].洛陽工學(xué)院學(xué)報(bào).1997,18(4):48-52

[14] 靳星.圖像檢測(cè)技術(shù)在乒乓球技戰(zhàn)術(shù)自動(dòng)采集系統(tǒng)中的應(yīng)用與研究[D].北京:北方工業(yè)大學(xué),2012.

猜你喜歡
球臺(tái)落點(diǎn)乒乓球
鋼管混凝土風(fēng)電塔架球式節(jié)點(diǎn)的力學(xué)性能分析
兩種新型鋼管混凝土格構(gòu)式風(fēng)電塔架節(jié)點(diǎn)損傷機(jī)理對(duì)比分析
乒乓球懸浮術(shù)
基于空間分層組合設(shè)計(jì)的火箭落點(diǎn)實(shí)時(shí)計(jì)算模型
跳舞的乒乓球
幼兒畫刊(2020年4期)2020-05-16 02:53:26
乒乓球癟了怎么辦
靠攏的乒乓球
幼兒畫刊(2018年7期)2018-07-24 08:26:08
課間球臺(tái)拾取
課間球臺(tái)拾趣
美火星軌道器拍到歐洲著陸器落點(diǎn)圖像
太空探索(2016年12期)2016-07-18 11:13:43
青川县| 博乐市| 辽中县| 铜陵市| 多伦县| 新密市| 云南省| 柯坪县| 沙洋县| 长顺县| 马关县| 塘沽区| 厦门市| 保靖县| 沅陵县| 霞浦县| 肥西县| 阿拉善右旗| 汉川市| 海南省| 宁阳县| 安泽县| 九寨沟县| 保康县| 寻甸| 临澧县| 客服| 永春县| 施秉县| 包头市| 汝南县| 黄石市| 宣威市| 邻水| 炉霍县| 昭苏县| 米脂县| 和硕县| 醴陵市| 德化县| 突泉县|