本發(fā)明涉及作用域相交檢測領(lǐng)域,特別涉及一種作用域相交檢測方法和用于作用域相交檢測的裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,對移動作用域進(jìn)行作用域相交檢測主要是基于對移動作用域上的點(diǎn)進(jìn)行檢測,即將移動作用域上的檢測點(diǎn)在每一個(gè)物理幀的位置與目標(biāo)作用域的判定區(qū)域的關(guān)系進(jìn)行處理及檢測的,當(dāng)且僅當(dāng)檢測點(diǎn)進(jìn)入目標(biāo)作用域的判定區(qū)域時(shí),判定為產(chǎn)生作用域相交事件。
當(dāng)作用域高速移動或系統(tǒng)幀率較低時(shí),可能會發(fā)生沒有準(zhǔn)確檢測出作用域相交的情況。如圖1所示,移動作用域12沿直線運(yùn)動并穿過目標(biāo)作用域14。檢測點(diǎn)Af1和檢測點(diǎn)Af2分別為移動作用域12的檢測點(diǎn)A在相鄰兩個(gè)物理幀f1和f2的位置。雖然移動作用域12與目標(biāo)作用域14實(shí)際相交,但是由于兩個(gè)檢測點(diǎn)并未落在目標(biāo)作用域14的判定區(qū)域內(nèi),因此按照現(xiàn)行的作用域相交檢測方法無法檢測出該作用域相交事件。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例所要解決的一個(gè)技術(shù)問題是:在作用域高速移動或系統(tǒng)幀率較低的情況下,如何準(zhǔn)確地檢測出作用域相交事件。
根據(jù)本發(fā)明實(shí)施例的第一個(gè)方面,提供了一種作用域相交檢測方法,包括:獲取移動作用域上的檢測點(diǎn)在每一個(gè)物理幀的位置;將移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段;判斷路徑線段是否與目標(biāo)作用域相交,如果相交,則移動作用域與目標(biāo)作用域相交。
在一個(gè)實(shí)施例中,判斷路徑線段是否與目標(biāo)作用域相交包括:如 果目標(biāo)作用域的對角線的兩個(gè)端點(diǎn)在路徑線段所在直線的兩側(cè),并且,路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域任意一邊所在直線的兩側(cè)或者路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域內(nèi)部,則判定路徑線段與目標(biāo)作用域相交。
在一個(gè)實(shí)施例中,判斷路徑線段是否與目標(biāo)作用域相交包括:如果路徑線段與目標(biāo)作用域的任意一邊相交,或者,如果路徑線段的兩個(gè)端點(diǎn)均位于目標(biāo)作用域內(nèi)部,則判定路徑線段與目標(biāo)作用域相交。
在一個(gè)實(shí)施例中,在檢測到移動作用域與目標(biāo)作用域發(fā)生碰撞后,將所述移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段。
在一個(gè)實(shí)施例中,方法還包括:構(gòu)建目標(biāo)作用域的模型矩陣,其中,模型矩陣包括依據(jù)目標(biāo)作用域的對角線構(gòu)建的矩形模型矩陣。
在一個(gè)實(shí)施例中,方法還包括:選取移動作用域上的至少一個(gè)點(diǎn)并確定為檢測點(diǎn)。
在一個(gè)實(shí)施例中,將移動作用域劃成為若干子區(qū)域,從移動作用域的各子區(qū)域中分別選取一個(gè)點(diǎn)確定為檢測點(diǎn)。
根據(jù)本發(fā)明實(shí)施例的第二個(gè)方面,提供一種用于作用域相交檢測的裝置,其特征在于,包括:檢測點(diǎn)位置獲取模塊,用于獲取移動作用域上的檢測點(diǎn)在每一個(gè)物理幀的位置;檢測點(diǎn)路徑生成模塊,用于將移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段;作用域相交檢測模塊,用于判斷路徑線段是否與目標(biāo)作用域相交,如果相交,則移動作用域與目標(biāo)作用域產(chǎn)生作用域相交。
在一個(gè)實(shí)施例中,作用域相交檢測模塊用于當(dāng)目標(biāo)作用域的對角線的兩個(gè)端點(diǎn)在路徑線段所在直線的兩側(cè),并且,路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域任意一邊所在直線的兩側(cè)或者路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域內(nèi)部時(shí),判定路徑線段與目標(biāo)作用域相交。
在一個(gè)實(shí)施例中,作用域相交檢測模塊用于當(dāng)路徑線段與目標(biāo)作用域的任意一邊相交時(shí),或者,當(dāng)路徑線段的兩個(gè)端點(diǎn)均位于目標(biāo)作用域內(nèi)部時(shí),判定路徑線段與目標(biāo)作用域相交。
在一個(gè)實(shí)施例中,裝置還包括碰撞檢測模塊,用于檢測移動作用 域與目標(biāo)作用域是否相交;檢測點(diǎn)路徑生成模塊用于在移動作用域與目標(biāo)作用域相交后,將所述移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段。
在一個(gè)實(shí)施例中,裝置還包括模型構(gòu)建模塊,用于構(gòu)建目標(biāo)作用域的模型矩陣,其中,模型矩陣包括依據(jù)目標(biāo)作用域的對角線構(gòu)建的矩形模型矩陣。
在一個(gè)實(shí)施例中,裝置還包括檢測點(diǎn)確定模塊,用于選取移動作用域上的至少一個(gè)點(diǎn)并確定為檢測點(diǎn)。
在一個(gè)實(shí)施例中,裝置還包括劃分模塊,用于將移動作用域劃成為若干子區(qū)域,檢測點(diǎn)確定模塊用于從移動作用域的各子區(qū)域中分別選取一個(gè)點(diǎn)確定為檢測點(diǎn)。
本發(fā)明通過對離散的檢測點(diǎn)進(jìn)行連續(xù)處理,根據(jù)連續(xù)處理得到的路徑線段對目標(biāo)作用域進(jìn)行作用域相交檢測,對幀率的依賴較低,在作用域高速移動或系統(tǒng)幀率較低的情況下,也能夠準(zhǔn)確地檢測出作用域相交事件。
通過以下參照附圖對本發(fā)明的示例性實(shí)施例的詳細(xì)描述,本發(fā)明的其它特征及其優(yōu)點(diǎn)將會變得清楚。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出現(xiàn)有技術(shù)中作用域相交檢測方法的場景示意圖。
圖2示出本發(fā)明作用域相交檢測方法的一個(gè)實(shí)施例的流程圖。
圖3示出本發(fā)明作用域相交檢測方法的場景示意圖。
圖4示出本發(fā)明作用域相交檢測示例的場景示意圖
圖5(a)、5(b)、5(c)示出路徑線段與目標(biāo)作用域的位置 關(guān)系示意圖。
圖6示出將移動作用域劃分為多個(gè)子區(qū)域進(jìn)行作用域相交檢測的示意圖。
圖7示出本發(fā)明用于作用域相交檢測的裝置的一個(gè)實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。以下對至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對本發(fā)明及其應(yīng)用或使用的任何限制?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
下面參考圖2描述本發(fā)明一個(gè)實(shí)施例的作用域相交檢測方法。
圖2為本發(fā)明作用域相交檢測方法的一個(gè)實(shí)施例的流程圖。如圖2所示,該實(shí)施例的方法包括:
步驟S202,獲取移動作用域上的檢測點(diǎn)在每一個(gè)物理幀的位置。
步驟S204,將移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段。
步驟S206,判斷路徑線段是否與目標(biāo)作用域相交,如果相交,則移動作用域與目標(biāo)作用域相交。
具體地,可以參照圖3所示的本發(fā)明作用域相交檢測方法的場景示意圖。如圖3所示,移動作用域32沿軌跡36運(yùn)動,檢測點(diǎn)Af31和檢測點(diǎn)Af32分別為移動作用域的檢測點(diǎn)在相鄰兩個(gè)物理幀的位置,將檢測點(diǎn)Af31和檢測點(diǎn)Af32連接,連接的線段與目標(biāo)作用域34相交。因此,即使兩個(gè)檢測點(diǎn)并未落在目標(biāo)作用域34的判定區(qū)域內(nèi),也會正確地判斷出移動作用域與目標(biāo)作用域34相交。
通過對離散的檢測點(diǎn)進(jìn)行連續(xù)處理,根據(jù)連續(xù)處理得到的路徑線段對目標(biāo)作用域進(jìn)行作用域相交檢測,對幀率的依賴較低,在作用域高 速移動或系統(tǒng)幀率較低的情況下,也能夠準(zhǔn)確地檢測出作用域相交事件。
針對步驟S206中的判斷路徑線段是否與目標(biāo)作用域相交,本發(fā)明還提出兩種示例性的判斷方法。
第一種判斷的方式為:如果目標(biāo)作用域的對角線的兩個(gè)端點(diǎn)在路徑線段所在直線的兩側(cè),并且,路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域任意一邊所在直線的兩側(cè)或者路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域內(nèi)部,則判定路徑線段與目標(biāo)作用域相交,否則,判定不相交。下面結(jié)合圖4詳細(xì)說明判斷過程。
圖4為本發(fā)明作用域相交檢測示例的場景示意圖。如圖4所示,設(shè)檢測點(diǎn)在相鄰物理幀分別位于點(diǎn)S(xs,ys)和點(diǎn)E(xe,ye),目標(biāo)作用域的四個(gè)頂點(diǎn)分別為M1(x1,y1),M2(x2,y2),M3(x1,y2),M4(x2,y1),經(jīng)過點(diǎn)S和點(diǎn)E的直線SE為ax+by+c=0。其中,a=y(tǒng)s-ye,b=xe-xs,c=xsye-xeys。
首先判斷目標(biāo)作用域的對角線的兩個(gè)端點(diǎn)是否在直線SE的兩側(cè),即判斷是否有至少一條對角線線段與直線SE相交。對于公式(ax1+by1+c)(ax2+by2+c)<=0與(ax2+by1+c)(ax1+by2+c)<=0,當(dāng)兩個(gè)公式均不成立時(shí),矩形的四個(gè)頂點(diǎn)均位于直線SE的同側(cè),即直線SE未與矩形相交,在這種情況下,顯然線段SE也未與矩形相交,即未發(fā)生作用域相交;當(dāng)兩個(gè)公式中的至少一個(gè)公式成立時(shí),至少一條對角線的兩個(gè)端點(diǎn)位于直線SE的兩側(cè),即存在一條對角線線段與直線SE相交,再進(jìn)一步判斷線段SE是否與矩形相交。
接下來,判斷路徑線段的兩個(gè)端點(diǎn)是否位于目標(biāo)作用域任意一邊所在直線的兩側(cè)或者位于目標(biāo)作用域內(nèi)部。在下列公式中,“&&”表示“和”的邏輯關(guān)系。對于公式(xs<x1&&xe<x1)、(xs>x2&&xe>x2)、(ys>y1&&ye>y1)和(ys<y2&&ye<y2),當(dāng)這四個(gè)公式均不成立時(shí),線段SE與矩形相交,移動作用域與目標(biāo)作用域相交;反之,則未相交。
通過采用這種方法,只需要對路徑線段的端點(diǎn)和直線的方位關(guān)系進(jìn)行判斷,無需進(jìn)行交點(diǎn)計(jì)算。
在采用上述方法進(jìn)行作用域相交檢測時(shí),可以構(gòu)建目標(biāo)作用域的 模型矩陣,其中,模型矩陣包括依據(jù)目標(biāo)作用域的對角線構(gòu)建的矩形模型矩陣。對于矩形,通過一條對角線的信息,即可獲知矩形各個(gè)頂點(diǎn)的信息,因此不需要對多余的數(shù)據(jù)進(jìn)行存儲。
下面參照圖5(a)、5(b)、5(c)描述路徑線段與目標(biāo)作用域的位置關(guān)系示意圖。在連續(xù)的兩個(gè)物理幀的時(shí)間段內(nèi),可以將移動作用域與目標(biāo)作用域的作用域相交檢測場景分為三種情況:第一種為移動作用域始終未與目標(biāo)作用域相交,此時(shí)路徑線段的兩個(gè)端點(diǎn)均在目標(biāo)作用域外,如圖5(a)所示;第二種為移動作用域從未相交狀態(tài)移動到相交狀態(tài),此時(shí)路徑線段的兩個(gè)端點(diǎn)一點(diǎn)在目標(biāo)作用域內(nèi),一點(diǎn)在目標(biāo)作用域外,路徑線段與目標(biāo)作用域的一邊有交點(diǎn),如圖5(b)所示;第三種為移動作用域始終處于相交狀態(tài)中,此時(shí)路徑線段的兩個(gè)端點(diǎn)均在目標(biāo)作用域內(nèi),如圖5(c)所示。在后兩種情況下,移動作用域均與目標(biāo)作用域相交。因此,也可以采用本發(fā)明提供的第二種方法進(jìn)行判斷:如果路徑線段與目標(biāo)作用域的任意一邊相交,或者,如果路徑線段的兩個(gè)端點(diǎn)均位于目標(biāo)作用域內(nèi)部,則判定路徑線段與目標(biāo)作用域相交。
對于判斷路徑線段是否與目標(biāo)作用域的任意一邊相交,具體可以采取以下步驟進(jìn)行計(jì)算:首先,建立路徑線段所在的直線以及目標(biāo)作用域各邊所在直線;然后,計(jì)算路徑線段所在直線與各邊所在直線的交點(diǎn),再判斷交點(diǎn)是否在該邊以及該路徑線段上,如果是,則移動作用域與目標(biāo)作用域相交,如果不是,則繼續(xù)判斷路徑線段的兩個(gè)端點(diǎn)是否均位于目標(biāo)作用域內(nèi)部。通過比較路徑線段端點(diǎn)的橫縱坐標(biāo)與目標(biāo)作用域頂點(diǎn)的橫縱坐標(biāo)的大小關(guān)系,可以容易地進(jìn)行判斷。如果路徑線段的兩個(gè)端點(diǎn)是否均位于目標(biāo)作用域內(nèi)部,則移動作用域與目標(biāo)作用域相交,反之則未相交。
這種方法雖然需要逐個(gè)計(jì)算交點(diǎn),但是可以將其應(yīng)用于目標(biāo)作用域?yàn)槎噙呅蔚那闆r,適用范圍更廣。
上述兩種方法為較為典型的判斷路徑線段是否與目標(biāo)作用域相交的方法。顯然,除了上述描述的方法外,本領(lǐng)域技術(shù)人員根據(jù)需要還可 以采用其他方法進(jìn)行判斷,這里不再窮舉。
在采用上述方法進(jìn)行作用域相交檢測時(shí),需要對檢測點(diǎn)在所有相鄰位置的點(diǎn)都連接成為路徑線段,并計(jì)算路徑線段是否與目標(biāo)作用域相交。當(dāng)計(jì)算性能較低時(shí),可能會影響執(zhí)行效率。因而,可以采用如下方法:在檢測到移動作用域與目標(biāo)作用域發(fā)生碰撞后,再將所述移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段。具體地,可以采用如下步驟:首先,建立緩沖區(qū),記錄檢測點(diǎn)在每一個(gè)物理幀的位置,并對緩沖區(qū)定期進(jìn)行更新,保證緩沖區(qū)中記錄檢測點(diǎn)最新的位置;然后,對移動作用域和目標(biāo)作用域進(jìn)行碰撞檢測,兩作用域的邊緣發(fā)生接觸即認(rèn)為發(fā)生碰撞;當(dāng)檢測到移動作用域和目標(biāo)作用域產(chǎn)生碰撞時(shí),將緩沖區(qū)內(nèi)檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段,并執(zhí)行步驟S208。通過采用這種方法,能夠在碰撞檢測裝置檢測到移動作用域與目標(biāo)作用域的邊緣產(chǎn)生碰撞后,再采用本發(fā)明提供的方法進(jìn)行計(jì)算,提高了檢測效率,避免了多余的資源消耗。
此外,關(guān)于檢測點(diǎn)的選擇,可以選取移動作用域上的至少一個(gè)點(diǎn)并確定為檢測點(diǎn)??梢愿鶕?jù)實(shí)際情況和需求,例如根據(jù)移動作用域的大小、形狀、檢測精度要求來確定檢測點(diǎn)的位置和數(shù)量。例如,當(dāng)移動作用域比較小,可以選取移動作用域上的一個(gè)點(diǎn)并確定為檢測點(diǎn),通??梢赃x取作用域中心處的點(diǎn)為檢測點(diǎn)。
在本發(fā)明的方案中,還可以根據(jù)需要采用分治法,選取多個(gè)檢測點(diǎn)檢測是否產(chǎn)生作用域相交,即:將移動作用域劃成為若干子區(qū)域,從移動作用域的各子區(qū)域中分別選取一個(gè)點(diǎn)確定為檢測點(diǎn)。采用這種方法進(jìn)行作用域相交檢測的具體步驟如下:首先,將移動作用域劃成為若干子區(qū)域,從移動作用域的各子區(qū)域中分別選取一個(gè)點(diǎn)確定為檢測點(diǎn);然后,對于每一個(gè)子區(qū)域的檢測點(diǎn),采用步驟S202~S206的方法判斷子區(qū)域是否與目標(biāo)作用域相交;最后,如果至少有一個(gè)子區(qū)域與目標(biāo)作用域相交,則移動作用域與目標(biāo)作用域相交,如果所有子區(qū)域均未與目標(biāo)作用域相交,則移動作用域與目標(biāo)作用域未相交。
圖6為選取多個(gè)檢測點(diǎn)進(jìn)行作用域相交檢測的示意圖。如圖6 所示,移動作用域具有兩個(gè)子區(qū)域,兩個(gè)子區(qū)域的檢測點(diǎn)在前一個(gè)物理幀的位置分別為A和B,在后一個(gè)物理幀的位置分別為A’和B’。雖然線段AA’與目標(biāo)作用域無交點(diǎn),但是線段BB’與目標(biāo)作用域有交點(diǎn),因此判斷移動作用域與目標(biāo)作用域相交。
通過采用這種方法,可以對同一個(gè)移動作用域中多個(gè)感興趣的點(diǎn)均進(jìn)行作用域相交檢測,能夠適應(yīng)多點(diǎn)檢測,滿足不同應(yīng)用場景的需要,提高作用域相交檢測的精度。在具體實(shí)施中,可以結(jié)合精度要求和計(jì)算性能對子區(qū)域的數(shù)量進(jìn)行調(diào)整。
本發(fā)明的方法可以應(yīng)用于多媒體領(lǐng)域,例如在對游戲中的對象進(jìn)行作用域相交檢測,或者檢測視頻中作用域之間是否相交的情況以便觸發(fā)后續(xù)處理。顯然,根據(jù)需要,也可以將本發(fā)明的方法應(yīng)用于其他需要進(jìn)行作用域相交檢測的技術(shù)領(lǐng)域。
下面參考圖7描述本發(fā)明一個(gè)實(shí)施例的用于作用域相交檢測的裝置。
圖7為本發(fā)明用于作用域相交檢測的裝置的一個(gè)實(shí)施例的結(jié)構(gòu)圖。如圖7所示,該裝置包括:檢測點(diǎn)位置獲取模塊72,用于獲取移動作用域上的檢測點(diǎn)在每一個(gè)物理幀的位置;檢測點(diǎn)路徑生成模塊74,用于將移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段;作用域相交檢測模塊76,用于判斷路徑線段是否與目標(biāo)作用域相交,如果相交,則移動作用域與目標(biāo)作用域相交。
其中,作用域相交檢測模塊用于當(dāng)目標(biāo)作用域的對角線的兩個(gè)端點(diǎn)在路徑線段所在直線的兩側(cè),并且,路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域任意一邊所在直線的兩側(cè)或者路徑線段的兩個(gè)端點(diǎn)位于目標(biāo)作用域內(nèi)部時(shí),判定路徑線段與目標(biāo)作用域相交。
其中,作用域相交檢測模塊用于當(dāng)路徑線段與目標(biāo)作用域的任意一邊相交時(shí),或者,當(dāng)路徑線段的兩個(gè)端點(diǎn)均位于目標(biāo)作用域內(nèi)部時(shí),判定路徑線段與目標(biāo)作用域的模型相交。
其中,裝置還包括碰撞檢測模塊,用于檢測移動作用域與目標(biāo)作用域是否發(fā)生碰撞;檢測點(diǎn)路徑生成模塊用于在移動作用域與目標(biāo)作 用域發(fā)生碰撞后,將所述移動作用域上的檢測點(diǎn)在相鄰物理幀的位置連接成路徑線段。
其中,裝置還包括模型構(gòu)建模塊,用于構(gòu)建目標(biāo)作用域的模型矩陣,其中,模型矩陣包括依據(jù)目標(biāo)作用域的對角線構(gòu)建的矩形模型矩陣。
其中,裝置還包括檢測點(diǎn)確定模塊,用于選取移動作用域上的至少一個(gè)點(diǎn)并確定為檢測點(diǎn)。
其中,裝置還包括劃分模塊,用于將移動作用域劃成為若干子區(qū)域,檢測點(diǎn)確定模塊用于從移動作用域的各子區(qū)域中分別選取一個(gè)點(diǎn)確定為檢測點(diǎn)。
此外,根據(jù)本發(fā)明的方法還可以實(shí)現(xiàn)為一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),在該計(jì)算機(jī)可讀介質(zhì)上存儲有用于執(zhí)行本發(fā)明的方法中限定的上述功能的計(jì)算機(jī)程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件或兩者的組合。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。