技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)視覺(jué)處理技術(shù)領(lǐng)域,具體來(lái)說(shuō)是一種用于投影交互系統(tǒng)的連通域標(biāo)記方法。
背景技術(shù):
人機(jī)交互技術(shù)是計(jì)算機(jī)科學(xué)中至關(guān)重要的一個(gè)領(lǐng)域,其發(fā)展歷史基本上代表了計(jì)算機(jī)的發(fā)展歷史。從最早的大型機(jī)上的笨拙的開(kāi)關(guān)系統(tǒng)到早期鍵盤(pán)和鼠標(biāo)的出現(xiàn),以及當(dāng)下非常流行的觸摸屏,人機(jī)交互技術(shù)的發(fā)展速度日新月異。近年來(lái),由于計(jì)算機(jī)視覺(jué)技術(shù)的飛速發(fā)展,以及新的傳感器(比如深度相機(jī)Kinect、LeapMotion等)的出現(xiàn),使得各種便捷式的人機(jī)交互方式層出不窮。
Kinect是微軟開(kāi)發(fā)的深度傳感相機(jī),通過(guò)精心設(shè)計(jì)的算法,能夠感知到目標(biāo)到相機(jī)的距離從而得到目標(biāo)的深度信息。再結(jié)合目標(biāo)的可見(jiàn)光圖像,利用模式識(shí)別技術(shù)就能夠識(shí)別出人體的姿態(tài)、手勢(shì)等信息,從而起到一定的人機(jī)交互的作用。
但是,由于目前Kinect等深度相機(jī)在距離精度和空間分辨率上都明顯不足,利用Kinect等深度相機(jī)直接與計(jì)算機(jī)進(jìn)行交互并不能達(dá)到進(jìn)行精細(xì)操作的目的,不能直接在利用投影儀投射在墻壁上的顯示區(qū)域內(nèi)進(jìn)行便捷而靈敏的操作,尤其是雙擊這種對(duì)空間精度和時(shí)間精度要求較高的操作。
利用光筆和攝像頭組合形成的系統(tǒng),對(duì)投影圖像進(jìn)行操作,從而達(dá)到操控計(jì)算機(jī)的目的。為了獲取當(dāng)前手指或者光筆所在的位置,需要對(duì)攝像機(jī)捕獲的圖像進(jìn)行分析,從中提取前景像素,并且進(jìn)行連通域分析,從而完成手指或光筆的檢測(cè)和定位。
傳統(tǒng)的連通域標(biāo)記方法,都是針對(duì)單幀圖像進(jìn)行的。在利用攝像機(jī)進(jìn)行實(shí)時(shí)檢測(cè)時(shí),相鄰兩幀圖像之間的差異其實(shí)很小,如果每一幀圖像都完全重新標(biāo)記,則需要進(jìn)行大量的重復(fù)計(jì)算,效率不高,對(duì)投影系統(tǒng)的流暢性影響很大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決現(xiàn)有技術(shù)中連通域標(biāo)記方法效率低下的缺陷,提供一種用于投影交互系統(tǒng)的連通域標(biāo)記方法來(lái)解決上述問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案如下:
一種用于投影交互系統(tǒng)的連通域標(biāo)記方法,包括以下步驟:
第一幀圖像的連通域標(biāo)記,獲取圖像視頻,對(duì)圖像視頻的第一幀圖像的連通域進(jìn)行標(biāo)記,得到子行對(duì)應(yīng)的標(biāo)記圖;
獲取新生像素和消失像素,將當(dāng)前幀圖像與前一幀圖像使用幀差法計(jì)算,得到兩者的幀差圖,在幀差圖上找出消失像素和新生像素;消失像素的定義為單個(gè)像素同一位置,前一幀圖像為前景、當(dāng)前幀圖像為背景;新生像素的定義為單個(gè)像素同一位置,前一幀圖像為背景、當(dāng)前幀圖像為前景;
基于消失連通域?qū)η耙粠瑘D像進(jìn)行標(biāo)記結(jié)果的修正,由消失像素組成消失連通域,通過(guò)對(duì)消失連通域中子行的處理,對(duì)前一幀圖像標(biāo)記結(jié)果進(jìn)行修正,將消失像素的影響融入到當(dāng)前幀圖像的標(biāo)記結(jié)果中;
基于新生連通域?qū)Ξ?dāng)前幀圖像進(jìn)行標(biāo)記結(jié)果的修正,由新生像素組成新生連通域,通過(guò)對(duì)新生連通域中子行的處理,對(duì)已融合消失連通域的當(dāng)前幀圖像進(jìn)行標(biāo)記結(jié)果的修正。
所述的基于消失連通域?qū)η耙粠瑘D像進(jìn)行標(biāo)記結(jié)果的修正包括以下步驟:
對(duì)消失連通域進(jìn)行子行掃描,得到消失子行的信息;
基于消失子行在前一幀圖像中定位到其所在行,分析前一幀圖像子行的位置關(guān)系,對(duì)上一幀的子行進(jìn)行修改或?qū)ζ渌诘膱D進(jìn)行連接關(guān)系的修改,具體修改方法如下:
若消失子行僅與前一幀圖像的一個(gè)子行在兩端重疊,則修改前一幀圖像子行的起點(diǎn)和終點(diǎn)位置;其中,如果在前一幀子行的起點(diǎn)位置發(fā)生重疊,則將起點(diǎn)位置修改為消失子行右端的右邊一個(gè)位置;如果在前一幀子行的終點(diǎn)發(fā)生重疊,則將前一幀子行的終點(diǎn)位置修改為消失子行左端的左邊一個(gè)位置;
檢查修改后的子行在前一幀圖像中與其他子行的連接關(guān)系是否發(fā)生改變,根據(jù)情況進(jìn)行相應(yīng)修正,其修正方法為重新檢查原來(lái)與該子行連接的其他子行,觀察它們之前是否依然存在連接關(guān)系,如果不存在,則刪除連線;
若消失子行僅與前一幀圖像的一個(gè)子行在中間重疊,將前一幀圖像子行基于重疊位置拆分成兩個(gè)子行,然后判斷前一幀圖像中連接關(guān)系的變化,對(duì)前一幀圖像的內(nèi)容進(jìn)行相應(yīng)修正,其修正分析為與消失子行發(fā)生重疊的這個(gè)子行的所有連接子行,觀察這些連接子行與兩個(gè)新的子行的連接關(guān)系,如果不再連接,則在圖中刪除連線;
若消失子行僅與前一幀圖像的一個(gè)子行完全重疊,此時(shí)前一幀圖像的原有子行完全消失,從圖中去除該節(jié)點(diǎn)且去除其相應(yīng)連接關(guān)系。
所述的基于新生連通域?qū)Ξ?dāng)前幀圖像進(jìn)行標(biāo)記結(jié)果的修正包括以下步驟:
對(duì)新生連通域進(jìn)行子行掃描,得到新生子行的信息;
基于新生子行在前一幀圖像中定位到其所在行,分析前一幀圖像子行的位置關(guān)系,對(duì)上一幀的子行進(jìn)行修改或?qū)ζ渌诘膱D進(jìn)行連接關(guān)系的修改,具體修改方法如下:
若新生子行僅與前一幀圖像的一個(gè)子行在兩端相接,修改前一幀圖像子行的起點(diǎn)和終點(diǎn)位置;檢查修改后的子行,在當(dāng)前幀圖像中與其他子行的連接關(guān)系是否發(fā)生改變,根據(jù)情況進(jìn)行相應(yīng)修正,其修正的方法為若新生的子行與周邊的一個(gè)原來(lái)不連接的子行變成連接了,則在圖中添加連線;
若新生子行僅與前一幀圖像的兩個(gè)子行相接,將前一幀圖像的兩個(gè)子行與新生子行合并成一個(gè)子行;判斷當(dāng)前幀圖像中連接關(guān)系的變化,對(duì)圖的內(nèi)容進(jìn)行相應(yīng)修正,其修正方法為分析這個(gè)新合并的子行,是否出現(xiàn)了原來(lái)不存在連接關(guān)系的子行現(xiàn)在變得連接,則在圖中添加新的連線;
若新生子行未與原標(biāo)記圖的任何子行相接,新生子行則為新出現(xiàn)的子行,為新生子行建立新的圖,并且將新的子行加入到該圖中。
有益效果
本發(fā)明的一種用于投影交互系統(tǒng)的連通域標(biāo)記方法,與現(xiàn)有技術(shù)相比在處理連續(xù)幀圖像時(shí)能夠快速完成二值圖像中連通域的標(biāo)記功能。本發(fā)明在進(jìn)行連續(xù)幀圖像標(biāo)記時(shí)速度較快,其利用當(dāng)前幀圖像與前一幀圖像的幀差圖以及上一幀圖像中的標(biāo)記結(jié)果來(lái)得到當(dāng)前圖的標(biāo)記結(jié)果,因?yàn)槿サ袅藗鹘y(tǒng)的重復(fù)計(jì)算過(guò)程,使得運(yùn)算量大規(guī)模降低。
附圖說(shuō)明
圖1為本發(fā)明的方法流程圖;
圖2為第一幀前景圖像;
圖3為圖2的連通域標(biāo)記示意圖;
圖4為圖2的子行示意圖;
圖5為圖4的子行標(biāo)記示意圖;
圖6為圖5的第二行掃描結(jié)束后的子行對(duì)應(yīng)的關(guān)系圖;
圖7為圖5的第三行掃描結(jié)束后的子行對(duì)應(yīng)的關(guān)系圖;
圖8為圖5的第四行掃描結(jié)束后的子行對(duì)應(yīng)的關(guān)系圖;
圖9為當(dāng)前幀圖像;
圖10為圖2與圖9的幀差圖;
圖11為圖10的掃描分析圖;
圖12為圖11掃描消失像素后的子行關(guān)系圖;
圖13為圖12修改后的子行關(guān)系圖;
圖14為圖11掃描新像素后的子行關(guān)系圖;
圖15為圖14修改后的子行關(guān)系圖;
圖16為圖15修改后的子行關(guān)系圖。
具體實(shí)施方式
為使對(duì)本發(fā)明的結(jié)構(gòu)特征及所達(dá)成的功效有更進(jìn)一步的了解與認(rèn)識(shí),用以較佳的實(shí)施例及附圖配合詳細(xì)的說(shuō)明,說(shuō)明如下:
如圖1所示,本發(fā)明所述的一種用于投影交互系統(tǒng)的連通域標(biāo)記方法,包括以下步驟:
第一步,第一幀圖像的連通域標(biāo)記。獲取圖像視頻,利用現(xiàn)有技術(shù)對(duì)圖像視頻的第一幀圖像的連通域進(jìn)行標(biāo)記,得到子行對(duì)應(yīng)的標(biāo)記圖。
連通域標(biāo)記為圖像中每一個(gè)連通域(彼此相連的前景像素塊)分配一個(gè)不同的整數(shù)標(biāo)號(hào)(如:1,2,3,...),保證不同的連通域標(biāo)號(hào)不一樣,而同一個(gè)連通域中的每個(gè)像素的標(biāo)號(hào)一致。針對(duì)于如圖2所示的,第一幀圖像而言,如圖3所示,其連通域標(biāo)記為每個(gè)不同的孤立區(qū)域,都被標(biāo)記了不同的標(biāo)識(shí)。
子行是構(gòu)成連通域的基本單位。子行的表達(dá)形式為[A:B:C,D],其中A表示子行的序號(hào),全圖唯一。B表示子行所在的行號(hào)。C和D分別表示子行的起點(diǎn)和終點(diǎn)橫坐標(biāo),就是列號(hào)。如圖4所示,第一行中的5個(gè)網(wǎng)格線標(biāo)記的像素,彼此相連,構(gòu)成一個(gè)子行。圖4中的網(wǎng)格線標(biāo)記的像素子行,表達(dá)為[0:0:1,5]。
基于子行和圖的連通域標(biāo)記方法示例如下:圖4是所有子行的標(biāo)記結(jié)果,在每個(gè)子行的第一個(gè)像素內(nèi)標(biāo)記子行序號(hào)。第一行掃描得到兩個(gè)子行:[0:0:1,5]和:[1:0:9,12]。第二行掃描得到兩個(gè)新的子行:[2:1:5,6]和[3:1:8,9]。此時(shí)連通域?qū)?yīng)關(guān)系如圖6所示。此時(shí)總共有兩個(gè)連通域,對(duì)應(yīng)兩個(gè)圖(關(guān)系圖)。
第三行掃描得到三個(gè)新的子行:[4:2:1,3]、[5:2:6,7]和[6:2:13,13]。由于子行5與子行2和子行3相接,因此關(guān)系圖如圖7所示。此時(shí)總共有三個(gè)連通域,對(duì)應(yīng)三個(gè)圖。
第四行掃描得到四個(gè)子行:[7:3:0,0]、[8:3:3,4]、[9:3:9,9]和[10:3:12,12]。子行7、8與子行4相接,子行10與子行6相接。此時(shí)的關(guān)系圖如圖8所示。此時(shí)總共有四個(gè)連通域,對(duì)應(yīng)四個(gè)圖。
第二步,獲取新生像素和消失像素。將當(dāng)前幀圖像與前一幀圖像使用幀差法計(jì)算,得到兩者的幀差圖,在幀差圖上找出消失像素和新生像素。消失像素的定義為單個(gè)像素同一位置,前一幀圖像為前景、當(dāng)前幀圖像為背景;新生像素的定義為單個(gè)像素同一位置,前一幀圖像為背景、當(dāng)前幀圖像為前景。消失像素和新生像素的計(jì)算是分別進(jìn)行的,并且分別進(jìn)行新生連通域的標(biāo)記和和消失連通域的標(biāo)記。
如圖9所示,圖9為當(dāng)前幀的前景圖像。利用圖2和圖9,可以計(jì)算幀差圖。如圖10中的水平線像素所示,其就是消失的像素。第一行的水平線像素導(dǎo)致子行0變短,第三行的水平線像素導(dǎo)致連通域斷裂為兩部分,第四行的水平線像素導(dǎo)致子行或者連通域消失。如圖10中的垂直線像素所示,其為新出現(xiàn)的像素。第一行的垂直線像素導(dǎo)致子行1邊長(zhǎng),第二行垂直線像素導(dǎo)致兩個(gè)連通域融合為一個(gè),第三行垂直線像素導(dǎo)致連通域中出現(xiàn)一個(gè)新的子行,第四行垂直線像素導(dǎo)致出現(xiàn)新的連通域。
第三步,基于消失連通域?qū)η耙粠瑘D像進(jìn)行標(biāo)記結(jié)果的修正。由消失像素組成消失連通域,通過(guò)對(duì)消失連通域中子行的處理,對(duì)前一幀圖像標(biāo)記結(jié)果進(jìn)行修正,將消失像素的影響融入到當(dāng)前幀圖像的標(biāo)記結(jié)果中。消失連通域是指在幀差圖中,由消失像素構(gòu)成的連通域。消失連通域?qū)ι弦粠臉?biāo)記結(jié)果是有影響的,它們可能造成原來(lái)連通域的變化、斷裂或者消失。通過(guò)對(duì)消失連通域中子行的處理,可以將消失像素的影響融入到標(biāo)記結(jié)果中。其具體步驟如下:
(1)對(duì)消失連通域進(jìn)行子行掃描,得到消失子行的信息。
(2)基于消失子行在前一幀圖像中定位到其所在行,分析前一幀圖像子行的位置關(guān)系,對(duì)上一幀的子行進(jìn)行修改或?qū)ζ渌诘膱D進(jìn)行連接關(guān)系的修改,具體修改方法如下:
A、若消失子行僅與前一幀圖像的一個(gè)子行在兩端重疊,則修改前一幀圖像子行的起點(diǎn)和終點(diǎn)位置;其中,如果在前一幀子行的起點(diǎn)位置發(fā)生重疊,則將起點(diǎn)位置修改為消失子行右端的右邊一個(gè)位置;如果在前一幀子行的終點(diǎn)發(fā)生重疊,則將前一幀子行的終點(diǎn)位置修改為消失子行左端的左邊一個(gè)位置。
檢查修改后的子行在前一幀圖像中與其他子行的連接關(guān)系是否發(fā)生改變,根據(jù)情況進(jìn)行相應(yīng)修正,其修正方法為重新檢查原來(lái)與該子行連接的其他子行,觀察它們之前是否依然存在連接關(guān)系,如果不存在,則刪除連線。
B、若消失子行僅與前一幀圖像的一個(gè)子行在中間重疊,將前一幀圖像子行基于重疊位置拆分成兩個(gè)子行,然后判斷前一幀圖像中連接關(guān)系的變化,對(duì)前一幀圖像的內(nèi)容進(jìn)行相應(yīng)修正,其修正分析為與消失子行發(fā)生重疊的這個(gè)子行的所有連接子行,觀察這些連接子行與兩個(gè)新的子行的連接關(guān)系,如果不再連接,則在圖中刪除連線。
C、若消失子行僅與前一幀圖像的一個(gè)子行完全重疊,此時(shí)前一幀圖像的原有子行完全消失,從圖中去除該節(jié)點(diǎn)且去除其相應(yīng)連接關(guān)系。
如圖11所示,掃描第0行的消失像素,得到子行[11:0:1,1]。分析上一幀結(jié)果中所有位于第0行與第1行的子行,發(fā)現(xiàn)子行11與子行0有重疊部分,于是修改子行0的起點(diǎn)位置為:[0:0:2,5],圖(子行關(guān)系圖)的關(guān)系保持不變。子行11不加入圖中。掃描第2行的消失像素,得到子行[12:2:7,7]。分析其與1,2,3行中原有子行的相接關(guān)系,發(fā)現(xiàn)子行12與子行5有重疊,與子行2和子行3相接。子行12會(huì)導(dǎo)致子行5的縮短,并且導(dǎo)致子行5與子行3的連接中斷。此時(shí)需要修改原關(guān)系圖中子行5的終點(diǎn)位置[5:2:6,6],并且去掉子行5與子行3之間的連接線。如圖12所示。此時(shí)總共是5個(gè)連通域。掃描第3行的消失像素,得到子行[13:3:1,1]和[14:3:9,9]。分析子行13與2,3行中的原有子行的相接關(guān)系,發(fā)現(xiàn)其與原子行7完全重疊,并且與子行4相接。此時(shí)需要從關(guān)系圖中去掉子行7及其與子行4的連接。分析子行14,發(fā)現(xiàn)其與子行9完全重疊,導(dǎo)致子行9完全消失。此時(shí)需要從關(guān)系圖中將子行9去掉。如圖13所示。此時(shí)總共有4個(gè)連通域。
第四步,基于新生連通域?qū)Ξ?dāng)前幀圖像進(jìn)行標(biāo)記結(jié)果的修正。由新生像素組成新生連通域,通過(guò)對(duì)新生連通域中子行的處理,對(duì)已融合消失連通域的當(dāng)前幀圖像進(jìn)行標(biāo)記結(jié)果的修正。新生連通域是指在幀差圖中,由新生像素構(gòu)成的連通域。新生連通域?qū)ι弦粠臉?biāo)記結(jié)果是有影響的,它們可能造成原來(lái)連通域的變化、粘連或者新生。通過(guò)對(duì)新生連通域中子行的處理,可以將新生像素的影響融入到標(biāo)記結(jié)果中。其具體步驟如下:
(1)對(duì)新生連通域進(jìn)行子行掃描,得到新生子行的信息。
(2)基于新生子行在前一幀圖像中定位到其所在行,分析前一幀圖像子行的位置關(guān)系,對(duì)上一幀的子行進(jìn)行修改或?qū)ζ渌诘膱D進(jìn)行連接關(guān)系的修改,具體修改方法如下:
A、若新生子行僅與前一幀圖像的一個(gè)子行在兩端相接,修改前一幀圖像子行的起點(diǎn)和終點(diǎn)位置。檢查修改后的子行,在當(dāng)前幀圖像中與其他子行的連接關(guān)系是否發(fā)生改變,根據(jù)情況進(jìn)行相應(yīng)修正,其修正的方法為若新生的子行與周邊的一個(gè)原來(lái)不連接的子行變成連接了,則在圖中添加連線。
B、若新生子行僅與前一幀圖像的兩個(gè)子行相接,將前一幀圖像的兩個(gè)子行與新生子行合并成一個(gè)子行。判斷當(dāng)前幀圖像中連接關(guān)系的變化,對(duì)圖的內(nèi)容進(jìn)行相應(yīng)修正,其修正方法為分析這個(gè)新合并的子行,是否出現(xiàn)了原來(lái)不存在連接關(guān)系的子行現(xiàn)在變得連接,則在圖中添加新的連線。
C、若新生子行未與原標(biāo)記圖的任何子行相接,新生子行則為新出現(xiàn)的子行,為新生子行建立新的圖,并且將新的子行加入到該圖中。
如圖11為例,新出現(xiàn)像素的處理細(xì)節(jié):掃描第0行,得到子行[15:0:8,8],此時(shí)需要修改原子行1的起點(diǎn):[1:0:8,12]。掃描第1行,得到子行[16:1:3,3],分析發(fā)現(xiàn)該子行為新出現(xiàn)的子行,并且與原子行0和子行4相接,導(dǎo)致兩個(gè)連通域融合為一個(gè),此時(shí)需要在原關(guān)系圖中增加新的結(jié)點(diǎn)和連接,并且將兩個(gè)圖連接起來(lái)。如圖14所示。
掃描第2行,得到子行[17:2:11,11],這是新的子行,并且與子行10相接,因此需要加入到子行10所在的連通域,如圖15所示。
掃描第3行,得到子行[18:3:9,9],分析發(fā)現(xiàn)這是新出現(xiàn)的子行,并且不與任何子行相接,是新的連通域。最終結(jié)果如圖16所示。此時(shí)總共4個(gè)連通域。至此,最終的標(biāo)記結(jié)果可以通過(guò)遍歷圖得到。
以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點(diǎn)。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實(shí)施例的限制,上述實(shí)施例和說(shuō)明書(shū)中描述的只是本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下本發(fā)明還會(huì)有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明的范圍內(nèi)。本發(fā)明要求的保護(hù)范圍由所附的權(quán)利要求書(shū)及其等同物界定。