對(duì)于計(jì)算裝置來(lái)說(shuō),收集、處理以及顯示圖像是常見(jiàn)的事。例如,多個(gè)移動(dòng)電話、平板計(jì)算機(jī)以及個(gè)人計(jì)算機(jī)可以從機(jī)載攝像機(jī)收集圖像、處理那些圖像以及在屏幕上顯示所處理的圖像。該處理可以涉及非常簡(jiǎn)單的算法,如將靜止圖像從彩色轉(zhuǎn)換成灰度。更復(fù)雜的算法可能包括噪聲縮減和色調(diào)增強(qiáng),并且可能應(yīng)用于視頻而非靜止照片。
圖像分析的一重要領(lǐng)域是邊界或邊界檢測(cè)。邊界檢測(cè)涉及估計(jì)圖像中區(qū)域之間的邊界的位置。那些區(qū)域可能對(duì)應(yīng)于要在該圖像中表示的、如觀看者察覺(jué)的目標(biāo)。一旦評(píng)估出邊界的位置,就可以在該圖像上執(zhí)行附加處理。在一個(gè)示例中,該附加處理可以涉及以明亮的顏色加亮邊界,以便引起對(duì)目標(biāo)的注意。這可以有用于向車輛提供夜視能力。在第二示例中,附加處理可以涉及重新著色圖像中的被邊界包圍的區(qū)域,以便創(chuàng)建可視效果。在第三示例中,附加處理可以涉及根據(jù)單個(gè)圖像或者根據(jù)按不同位置拍攝的相似場(chǎng)景的一系列圖像,來(lái)推斷已經(jīng)評(píng)估了邊界的目標(biāo)之間的三維關(guān)系。
盡管邊界檢測(cè)可以提供許多優(yōu)點(diǎn),但其是復(fù)雜問(wèn)題,而且特別難于在具有相對(duì)較小計(jì)算功率的裝置上實(shí)現(xiàn)。其示例是,當(dāng)要在移動(dòng)電話上執(zhí)行邊界檢測(cè)時(shí),移動(dòng)電話的計(jì)算功率增加,但該計(jì)算功率仍非常有限,而且因?yàn)橐苿?dòng)電話通過(guò)電池供電,所以希望最小化它們?cè)趫?zhí)行視頻處理方面所消耗能量的量,由此改進(jìn)電池壽命。
邊界檢測(cè)的示例在EP 2615597A、US 2014/072208、WO 2013/186662以及CN 103440644A中進(jìn)行了公開(kāi)。
在一些實(shí)現(xiàn)中,希望能夠?qū)崟r(shí)處理視頻數(shù)據(jù)。在該視頻由一系列幀組成的情況下,實(shí)時(shí)處理涉及按比連續(xù)幀之間的時(shí)段更少的時(shí)間(至少平均起來(lái))來(lái)處理該視頻的幀。在一個(gè)示例應(yīng)用中,一裝置具有:攝像機(jī),和可以顯示通過(guò)該攝像機(jī)拍攝的視頻流的顯示屏??赡芟M倏v所顯示的視頻流,例如,在所拍攝的視頻上覆蓋預(yù)先制備的圖形表述,其隨著攝像機(jī)變焦和搖攝(pan)而在顯示器上移動(dòng),以獲得它們?cè)诂F(xiàn)實(shí)生活中所呈現(xiàn)的幻影。
希望具有一種最小化為檢測(cè)圖像中的目標(biāo)和特征所需的計(jì)算功率的量的算法。希望這種算法在諸如移動(dòng)電話這樣的便攜式裝置上實(shí)現(xiàn),以分析具有合理分辨率的實(shí)時(shí)視頻中的幀。
根據(jù)本發(fā)明,提供了一種用于識(shí)別圖像中的特征的方法,該方法包括以下步驟:a)從第一位置,在遠(yuǎn)離所述第一位置的掃描方向上,沿掃描路徑掃描所述圖像,以便檢測(cè)所述圖像中的、處于第二位置的邊界;b)從所述第二位置,在沿所述邊界的第一方向上繪制由所述邊界限定的路徑,根據(jù)邊界質(zhì)量度量來(lái)繪制所述路徑;c)確定所繪制的路徑是否形成周界;以及d)如果所繪制的路徑形成周界,則從所繪制的路徑掃描所述圖像,以便檢測(cè)所述圖像中的另一邊界;或者,如果所繪制的路徑未形成周界,則在沿所述邊界的不同于所述第一方向的第二方向上,從所述第二位置繪制由所述邊界限定的路徑。
根據(jù)本發(fā)明第二方面,提供了一種裝置,該裝置包括:存儲(chǔ)器,該存儲(chǔ)器存儲(chǔ)非暫時(shí)程序代碼;和處理器,該處理器被配置成通過(guò)執(zhí)行所述代碼以執(zhí)行以下步驟來(lái)識(shí)別圖像中的特征:a)從第一位置,在遠(yuǎn)離所述第一位置的掃描方向上,沿掃描路徑掃描所述圖像,以便檢測(cè)所述圖像中的、處于第二位置的邊界;b)從所述第二位置,在沿所述邊界的第一方向上繪制由所述邊界限定的路徑,根據(jù)邊界質(zhì)量度量來(lái)繪制所述路徑;c)確定所繪制的路徑是否形成周界;以及d)如果所繪制的路徑形成周界,則從所繪制的路徑掃描所述圖像,以便檢測(cè)所述圖像中的另一邊界;或者,如果所繪制的路徑未形成周界,則在沿所述邊界的不同于所述第一方向的第二方向上,從所述第二位置繪制由所述邊界限定的路徑。
所述方法可以包括以下步驟:當(dāng)在所述第二方向繪制所述路徑時(shí),從所繪制的路徑掃描所述圖像,以檢測(cè)所述圖像中的另一邊界。
所述方法可以包括以下步驟:當(dāng)檢測(cè)所述圖像中的、處于第三位置的另一邊界時(shí),重復(fù)步驟b)至d),其中,所重復(fù)的步驟從所述第三位置執(zhí)行。
所述方法可以包括以下步驟:在跟蹤了邊界之后,確定所述邊界的周長(zhǎng)或長(zhǎng)度和/或所述邊界的復(fù)合質(zhì)量度量是否超出預(yù)定閾值;并且如果不是,則丟棄所述邊界。
所述方法可以包括以下步驟,從第四位置,在遠(yuǎn)離所述第四位置的所述掃描方向上,沿著第二掃描路徑掃描所述圖像,以便檢測(cè)所述圖像中的、處于第五位置的邊界,所述第四位置在垂直于所述掃描方向的方向上從所述第一位置偏移預(yù)定距離。
所述方法可以包括以下步驟,當(dāng)檢測(cè)到所述邊界時(shí),如果先前已經(jīng)繪制了所述邊界,則忽略所述邊界。
在掃描所述圖像的每一個(gè)步驟中,所述掃描方向可以是相同的。
所述圖像可以由多個(gè)像素組成。所述方法可以包括以下步驟:通過(guò)檢測(cè)像素位置之間的邊界來(lái)繪制路徑。所述質(zhì)量度量可以指示所述邊界在每一個(gè)邊界位置處的質(zhì)量。
所述方法可以包括以下步驟:估計(jì)針對(duì)所述圖像中的一組兩個(gè)相鄰像素位置中的每一個(gè)像素位置的屬性;就所述兩個(gè)像素位置來(lái)說(shuō),評(píng)估預(yù)定二元條件(binary condition)是否不同,并且如果是不同的,則確定所述圖像的、由所述兩個(gè)像素位置表示的部分中存在邊界。
所述邊界質(zhì)量度量可以是由相鄰像素導(dǎo)出的值。所述方法還可以包括以下步驟:確定所導(dǎo)出的值是大于還是小于預(yù)定閾值,并且如果大于,則將該邊界位置繪制為所述路徑的一部分;或者如果小于,則不將該邊界位置繪制為所述路徑的一部分。
所述像素位置的所述屬性可以基于:應(yīng)用至所述圖像并且以該像素位置為中心的高斯拉普拉斯(Laplacian of Gaussian)濾波器。
像素位置的屬性可以基于:在所述像素位置處并且針對(duì)高斯(Gaussian)的梯度方向來(lái)估計(jì)所述圖像的各向同性高斯卷積的二階導(dǎo)數(shù)。
像素位置的第二屬性可以基于:在所述像素位置處并且針對(duì)高斯的梯度方向來(lái)估計(jì)所述圖像的各向同性高斯卷積的三階導(dǎo)數(shù)。指定邊界位置處的邊界質(zhì)量度量可以是在所述邊界位置的任一側(cè)上針對(duì)所述兩個(gè)像素位置中的每一個(gè)像素位置的所述第二屬性的內(nèi)插。
所述圖像可以是視頻流的幀。
所述裝置可以包括攝像機(jī)。所述圖像可以是通過(guò)所述攝像機(jī)拍攝的圖像。
所述圖像可以是通過(guò)所述攝像機(jī)拍攝的視頻流的幀。
所述裝置可以被配置成,針對(duì)所述視頻流的連續(xù)幀實(shí)時(shí)執(zhí)行所述步驟。
下面,參照附圖,通過(guò)示例對(duì)本發(fā)明進(jìn)行描述。在圖中:
圖1例示了有關(guān)圖像的邊界檢測(cè)算法的一個(gè)示例實(shí)施方式的操作。
圖2例示了在圖1的圖像中檢測(cè)的邊界。
圖3示出了多組相鄰像素。
圖4示出了多組相鄰像素的閾值化屬性中的條件。
圖5例示了跟蹤圖像上的邊界。
圖6示出了由內(nèi)插或平均化點(diǎn)形成的邊界。
圖7例示了有關(guān)另一圖像的邊界檢測(cè)算法的操作。
圖8示出了適于圖像處理的裝置。
在一個(gè)示例算法中,圖像由布置在正交網(wǎng)格上的一組像素組成。分析該圖像中的一乘二區(qū)塊的相鄰像素位置,以評(píng)估邊界是否經(jīng)過(guò)其。如果未檢測(cè)到邊界,則該分析沿任意方向步進(jìn)至一新的一乘二區(qū)塊,直到發(fā)現(xiàn)邊界為止。當(dāng)在一個(gè)一乘二區(qū)域中檢測(cè)到邊界時(shí),該分析形成包括該一乘二區(qū)塊的二乘二區(qū)塊。其評(píng)估經(jīng)由該二乘二區(qū)域的邊界的方向,并且基于該邊界的方向步進(jìn)至按沿著所評(píng)估的檢測(cè)邊界的方向的相鄰二乘二區(qū)塊。依次分析該區(qū)塊,并且按類似方式,分析沿該邊界步進(jìn),直到該邊界被完全行進(jìn)或者到達(dá)圖像的邊緣為止。如下所述,已經(jīng)發(fā)現(xiàn)該算法能夠按高度有效的方式來(lái)實(shí)現(xiàn)。
在一個(gè)實(shí)施方式中,本發(fā)明提供了一種用于在不處理整個(gè)圖像的情況下,可靠地檢測(cè)圖像中的邊界/輪廓的方法。
圖像可以被視為由像素的網(wǎng)絡(luò)形成。對(duì)于任何水平和垂直位置x、y來(lái)說(shuō),可以定義返回實(shí)數(shù)的“邊界函數(shù)”b(x,y)。該函數(shù)b(x,y)可以根據(jù)使用情況不同地定義,但優(yōu)選地滿足下列約束條件:
-對(duì)于任何指定x、y以及圖像來(lái)說(shuō),每當(dāng)計(jì)算該函數(shù)時(shí),該函數(shù)生成相同結(jié)果;和
-該函數(shù)輸出至少大致連續(xù)(如果希望子像素準(zhǔn)確邊界檢測(cè),則相關(guān))。
該函數(shù)b(x,y)可以被定義成,使得兩個(gè)相鄰的像素位置(對(duì)于其來(lái)說(shuō),一個(gè)具有負(fù)b(x,y),而另一個(gè)具有非負(fù)b(x,y),或者更一般地說(shuō),對(duì)于其來(lái)說(shuō),施加在b(x,y)上的二元條件針對(duì)這兩個(gè)相鄰像素位置中的每一個(gè)生成不同的值)被解釋為在它們之間具有邊界。
對(duì)于b(x,y)的實(shí)現(xiàn)有利的是,一旦其已經(jīng)針對(duì)鄰近像素位置進(jìn)行了計(jì)算,就更快速計(jì)算。
通過(guò)掃描邊界,并接著在發(fā)現(xiàn)時(shí)跟隨邊界,可以在不需要針對(duì)該圖像中的每一個(gè)像素位置計(jì)算b(x,y)的情況下來(lái)繪制(map)邊界。
在該方法的第一例程中,掃描該圖像以檢測(cè)邊界。這可以通過(guò)如下方式來(lái)進(jìn)行:采用任意一組相鄰像素位置,計(jì)算它們的b(x,y),以及檢查就每一個(gè)來(lái)說(shuō)該二元條件是否不同(在該情況下,其間存在邊界交叉(border crossing))??梢愿鶕?jù)使用情況來(lái)改變?cè)谄渲胁蓸佣嘟M相鄰像素位置的圖案。然而,普遍有利的是,沿垂直或水平線掃描。這種線可以在該圖像中按間隔隔開(kāi)。在這種布置中,不掃描每一組兩個(gè)直接相鄰像素位置,從而可能錯(cuò)過(guò)一些邊界。然而,已經(jīng)發(fā)現(xiàn),合適地選擇掃描線之間的間隔(例如,32像素或更少),正常情況下不會(huì)錯(cuò)過(guò)圖像的主要特征,并且具有超過(guò)針對(duì)該圖像中的每一個(gè)像素位置計(jì)算b(x,y)的極大性能優(yōu)點(diǎn)。
一旦檢測(cè)到交叉,該方法就繼續(xù)進(jìn)行至跟蹤該邊界的第二例程。假設(shè)兩個(gè)相鄰像素位置在它們之間具有邊界,可以開(kāi)始跟蹤該邊界。可以任意地預(yù)定用于該處理的兩個(gè)準(zhǔn)則:
1、左手或右手“偏置(bias)”。如果保持該偏置,則邊界可以按預(yù)定方式周游(circumnavigated),該跟蹤例程返回至其開(kāi)始的地方。
2、要首先跟隨該邊界的方向。應(yīng)注意到,在某些使用情況下,希望不周游該邊界至其起始點(diǎn)。在那些情況下,可能希望從首先檢測(cè)到該邊界的點(diǎn)沿兩個(gè)方向跟蹤。
假設(shè)應(yīng)用至像素位置的屬性的二元條件導(dǎo)致貢獻(xiàn)于所考慮的每一個(gè)像素位置的負(fù)值或正值,并且該邊界要圍繞非負(fù)區(qū)域順時(shí)針被跟隨,意味著在右側(cè)總是具有非負(fù)值,而在左側(cè)總是具有負(fù)值。假設(shè)將該偏置選擇成為右手偏置。跟蹤該邊界接著跟隨該圖案:
1、假設(shè)兩個(gè)相鄰像素位置s0和s1,分別具有負(fù)b(x,y)和非負(fù)b(x,y);
2、在選定的跟蹤方向上,采用相鄰組的兩個(gè)相鄰像素位置n0和n1,它們本身分別與s0與s1相鄰。
3、如果n0與n1都具有非負(fù)值,則向左移動(dòng)(針對(duì)當(dāng)前方向)。如果兩者都具有負(fù)值,則向右移動(dòng)。如果n0具有負(fù)值,而n1具有非負(fù)值,則向前移動(dòng)。最后,如果n0具有非負(fù)值,而n1具有負(fù)值,則根據(jù)上述“偏置”確定下一個(gè)方向;在這種情況下,因所選定的偏置而向右移動(dòng)。
4、最后,下一組相鄰像素位置s0與s1被選定如下。如果向前移動(dòng),則:n0和n1。如果向左移動(dòng),則:s0和n0。如果向右移動(dòng),則:n1和s1。
5、轉(zhuǎn)向步驟1,并且針對(duì)新的s0和s1重復(fù)。
當(dāng)s0和s1再一次相同時(shí),以兩個(gè)相鄰像素位置開(kāi)始,循環(huán)并且回到開(kāi)頭。
在該處理期間,針對(duì)上述步驟的每一次迭代,記錄邊界點(diǎn)。這沿著該邊界順序生成一組點(diǎn),在這種情況下,圍繞非負(fù)區(qū)按順時(shí)針?lè)较颉?/p>
怎樣記錄每一個(gè)邊界點(diǎn)可以根據(jù)是否期望子像素準(zhǔn)確(sub-pixel-accurate)而不同。在非子像素準(zhǔn)確變型例中,每一個(gè)邊界位置在步驟2之后均可以被視為四個(gè)像素位置的平均值。如果該像素被視為處于整數(shù)位置,則任何邊界位置的每一個(gè)組元將為整數(shù)加0.5。如果該邊界函數(shù)b(x,y)大致連續(xù),并且希望子像素準(zhǔn)確邊界檢測(cè),則針對(duì)每一次迭代,可以代替地記錄邊界點(diǎn)如下。對(duì)于每一組相鄰像素位置s0和s1來(lái)說(shuō),線性地內(nèi)插它們的位置,以評(píng)估b(x,y)的零交叉的真實(shí)點(diǎn)。因而,例如,如果s0的值為-1而s1的值為2,則所得邊界點(diǎn)將為s0的位置乘2/3加s1的位置乘1/3.
圖1示出了用于例示下面更詳細(xì)描述的邊界檢測(cè)處理的一般原理的示例性圖像。該圖像包含不同于背景場(chǎng)3的區(qū)域1、2。該區(qū)域1、2被視為以邊界為界。希望檢測(cè)那些邊界,例如,出于特征化該圖像的目的。選擇該圖像上的任意位置4,與初始默認(rèn)掃描方向一起,如在5處示出的。該位置可以便利地靠近該圖像的角部,但其不需要這樣。該初始掃描方向便利地平行于該圖像的像素所位于的軸,但不需要這樣。該處理涉及從起始位置4沿初始掃描方向5步進(jìn)通過(guò)圖像。在每一個(gè)步驟,對(duì)該圖像的局部區(qū)域進(jìn)行分析,以評(píng)估其是否包含邊界。下面,對(duì)該分析進(jìn)行更詳細(xì)描述。
在圖1的示例中,該掃描初始跟隨路徑6。一旦遇到該圖像的邊緣(在7處),掃描就沿同一方向但從該圖像的相對(duì)側(cè)上的一點(diǎn)繼續(xù),并且偏移達(dá)垂直于該初始掃描方向5的預(yù)定距離8。接著,掃描在9處繼續(xù),直到在10處遇到邊界為止。接著,啟動(dòng)跟蹤處理,以周游檢測(cè)到的邊界,如在11處所示。隨著跟隨該邊界,可以存儲(chǔ)該邊界上的點(diǎn)的位置,以供稍后使用。在一個(gè)示例中,一旦跟蹤返回至第一次檢測(cè)到該邊界的點(diǎn)10,其就從點(diǎn)12重新開(kāi)始,該點(diǎn)12是遇到邊界的路徑9的延伸,但處于該邊界的、與遇到其的位置相對(duì)的較遠(yuǎn)側(cè)。接著,掃描沿路徑13和14按類似方式繼續(xù)。當(dāng)在15處再次遇到同一邊界時(shí),就可以忽略其,并且掃描從點(diǎn)16重新開(kāi)始,該點(diǎn)16是遇到邊界的路徑14的延伸,但處于該邊界的、與遇到其的位置相對(duì)的較遠(yuǎn)側(cè)。通過(guò)按類似方式繼續(xù),該處理可以檢測(cè)區(qū)域1和2的邊界,并且生成一組存儲(chǔ)邊界位置,如圖2中所示。在其它示例中,掃描可以在該圖像中的其它地點(diǎn)和/或方向繼續(xù)。
可以根據(jù)所需準(zhǔn)確度水平、該圖像中的希望細(xì)節(jié)、可以用于處理該圖像的時(shí)間量以及正在運(yùn)行該算法的裝置的處理能力中的任一個(gè)或更多個(gè),來(lái)設(shè)置偏移8。例如,為了加速該處理,可以選擇更大的值用于偏移8。
本算法具有兩個(gè)獨(dú)特例程。在第一例程中,掃描該圖像,直到檢測(cè)到邊界為止。該掃描便利地沿一直線一次步進(jìn)一個(gè)像素位置,但該掃描可以在直線以外的其它線上,或者按一個(gè)以上像素位置的步幅。在該掃描處理中的每一個(gè)步驟,該算法確定是否存在邊界。如果存在邊界,則其確定其中要跟隨該邊界的方向。接著執(zhí)行第二例程,其繞該邊界環(huán)行,如圖1中的11所示。下面,對(duì)這樣進(jìn)行的機(jī)制進(jìn)行描述。
在第一例程中,考慮到相互相鄰像素的一乘二區(qū)塊,進(jìn)行邊界存在的評(píng)估,每一個(gè)像素均處于相應(yīng)像素位置。例如,圖3示出了在正交軸上對(duì)準(zhǔn)的一組像素。在第一例程的第一次迭代中,該算法已經(jīng)到達(dá)像素位置20和21??梢曰谀切┫袼匚恢脕?lái)執(zhí)行對(duì)該圖像的分析,以評(píng)估那里是否存在邊界。
如果不存在邊界,則沿當(dāng)前掃描方向步進(jìn)至下一對(duì)像素位置,即,步進(jìn)至像素位置21和24。在第一例程的第二次迭代中,基于那些像素位置來(lái)執(zhí)行對(duì)該圖像的分析,以評(píng)估那里是否存在邊界。如果邊界被確定存在于像素位置21、24處,則評(píng)估該邊界的方向,并且該處理開(kāi)始重復(fù)第二例程,以便圍繞該邊界跟蹤。
在第二例程中,考慮二乘二區(qū)塊像素。對(duì)于第二例程中的第一次迭代來(lái)說(shuō),選擇與兩個(gè)當(dāng)前像素位置相鄰并且在該邊界的評(píng)估方向上相對(duì)于它們偏移的兩個(gè)像素位置。那些可以是像素位置23和25。該算法執(zhí)行分析那些像素位置,以評(píng)估該邊界的下一方向。對(duì)于第二例程中的第二次迭代來(lái)說(shuō),選擇與四個(gè)當(dāng)前像素位置相鄰并且在該邊界的評(píng)估方向上相對(duì)于它們偏移的兩個(gè)像素位置(那些可以是像素位置28和29)。在第二例程的第二次迭代中,該算法執(zhí)行對(duì)那些像素位置的分析,以評(píng)估該邊界的下一方向。該算法按該方式繼續(xù)進(jìn)行,跟蹤該邊界,直到其返回初始一組兩個(gè)相鄰像素位置,在該情況下,已經(jīng)周游該邊界。接著,第二例程可以結(jié)束,并且第一例程可以重新開(kāi)始。在第二例程的每一個(gè)步驟,該算法在平行于正交像素軸之一的方向上,按一個(gè)像素的距離步進(jìn)。該結(jié)果是針對(duì)需要分析的任何像素位置,已經(jīng)預(yù)先立即或者幾乎立即分析了相鄰像素位置(除了該掃描例程中的完全第一像素位置以外)。這可以提供顯著的效率優(yōu)點(diǎn)。為了針對(duì)像素位置執(zhí)行分析,必須收集與其屬性有關(guān)的信息。收集該信息可以消耗相當(dāng)多的處理功率。在所描述的處理中,函數(shù)b(x,y)可以被定義和實(shí)現(xiàn)成,使得如果其已經(jīng)針對(duì)相鄰位置計(jì)算,則針對(duì)指定像素位置計(jì)算b(x,y)顯著更快。
被用于幫助檢測(cè)邊界的存在的像素位置的屬性,可以取決于分析該圖像的目的。例如,如果在該圖像的亮部與暗部之間尋找邊界,則該屬性可以基于該像素的亮度值。如果在基于藍(lán)色的區(qū)域之間尋找邊界,則該屬性可以基于每一個(gè)像素的藍(lán)色強(qiáng)度值。在實(shí)踐中,該屬性有用于更復(fù)雜的度量,如高斯的二階變化率(導(dǎo)數(shù))(例如,有關(guān)梯度方向),或者高斯拉普拉斯,或其近似值(基于針對(duì)所討論的像素位置周圍的像素的圖像特性(如亮度))。下面,對(duì)其進(jìn)行更詳細(xì)描述。
如上所示,在每一個(gè)步驟中,一乘二或二乘二區(qū)塊的像素位置在考慮之中。針對(duì)該區(qū)塊中的每一個(gè)像素的相關(guān)屬性被加以考慮,并且針對(duì)預(yù)定閾值對(duì)其加以評(píng)估。例如,如果該屬性是亮度,則該閾值可能是可用亮度標(biāo)度的50%。對(duì)于該區(qū)塊中的每一個(gè)像素來(lái)說(shuō),進(jìn)行有關(guān)針對(duì)該像素的屬性是高于還是低于該閾值的確定。便利的是,根據(jù)每一個(gè)屬性形成一布爾(Boolean)值,并且如果該布爾值在兩個(gè)像素位置之間不同,則考慮它們之間存在邊界。
圖4例示了針對(duì)該分析結(jié)果的典型可能性。圖4示出了二乘二區(qū)塊的相互相鄰像素,其中,高于該閾值的像素以陰影示出,而低于該閾值的像素?zé)o陰影地示出。假定,在每一種情況下,初始跟蹤方向是向右側(cè),并且該二乘二區(qū)塊已經(jīng)從左手側(cè)接近。該跟蹤算法被配置成,在左手側(cè)隨著高于該閾值的像素而橫穿該邊界。圖4a示出了這樣的情況,即,其中最新一乘二區(qū)塊中的兩個(gè)像素(即,二乘二區(qū)塊4a右側(cè)的像素對(duì))高于該閾值。在該情況,該跟蹤算法向右轉(zhuǎn),如40處所示。圖4b示出了這樣的情況,即,其中最新一乘一區(qū)域中的一個(gè)像素高于該閾值而一個(gè)低于該閾值,并且其中那些像素中的每一個(gè)像素與同一類型的、根據(jù)前一迭代保持的像素對(duì)中的一像素相鄰(即,二乘二區(qū)塊4b左側(cè)的像素對(duì))。在該情況下,該跟蹤算法按和以前相同的方向繼續(xù),如41處所示。圖4c示出了最新一乘二區(qū)塊中的兩個(gè)像素低于該閾值的情況。在該情況,該跟蹤算法向左轉(zhuǎn),如42處所示。圖4d示出了這樣的情況,即,最新一乘二區(qū)域中的一個(gè)像素高于該閾值而一個(gè)像素低于該閾值,并且其中那些像素中的每一個(gè)像素與相反類型的、根據(jù)前一迭代保持的像素對(duì)中的一像素相鄰。在該情況下,該跟蹤算法根據(jù)預(yù)定偏置繼續(xù),或者向左轉(zhuǎn)(如43所示)或者向右轉(zhuǎn)(如44所示)。如果當(dāng)前一乘二區(qū)塊產(chǎn)生圖4d所示的形式的情況,由高于該閾值的兩個(gè)不相鄰像素和低于該閾值的兩個(gè)不相鄰像素構(gòu)成,則可能指示該邊界分叉或者兩條邊界相遇。共同地,該行為實(shí)現(xiàn)上面編號(hào)步驟3中描述的邏輯。在每一種情況下,該跟蹤路徑采用一新路徑,其保持該邊界同一側(cè)的、同一類型的像素(高于/低于該閾值)。
在第一例程的每一個(gè)步驟(其掃描該圖像以檢測(cè)邊界),評(píng)估當(dāng)前一乘二區(qū)塊。如果在當(dāng)前一乘二區(qū)塊中未檢測(cè)到邊界,則該掃描在當(dāng)前掃描方向上步進(jìn)一個(gè)像素,并且評(píng)估下一個(gè)一乘二區(qū)塊,如上參照?qǐng)D1所述。如上所示,該新的一乘二區(qū)塊僅包括一個(gè)新像素位置,因而,僅需要分析一個(gè)像素位置。
在第一例程和第二例程中,如果檢測(cè)到邊界,則評(píng)估并存儲(chǔ)其位置。該邊界的位置可以按許多方式來(lái)評(píng)估。所存儲(chǔ)的位置可以是所考慮的一乘二區(qū)域或二乘二區(qū)塊的幾何中心,即,該區(qū)塊的像素位置的平均值:例如,針對(duì)由像素21、23、24、25構(gòu)成的二乘二區(qū)塊的位置27(參見(jiàn)圖3)。在另一示例中,該邊界的位置可以被評(píng)估為這樣的點(diǎn),即,當(dāng)前一乘二區(qū)塊(或者在其它實(shí)施方式中,當(dāng)前二乘二區(qū)塊)的像素位置的所確定的屬性之間的插值將與預(yù)定值相交的點(diǎn)。該插值可以是線性插值。
其中該邊界被評(píng)估行進(jìn)的方向,便利地與(i)當(dāng)前二乘二區(qū)塊中的推斷邊界平行,并且(ii)被遠(yuǎn)離當(dāng)前二乘二區(qū)塊中心地引導(dǎo)。這種方向在圖4中以40-44示出。一種便利方法是,將要跟蹤其邊界的地帶處理為高于該閾值的區(qū)域,選擇的方向是左側(cè)上具有高于該閾值的一像素或多個(gè)像素的方向。在其它實(shí)施方式中,選擇的方向可以是右側(cè)上具有高于該閾值的一像素或多個(gè)像素的方向。
當(dāng)該跟蹤到達(dá)其中已經(jīng)檢測(cè)到邊界的位置時(shí),對(duì)邊界的跟隨可以停止。如果由于該跟蹤到達(dá)第一次檢測(cè)到當(dāng)前邊界的點(diǎn),則跟蹤該邊界可以認(rèn)為完成。接著,該算法繼續(xù)進(jìn)行,以基于上述原理,從圖4d所示類型的任何一乘二區(qū)塊(其在該邊界行進(jìn)期間檢測(cè)到)掃描。接著,該算法可以從該邊界的較遠(yuǎn)側(cè)繼續(xù),如圖1中的12所示,以便檢測(cè)其它邊界。如果跟蹤邊界遇到該圖像的邊緣,或者另一先前存儲(chǔ)邊界,則跟蹤可以從第一次遇到當(dāng)前跟蹤邊界的點(diǎn),按相反方向重新開(kāi)始。按相反方向的跟蹤可以便利地通過(guò)采用用于選擇新跟蹤方向的反指向(opposite sense)來(lái)實(shí)現(xiàn):例如,左側(cè)上高于該閾值的像素,如與右側(cè)上高于該閾值的像素相對(duì)。這可以允許該算法完全跟蹤未形成完整回路的邊界。
參照?qǐng)D5,對(duì)邊界跟蹤處理的示例進(jìn)行描述。圖5示出了像素的正交網(wǎng)絡(luò),其中,其屬性高于該閾值的像素以陰影示出。圖5中的像素用網(wǎng)格基準(zhǔn)表示。
掃描開(kāi)始考慮像素位置A2和B2,并且掃描方向?yàn)橄蛴覀?cè),如在51處所示。分析像素位置A2和B2。這兩個(gè)像素位置的屬性處于該閾值的同一側(cè),因而,掃描方向無(wú)變化。接著,分析像素位置B2和C2。在B2與C2之間檢測(cè)到邊界,上下引導(dǎo),因而,基于在右側(cè)保持高于該閾值的屬性的預(yù)定選擇,隨著跟隨該邊界,考慮下一像素位置B1和C1。它們的屬性低于該閾值,因而,下一方向被確定為向右。接著,考慮像素位置D1和D2。該算法按這種方式繼續(xù)進(jìn)行,直到已經(jīng)周游該邊界為止。
在檢測(cè)到邊界的每一個(gè)步驟,存儲(chǔ)邊界位置。在這個(gè)示例中,邊界位置被存儲(chǔ)為每一個(gè)二乘二區(qū)塊的像素位置的幾何中心,在上述示例中前兩個(gè)是(B1+C1+B2+C2)/4和(C1+D1+C2+D2)/4。這些位置用空心圓(open circle)指示,如圖5所示。
如上所示,僅兩個(gè)像素位置的屬性需要在第二例程的每一個(gè)步驟加以計(jì)算。一個(gè)二乘二區(qū)塊中的另兩個(gè)像素位置的屬性可以從前一步驟存儲(chǔ)。這可以幫助使該算法更有效。先前考慮的任何像素位置的屬性可以無(wú)限地存儲(chǔ),但是已經(jīng)發(fā)現(xiàn),對(duì)于計(jì)算和存儲(chǔ)來(lái)說(shuō),相對(duì)有效的是,保留僅針對(duì)兩個(gè)接連考慮的二乘二區(qū)塊所共同具有的兩個(gè)像素的屬性。
便利的是,圍繞該邊界,按每一個(gè)步驟存儲(chǔ)一位置,使得該邊界可以稍后進(jìn)行處理,和/或使得可以獲知何時(shí)完全繪制了該邊界。這樣的做的一個(gè)方法是,按每一個(gè)這種位置,存儲(chǔ)已經(jīng)檢測(cè)到其間的邊界的最后兩個(gè)像素的中心的平均值。在圖4的示例中,這將會(huì)是圖4a中的下側(cè)兩個(gè)像素、圖4b中的右手側(cè)兩個(gè)像素等。另一選項(xiàng)是基于該像素的屬性在該像素的中心之間插值,最便利的是,應(yīng)用和二元決定相同的屬性,以便確定該邊界的存在。例如,假設(shè)一個(gè)像素位置是x=20、y=40,并且具有屬性-9,而相鄰像素位置是x=21、y=40并且具有屬性2。該二元測(cè)試可以是,該屬性是否超出一閾值,如零。在其基礎(chǔ)上,可以在這些像素位置之間確定邊界。該平均位置為20.5、40。該插值可以評(píng)估:按一子像素水平,在位置20、40具有值-9,并且在位置21、40具有值2的直線將與一預(yù)定值相交的地方。便利地講,其是和在二元測(cè)試中使用的預(yù)定值相同的預(yù)定值,在這種情況下,為零,其意指,該插值化位置為20、82、40。圖6例示了這在實(shí)際中的效果。圖6示出了這樣一組像素,其包括屬性高于預(yù)定閾值的陰影像素位置的區(qū)域71。由線段(其中一些指定了73)組成的路徑示出了區(qū)域70的邊界,其被確定為在圍繞該區(qū)域71的邊界行進(jìn)的、接連二乘二區(qū)塊的中心上的插值化點(diǎn)72之間延伸的路線。由線段73構(gòu)成的路徑示出了區(qū)域71的邊界,其被確定為,在已經(jīng)圍繞區(qū)域71檢測(cè)到邊界的每一個(gè)一乘二區(qū)塊的像素位置的屬性之間插值化或平均化的點(diǎn)(其中一些被指示為72)之間延伸的路線。如上所示,已經(jīng)發(fā)現(xiàn),通過(guò)連接根據(jù)該像素位置的原始或未閾值化屬性確定的點(diǎn)(例如,插值化)所形成的路徑,與根據(jù)原始像素位置形成的路徑相比,顯著更多地表示圖像的內(nèi)容。
值得注意的是,根據(jù)插值化或平均化點(diǎn)形成邊界的處理涉及:檢測(cè)邊界的存在,并且簡(jiǎn)單地基于所考慮的像素位置的相關(guān)屬性是否超出閾值來(lái)跟隨其,但基于針對(duì)那些像素中的每一個(gè)像素的屬性的實(shí)際值來(lái)評(píng)估該邊界的位置。已經(jīng)發(fā)現(xiàn)該方法相對(duì)地在計(jì)算上有效,并且還相對(duì)代表圖像內(nèi)容。
可以根據(jù)希望分析的特征,來(lái)選擇在上述處理中使用的每一個(gè)像素位置的屬性。在一些示例中,該屬性可以單獨(dú)取決于單個(gè)像素的值:例如,其亮度或色調(diào)。在其它示例中,可以通過(guò)還取決于相鄰像素的值的函數(shù)來(lái)確定像素的屬性。在后一種情況下,該算法可變,以允許增加或降低遠(yuǎn)離所討論的像素的像素的相對(duì)影響??梢酝ㄟ^(guò)求和針對(duì)與所討論像素相鄰的一組像素所計(jì)算的中間值來(lái)確定該屬性。那些相鄰值的范圍可以改變。例如可以根據(jù)所考慮圖像的細(xì)節(jié)水平、聚焦或范圍來(lái)選擇該范圍。每一個(gè)中間值均可以通過(guò)根據(jù)加權(quán)算法確定的加權(quán)因子來(lái)加權(quán)。在一個(gè)優(yōu)選示例中,可以借助于高斯拉普拉斯過(guò)濾器來(lái)確定每一個(gè)像素的屬性,該高斯拉普拉斯可以通過(guò)確定與所討論像素相鄰的像素的密度的加權(quán)和來(lái)計(jì)算,根據(jù)集中于所討論像素的高斯拉普拉斯過(guò)濾器來(lái)確定權(quán)重。隨著所討論的像素處于x=0,y=0,高斯拉普拉斯過(guò)濾器向x、y處的像素賦予加權(quán):
其中,σ表示高斯標(biāo)準(zhǔn)偏差,影響了利用從所討論像素的半徑的函數(shù)的加權(quán)。該加權(quán)可以預(yù)先計(jì)算,并且存儲(chǔ)在查尋表中,以供在要計(jì)算指定像素的屬性時(shí)使用。針對(duì)σ的值范圍的加權(quán)可以預(yù)先計(jì)算和存儲(chǔ),并且在要按恰當(dāng)細(xì)節(jié)水平分析該圖像時(shí)在恰當(dāng)時(shí)候應(yīng)用。為方便起見(jiàn),可以將該加權(quán)近似。在評(píng)估特定像素位置的屬性時(shí),該加權(quán)可以僅便利地應(yīng)用至以該像素位置為中心的方塊(即,其的邊具有相等像素長(zhǎng)度)的像素,并由此不應(yīng)用至該區(qū)塊外側(cè)的像素。這可以簡(jiǎn)化該計(jì)算。
該高斯拉普拉斯是供在本系統(tǒng)中使用的便利過(guò)濾器,因?yàn)槠溱呌趶?qiáng)調(diào)邊界。具有相似特性的其它過(guò)濾器(包括但不限于高斯差分(difference-of-Gaussians)、海賽行列式(determinant of Hessian)、Sobel、Canny以及Canny-Deriche)可以單獨(dú)使用或者與其它函數(shù)組合使用,來(lái)確定像素位置的屬性。
圖7示出了用于例示根據(jù)另一實(shí)施方式的邊界檢測(cè)處理的另一示例圖像。在這個(gè)實(shí)施方式中,對(duì)是否在每一個(gè)跟蹤步驟繪制邊界位置的確定取決于在該步驟邊界的強(qiáng)度或質(zhì)量。繪制例如會(huì)涉及利用該位置識(shí)別來(lái)圖像中的特征和/或存儲(chǔ)邊界位置。
在該掃描處理中的每一個(gè)步驟,該算法確定是否存在邊界。評(píng)估邊界的存在或方向還可以包括:確定所檢測(cè)的邊界的強(qiáng)度或質(zhì)量?;谠摯_定,邊界例如可以被分類為高質(zhì)量或低質(zhì)量,并且該算法可以決定僅考慮高質(zhì)量邊界。這可以幫助改進(jìn)特征檢測(cè),因?yàn)橹T如陰影和噪聲這樣的特征具有差質(zhì)量邊界,并由此可以被丟棄。
與圖1類似,圖7的圖像包含不同于背景場(chǎng)3的區(qū)域1、2。另外,圖7還包含線90。線90例如可以是該圖像中的一物體,或者在圖像拍攝或處理期間生成的偽像或噪聲。線90與區(qū)域1和2的不同之處在于,用于線90的邊界不形成圍繞一區(qū)域的連續(xù)周界。
如上所述,掃描該圖像,直到在10處遇到邊界為止。接著跟蹤該邊界,如在11處所示。在每一個(gè)跟蹤步驟,評(píng)估區(qū)域1與3之間的邊界的質(zhì)量。在這個(gè)示例中,邊界的質(zhì)量高,并由此,繪制并跟隨該邊界。一旦跟蹤返回至第一次檢測(cè)到該邊界的點(diǎn)10,就確定所繪制路徑形成圍繞區(qū)域1的周界,并且掃描從點(diǎn)10重新開(kāi)始,該點(diǎn)10是第一次檢測(cè)到該邊界的點(diǎn)。
在91處再次遇到邊界,并且按類似方向跟蹤并跟隨該邊界,如在92處所示,如在10處的先前邊界。該跟蹤到達(dá)點(diǎn)93,其中,確定該邊界質(zhì)量是差的。從該點(diǎn)起的邊界不再被跟蹤并且不繪制。該跟蹤接著返回至點(diǎn)91,并且沿相反方向跟蹤并繪制該邊界(如94處所示)至95(線90在此結(jié)束)。接著,針對(duì)另一些邊界的掃描在該掃描方向上從點(diǎn)91重新開(kāi)始。
在每一個(gè)步驟確定的邊界的質(zhì)量可以取決于該像素位置或多個(gè)位置的屬性,其被用于幫助檢測(cè)該邊界的存在。例如,如果該屬性是像素位置的亮度值,則垂直于該邊界的像素位置的亮度變化量可以用于確定邊界質(zhì)量。可以根據(jù)那些像素評(píng)估一階導(dǎo)數(shù),以計(jì)算梯度量值,其接著可以指示該邊界的質(zhì)量??梢葬槍?duì)預(yù)定閾值來(lái)評(píng)估該梯度量值,以確定該邊界是否具有足夠質(zhì)量。該質(zhì)量確定可以被應(yīng)用至其它屬性,如在描述的那些。
如上所述,評(píng)估邊界的存在或方向可以在考慮兩個(gè)相互相鄰像素位置的區(qū)塊的情況下來(lái)進(jìn)行。如果這兩個(gè)相鄰像素位置之一具有高于預(yù)定閾值的屬性值,而另一個(gè)具有低于該預(yù)定閾值的屬性值,則這可以指示這兩個(gè)像素位置之間的某處存在邊界。例如,該像素位置的屬性可以基于針對(duì)高斯的梯度方向來(lái)評(píng)估該圖像的各向同性高斯卷積的二階導(dǎo)數(shù)。該邊界質(zhì)量度量可以基于針對(duì)這兩個(gè)像素位置中的每一個(gè)希望位置,針對(duì)高斯的梯度方向的該圖像的各向同性高斯卷積的三階導(dǎo)數(shù)。在這種情況下,該三階導(dǎo)數(shù)是其中更高值指示更好質(zhì)量邊界的標(biāo)量值。
為簡(jiǎn)化該邊界檢測(cè)和存儲(chǔ),該系統(tǒng)可以忽略尺寸低于預(yù)定閾值的邊界。該尺寸可以被限定為邊界周長(zhǎng)或長(zhǎng)度。如果邊界被周游一次證明低于該預(yù)先限定最小尺寸,則其不被存儲(chǔ)而是被丟棄。
隨著每一個(gè)邊界被繪制,存儲(chǔ)沿邊界長(zhǎng)度的點(diǎn)。這允許稍后確定是否已經(jīng)發(fā)現(xiàn)邊界,并且一旦完成了算法,就提供該圖像中的邊界的記錄。
一旦已經(jīng)定位了該邊界,就可以接著采取任何合適處理。
在第一示例中,可以修改該圖像,以加亮所檢測(cè)邊界的位置,例如,按醒目的顏色。接著,可以顯示所得的圖像。這可以有用于在車輛中加亮通過(guò)安裝在該車輛上的攝像機(jī)觀察的道路的邊界。
在第二示例中,對(duì)應(yīng)于一區(qū)域的圖像的區(qū)域可以被變換,并且可以顯示所得的圖像。向該區(qū)域外邊界內(nèi)但在該區(qū)域任何內(nèi)邊界外側(cè)的區(qū)域應(yīng)用該變換。該變換例如可以是照亮或變暗該區(qū)域,向該區(qū)域應(yīng)用一畫面,或者改變?cè)搮^(qū)域的色度。如果將該區(qū)域照亮或變暗,則該區(qū)域中的每一個(gè)點(diǎn)處的色度可以保持無(wú)變化。這可以給人照亮或遮蔽該區(qū)域的印象。如果該區(qū)域的色度改變,則該區(qū)域中的每一個(gè)點(diǎn)處的亮度可以保持無(wú)變化。這可以給人重新著色該區(qū)域的印象。這是有用的,例如,用于模擬用某一顏色涂抹該區(qū)域。
利用在此描述的算法,該視頻的每一個(gè)幀均可以實(shí)時(shí)處理、變換以及顯示。
圖8例示了用于實(shí)現(xiàn)上述方法的裝置。該裝置包括外殼80,在外殼80中有攝像機(jī)81、顯示器82、處理器83、非易失性存儲(chǔ)器或ROM 84、以及工作存儲(chǔ)器或RAM 85。該裝置通過(guò)電池86供電。在這個(gè)示例中,顯示器82是觸摸屏,因而,其向處理器83提供用戶輸入并通過(guò)處理器來(lái)驅(qū)動(dòng),但可以設(shè)置分離小鍵盤。ROM 84存儲(chǔ)可通過(guò)處理器執(zhí)行的程序代碼。該程序代碼以非暫時(shí)形式存儲(chǔ)。該程序代碼可通過(guò)處理器執(zhí)行以執(zhí)行上述功能。在操作中,處理器可以從攝像機(jī)81或者從遠(yuǎn)程通信收發(fā)器87接收?qǐng)D像。在前一情況下,該圖像可以是通過(guò)攝像機(jī)拍攝該裝置位置處的環(huán)境的圖像。在后一情況下,該圖像可以從因特網(wǎng)下載。該處理器將該圖像存儲(chǔ)在RAM 85中。該圖像可以顯示在顯示器82上。一旦將該圖像存儲(chǔ)在RAM中,處理器就可以利用如上所述的算法來(lái)分析該圖像。接著,根據(jù)該分析的結(jié)果,該處理可以根據(jù)所存儲(chǔ)的程序代碼來(lái)執(zhí)行進(jìn)一步操作。例如,可以將該圖像改變成加亮所檢測(cè)的邊界。另選的是,可以重新著色一個(gè)或更多個(gè)所檢測(cè)的邊界內(nèi)部的區(qū)域,例如,響應(yīng)于用戶借助于該觸摸屏選擇的那些區(qū)域。另選的是,用戶可以選擇那些區(qū)域之一,并且處理器可以識(shí)別被所檢測(cè)的邊界包圍并且具有和選定區(qū)域一樣的屬性(例如,與選定區(qū)域的平均色度不同達(dá)小于預(yù)定閾值的色度)的其它區(qū)域,并接著類似地重新著色選定區(qū)域和識(shí)別區(qū)域。另選的是,該處理器可以使用所檢測(cè)的邊界的位置,來(lái)推斷與該圖像中表示的目標(biāo)的三維空間關(guān)系有關(guān)的信息。
在上述示例中,該裝置可以捕獲圖像數(shù)據(jù)并且本地處理該圖像數(shù)據(jù)。另選的是,可以捕獲圖像數(shù)據(jù),將該圖像數(shù)據(jù)發(fā)送至遠(yuǎn)程服務(wù)器以供分析,并接著從該服務(wù)器接收與所檢測(cè)的邊界有關(guān)的信息。
圖8的裝置可以是移動(dòng)電話。
該圖像可以是靜止圖像或者視頻流的幀的部分。
每一個(gè)像素均是該圖像的子單元。該像素可以是單色或彩色像素。為了顯示或圖像拍攝,通常將彩色圖像劃分成單個(gè)顏色的通道,這些通道在共同考慮時(shí)表示特定位置處的特定亮度或色度。出于執(zhí)行上述算法的目的,該圖像的單一像素可以被視為通過(guò)組合的那些通道形成。優(yōu)選的是,出于執(zhí)行上述算法的目的,每一個(gè)像素完全特征化該像素位置處的圖像的可視內(nèi)容。
本申請(qǐng)人特此孤立地將在此描述的每一個(gè)單個(gè)特征和兩個(gè)或更多個(gè)這種特征的任何組合公開(kāi)到這種程度,以致這種特征或組合能夠按照本領(lǐng)域技術(shù)人員的公知常識(shí),總體上基于本說(shuō)明書來(lái)執(zhí)行,而不管這種特征或特征的組合是否解決在此公開(kāi)的任何問(wèn)題,并且不對(duì)權(quán)利要求書的范圍進(jìn)行限制。本申請(qǐng)人指示,本發(fā)明的方面可以由任何這種單個(gè)特征或特征的組合構(gòu)成。鑒于前述描述,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在本發(fā)明的范圍內(nèi),可以進(jìn)行各種修改。