背景技術:
基于分組的通信系統(tǒng)允許諸如個人計算機之類的設備的用戶使用諸如互聯(lián)網(wǎng)協(xié)議(ip)之類的分組協(xié)議而跨計算機網(wǎng)絡進行通信?;诜纸M的通信系統(tǒng)可以用于各種類型的通信事件。可以建立的通信事件包括語音通話、視頻通話、即時消息傳遞、語音郵件、文件傳輸?shù)?。這些系統(tǒng)對用戶是有益的是因為它們與固定線路或移動網(wǎng)絡相比常常具有顯著更低的成本。長途通信尤其是這樣的情況。為了使用基于分組的系統(tǒng),用戶在其設備上安裝并執(zhí)行客戶端軟件。所述客戶端軟件提供了基于分組的連接以及諸如注冊和認證之類的其他功能。
通信系統(tǒng)允許設備的用戶跨諸如互聯(lián)網(wǎng)之類的計算機網(wǎng)絡來進行通信??梢越⒌耐ㄐ攀录ㄕZ音通話、視頻通話、即時消息傳遞、語音郵件、文件傳輸?shù)?。利用視頻通話,除了語音信息之外,通話者還能夠查看另一方的視頻圖像。這使得各方之間能夠進行更為自然的通信,因為臉部表情也被傳送,由此使得視頻通話更加類似于面對面對話。
眾所周知的是,通信客戶端應用提供了使得用戶能夠通過添加二維剪貼畫效果來在用戶設備處修改所捕獲的視頻的功能。例如,用戶可以選擇添加胡須效果,應用檢測到用戶的臉部在所捕獲的幀中的位置,并且根據(jù)用戶的臉部在所捕獲的幀中的位置將所述胡須效果覆蓋在所述幀中的位置處。因此,胡須以二維方式隨著用戶臉部在所捕獲的視頻中改變位置而進行移動。
技術實現(xiàn)要素:
本公開的實施例涉及在視頻通話期間向所顯示的視頻幀上進行繪制。用戶所繪制的繪圖被映射到視頻幀中的用戶臉部的多個點上,以使得該繪圖以三維方式隨用戶臉部移動。
發(fā)明人已經(jīng)認識到,由于該繪圖是由用戶徒手輸入的,因此難以準確地繪制到所顯示的視頻幀上,尤其是當該視頻幀中的用戶的臉部正在移動時。該問題在用戶繪制到另一個用戶的臉部上,即無法控制所顯示的視頻幀中的臉部的移動量時更加嚴重。
根據(jù)本公開的第一方面,提供了一種在通過通信網(wǎng)絡與至少一個另外的用戶終端進行視頻通話的期間在用戶終端處實現(xiàn)的方法,所述方法包括:在所述用戶終端的顯示器上顯示用戶界面,以用于顯示所接收的視頻幀;檢測由用戶使用所述用戶終端的輸入設備對在所述用戶界面中所顯示的可選擇的按鈕的選擇;在所述可選擇的按鈕處于被選擇狀態(tài)時接收多個繪圖輸入,每個繪圖輸入定義了要應用在顯示在所接收的視頻幀中的用戶臉部的第一側(cè)面上的臉部位置處的圖像數(shù)據(jù);針對所述多個繪圖輸入中的每個繪圖輸入,確定所述臉部的第二側(cè)面上的另外的臉部位置,所述臉部的所述第二側(cè)面上的所述另外的臉部位置與所述臉部的所述第一側(cè)面上的所述臉部位置對稱相反;以及針對所接收的每個視頻幀,所述方法包括:針對所述多個繪圖輸入中的每個繪圖輸入,(i)通過在所述用戶終端的處理器上執(zhí)行臉部追蹤器算法來確定在所述所接收的視頻幀中的所述臉部的位置,從而確定在所述視頻幀中所述臉部上的所述臉部位置的定位以及在所述視頻幀中所確定的另外的臉部位置的定位;以及(ii)通過將所述圖像數(shù)據(jù)應用于所述臉部的所述第一側(cè)面上的所述臉部位置以及所述臉部的所述第二側(cè)面上的所確定的另外的臉部位置來修改所述視頻幀;并且在所述用戶界面中顯示經(jīng)修改的視頻幀。
根據(jù)本公開的另一個方面,提供了一種用戶終端,包括:顯示器;輸入設備;網(wǎng)絡接口,其被配置為在所述用戶終端與至少一個另外的用戶終端之間的視頻通話期間,發(fā)送和接收所述用戶終端與所述通信網(wǎng)絡之間的視頻數(shù)據(jù);處理器,其被配置為運行在所述視頻通話期間用于執(zhí)行以下操作的應用:在所述用戶終端的顯示器上顯示用戶界面,以用于顯示所接收的視頻幀;檢測由用戶使用輸入設備對在所述用戶界面中所顯示的可選擇的按鈕的選擇;在所述可選擇的按鈕處于被選擇狀態(tài)時接收多個繪圖輸入,每個繪圖輸入定義了要應用在顯示在所接收的視頻幀中的用戶臉部的第一側(cè)面上的臉部位置處的圖像數(shù)據(jù);針對所述多個繪圖輸入中的每個繪圖輸入,確定所述臉部的第二側(cè)面上的另外的臉部位置,所述臉部的所述第二側(cè)面上的所述另外的臉部位置與所述臉部的所述第一側(cè)面上的所述臉部位置對稱相反;以及針對所接收的每個視頻幀,所述方法包括:針對所述多個繪圖輸入中的每個繪圖輸入,(i)通過在所述用戶終端的處理器上執(zhí)行臉部追蹤器算法來確定在所述所接收的視頻幀中的所述臉部的位置,從而確定在所述視頻幀中所述臉部上的所述臉部位置的定位以及在所述視頻幀中所確定的另外的臉部位置的定位;以及(ii)通過將所述圖像數(shù)據(jù)應用于所述臉部的所述第一側(cè)面上的所述臉部位置以及所述臉部的所述第二側(cè)面上的所確定的另外的臉部位置來修改所述視頻幀;并且在所述用戶界面中顯示經(jīng)修改的視頻幀。
根據(jù)本公開的另一個方面,提供了一種計算機程序產(chǎn)品,所述計算機程序產(chǎn)品被實施在計算機可讀介質(zhì)上,并且被配置為當在用戶終端與至少一個另外的用戶終端之間的視頻通話期間在所述用戶終端的處理器上執(zhí)行時,執(zhí)行以下在本文中所描述的方法中的任何方法。
提供了該發(fā)明內(nèi)容以用簡化的形式引入了在以下的具體實施方式中進一步描述的概念的選擇。該發(fā)明內(nèi)容不旨在標識所要求保護主題的關鍵特征或必要特征,也不旨在用于限制所要求保護的主題的范圍。
附圖說明
為了更好地理解本公開并且示出可以如何實現(xiàn)本公開,現(xiàn)在將作為示例來參考以下附圖,其中:
圖1示出了通信系統(tǒng);
圖2示出了用戶終端的示意圖;
圖3示出了在用戶終端上執(zhí)行的幀修改應用與通信客戶端應用之間的通信;
圖4示出了由幀修改應用所提供的用戶界面;
圖5示出了針對修改視頻數(shù)據(jù)的過程的流程圖;
圖6示出了識別所捕獲的視頻幀中的臉部的多個點的三維三角網(wǎng)格;
圖7示出了二位紋理圖;和
圖8示出了幀修改應用的鏡像模式。
具體實施方式
僅僅作為示例對本公開的實施例進行了描述。
圖1示出了通信系統(tǒng)100,其包括與用戶終端102相關聯(lián)的第一用戶104(用戶a)、與用戶終端108相關聯(lián)的第二用戶110(用戶b)。用戶終端102和108可以在通信系統(tǒng)100中通過通信網(wǎng)絡106進行通信,從而允許用戶104和110通過通信網(wǎng)絡106與彼此通信。通信網(wǎng)絡106可以是具有在用戶終端102與第二用戶終端108之間提供通信信道的能力的任何合適的網(wǎng)絡。例如,通信網(wǎng)絡106可以是互聯(lián)網(wǎng)或者諸如高數(shù)據(jù)速率移動網(wǎng)絡之類的另一種類型的網(wǎng)絡,例如第三代(“3g”)移動網(wǎng)絡。
應當注意的是,在可替代的實施例中,用戶終端可以經(jīng)由未在圖1中示出的額外的中間網(wǎng)絡而連接至通信網(wǎng)絡106。例如,如果用戶終端102是移動設備,則其可以經(jīng)由諸如gsm或umts網(wǎng)絡之類的蜂窩移動網(wǎng)絡(未在圖1中示出)而連接至通信網(wǎng)絡106。
用戶終端102可以是例如移動電話、個人數(shù)字助理(“pda”)、個人計算機(“pc”)(包括,例如windowstm、macostm和linuxtmpc)、平板計算機、游戲設備、或者能夠連接至通信網(wǎng)絡106的其他嵌入式設備。用戶終端102被設置為從用戶a104接收信息或者向用戶a104輸出信息。
用戶終端102執(zhí)行由與通信系統(tǒng)100相關聯(lián)的軟件提供商所提供的通信客戶端應用112。通信客戶端應用112是在用戶終端102中的本地處理器上執(zhí)行的軟件程序。通信客戶端應用112在用戶終端102處執(zhí)行所需的處理,以便使得用戶終端102通過通信系統(tǒng)100發(fā)送和接收數(shù)據(jù)。在用戶終端102處所執(zhí)行的通信客戶端應用112可以通過數(shù)字證書的呈現(xiàn)(例如,證明用戶104是通信系統(tǒng)的真實訂閱者——在wo2005/009019中更加詳細地進行了描述)而被認證以通過通信系統(tǒng)進行通信。
用戶終端108可以對應于用戶終端102。用戶終端108在本地處理器上執(zhí)行與在用戶終端102處所執(zhí)行的通信客戶端應用112相對應的通信客戶端應用114。在用戶終端108處的通信客戶端應用114執(zhí)行所需要的處理以允許用戶110通過網(wǎng)絡106進行通信。在圖1中所示出的用戶終端是通信系統(tǒng)中的末端。為了清楚起見,圖1僅僅示出了兩個用戶(104和110)和兩個用戶終端(102和108),但是更多的用戶和用戶設備可以被包括在通信系統(tǒng)100中,并且可以使用在相應的用戶設備上執(zhí)行的相應的通信客戶端而通過通信系統(tǒng)100進行通信,如在本領域中公知的。
圖2示出了其上執(zhí)行有用于通過通信系統(tǒng)100來進行通信的通信客戶端應用的用戶終端102的詳細視圖。用戶終端102包括連接有諸如屏幕或觸摸屏之類的顯示器204的中央處理單元(“cpu”)202、諸如小鍵盤206之類的輸入設備、相機208、和觸摸屏204。在下文中所描述的實施例中,相機208可以是集成到用戶終端102中或者經(jīng)由有線或無線連接耦合至用戶設備的常規(guī)網(wǎng)絡相機??商娲兀鄼C208可以是深度感知相機,例如,飛行時間或結(jié)構(gòu)光相機。輸出音頻設備210(例如,揚聲器)和輸入音頻設備212(例如,麥克風)連接至cpu202??梢詫@示器204、小鍵盤206、相機208、輸出音頻設備210、和輸入音頻設備212集成到如在圖2中所示出的用戶終端102中。在可替代用戶終端中,顯示器204、小鍵盤206、相機208、輸出音頻設備210、和輸入音頻設備212中的一個或多個可以不集成到用戶終端102中,并且可以經(jīng)由相應的接口而連接至cpu202。這樣的接口的一個示例是usb接口。cpu202連接到網(wǎng)絡接口224,例如用于與通信網(wǎng)絡106進行通信的調(diào)制解調(diào)器??梢詫⒕W(wǎng)絡接口224集成到如在圖2中所示出的用戶終端102中。在可替代用戶終端中,沒有將網(wǎng)絡接口224集成到用戶終端102中。用戶終端102還包括用于存儲數(shù)據(jù)的存儲器226,如在本領域中公知的那樣。存儲器226可以是永久性存儲器,例如rom。存儲器226可以可替代是臨時性存儲器,例如ram。
用戶終端102安裝有通信客戶端應用112,其中通信客戶端應用112被存儲在存儲器226中并且被設置為在cpu202上執(zhí)行。圖2還示出了在cpu202上執(zhí)行的操作系統(tǒng)(“os”)214。在os214頂層運行的是在上文中提到的通信客戶端應用112的軟件堆棧216。軟件堆棧示出了i/o層218、客戶端引擎層220、和客戶端用戶界面層(“ui”)222。每一層負責具體的功能。因為每一層通常與兩個其他層進行通信,所以這些層被認為布置在堆棧中,如在圖2中所示。操作系統(tǒng)214管理計算機的硬件資源,并且處理經(jīng)由網(wǎng)絡接口224而往來于通信網(wǎng)絡106的數(shù)據(jù)。i/o層218包括音頻和/或視頻編碼解碼器,其接收到來的經(jīng)編碼的流并且對它們進行解碼以適當?shù)剌敵鲋翐P聲器210和/或顯示器204,其還從麥克風212和/或相機208接收未編碼的音頻和/或視頻數(shù)據(jù)并且對它們進行編碼以作為流而傳輸至通信系統(tǒng)100的其他末端用戶終端??蛻舳艘鎸?20處理如在上文中所討論的voip系統(tǒng)的連接管理功能,例如通過基于服務器的或者p2p的地址查找和認證來建立呼叫或其他連接??蛻舳艘孢€可以負責沒有在本文中討論的其他輔助功能。客戶端引擎220還與客戶端用戶接口層222進行通信??蛻舳艘?20還可以被設置為控制客戶端用戶接口層222以經(jīng)由在顯示器204上顯示的通信客戶端應用112的用戶界面向用戶終端102的用戶呈現(xiàn)信息,并且經(jīng)由用戶界面從用戶終端102的用戶接收信息。
也在os214上運行的是幀修改應用230。以下參考作為分別的應用的幀修改應用230和通信客戶端應用112來對實施例進行描述,然而,在下文中更加詳細地描述的幀修改應用230的功能可以被并入到通信客戶端應用程序112之中。
圖3示出了幀修改應用230如何與通信客戶端應用112進行交互。
如在圖3中所示,幀修改應用230被設置成接收所捕獲的視頻以及繪圖指令。幀修改應用230被配置為根據(jù)所述繪圖指令來修改所捕獲的視頻幀,并且將經(jīng)修改的視頻幀提供給通信客戶端應用程序112。
在下文中所描述的實施例中,幀修改應用230從相機208接收所捕獲的視頻幀,并且?guī)薷膽?30從用戶a104接收繪圖指令。將已經(jīng)響應于從用戶a104所接收的繪圖指令而被修改的視頻幀從幀修改應用230供應至通信客戶端應用112,以用于通過網(wǎng)絡106而傳輸至用戶終端108。幀修改應用230經(jīng)由在顯示器204上所顯示的用戶界面向用戶a104呈現(xiàn)信息。
圖4示出了在顯示器204的可用區(qū)域400中顯示內(nèi)容的幀修改應用230。盡管在圖4中顯示器的可用區(qū)域是整個顯示器,但顯示器的可用區(qū)域(即對幀修改應用230可用的區(qū)域)可能僅構(gòu)成該顯示器的一部分,例如其中顯示器的其余部分由操作系統(tǒng)和/或在其上執(zhí)行的(多個)其他應用程序所使用以顯示其他內(nèi)容。
如在圖4中所示,幀修改應用230所提供的用戶界面顯示相機208所捕獲的視頻數(shù)據(jù)(在圖4中,用戶a104正在查看相機208)。
如在圖4中所示,幀修改應用230可以將至少一個可選擇的繪圖工具按鈕402覆蓋在所顯示的所捕獲的視頻上,以由用戶a104使用合適的輸入設備(例如,鼠標、與觸摸屏交互的觸控筆、或者直接觸摸觸摸屏)來選擇??蛇x擇的繪圖工具按鈕402可以包括筆繪圖工具按鈕404a、口紅繪圖工具按鈕404b、和刷子繪圖工具按鈕404c。響應于檢測到對可選擇的繪圖工具按鈕402中的一個繪圖工具按鈕的選擇,幀修改應用230被設置為將調(diào)色板406覆蓋在所顯示的所捕獲的視頻上。覆蓋在所顯示的所捕獲的視頻上的調(diào)色板406與所選擇的繪圖工具按鈕相關聯(lián)。每個調(diào)色板406包括供用戶a104使用合適的輸入設備來選擇的至少一種可選擇的顏色。圖4示出了包括第一顏色408a、第二顏色408b、第三顏色408c、和第四顏色408d的調(diào)色板406。
繪圖工具按鈕404和顏色408的選擇使得用戶a104能夠在在由幀修改應用230所提供的用戶界面中所顯示的所捕獲的視頻數(shù)據(jù)上進行繪制。幀修改應用230包括三維臉部追蹤器功能,其在所捕獲的視頻數(shù)據(jù)中識別用戶的臉部的多個點,并且在用戶移動時對這些點進行追蹤。根據(jù)在下文中更加詳細地描述的實施例,將由用戶a104繪制到所顯示的所捕獲的視頻中的用戶a的臉部上的繪圖映射至由臉部追蹤器所識別的用戶臉部的點上,以使得繪圖以三維的方式隨著用戶的臉部進行移動。
幀修改應用230可以將可選擇的鏡像模式按鈕412覆蓋在所顯示的所捕獲的視頻上,以供用戶a104使用合適的輸入設備來選擇。響應于對可選擇的鏡像模式按鈕412的選擇,可選擇鏡像模式按鈕412處于被選擇狀態(tài),并且?guī)薷膽?30以鏡像操作模式來操作,直到用戶a104再次選擇可選擇鏡像模式按鈕412(則可選擇的鏡像模式按鈕412因此處于未選擇狀態(tài))以退出鏡像操作模式為止。將參考圖5詳細地對幀修改應用230響應于檢測到對鏡像模式按鈕412的選擇的操作進行描述。
現(xiàn)在參考圖5,其示出了當?shù)谝挥脩艚K端102和第二用戶終端108之間正在進行視頻通話時幀修改應用230所執(zhí)行的方法的流程圖500。
過程從步驟s502開始,由此幀修改應用230接收視頻幀。在示例性實施例中,幀修改應用230從第一用戶終端102的相機208接收所捕獲的視頻幀。
在步驟s504處,幀修改應用230檢測用戶的臉部在所接收到的視頻幀中的位置。幀修改應用230可以通過執(zhí)行臉部追蹤器算法來執(zhí)行步驟s504。所述臉部追蹤器算法可以基于已知的活動外觀模型(aam)方法。所述臉部追蹤器算法以二維方式追蹤臉部特征點,并且將三維三角網(wǎng)格擬合至所追蹤的臉部特征點。所述臉部追蹤器算法確定被擬合至用戶的臉部的三維三角網(wǎng)格的每個頂點的三維像素坐標(x,y,z)。所述三維三角網(wǎng)格包括定義了多個三角形的多個頂點。在圖6中示出了被擬合至(在視頻幀中所捕獲的)用戶臉部的示例三維三角網(wǎng)格。所述三維三角網(wǎng)格的每個頂點的坐標定義了該頂點在幀中的位置,這可以根據(jù)像素數(shù)量來定義。如上所述,相機208可以是常規(guī)相機或深度感知的相機。當相機208是深度感知相機時,由該深度感知相機所輸出的深度信息被用作對臉部追蹤器算法的額外的輸入,但無論相機208是常規(guī)相機還是深度感知相機,所述臉部追蹤器算法的輸出都是相同的。
在步驟s506處,幀修改應用230檢測到已經(jīng)從用戶a104接收了繪圖指令(在本文中另外被稱為繪圖輸入),所述繪圖指令定義了在步驟s502處所接收的要應用于視頻幀的修改。幀修改應用230響應于用戶a104在由幀修改應用230所提供的用戶界面的區(qū)域中進行繪制而接收繪圖指令,其中所接收的視頻幀被顯示為已經(jīng)選擇了繪圖工具按鈕404和顏色408。在步驟s506,幀修改應用230確定由用戶a104所繪制的繪圖的至少一組像素坐標(x,y)。
幀修改應用230被配置為計算三維三角網(wǎng)格的二維表示。這在本文中被稱為二維紋理圖700,其在圖7中被示出。
用于計算三維三角網(wǎng)格的二維表示的各種可能技術對本領域技術人員而言是公知的,并且因此不在本文中詳細討論。一種示例性方法包括(i)將三維三角網(wǎng)格投影到橢球體上;以及(ii)將所述橢球體投影成二維(例如,使用gall-peters等面積圖投影)。
二維紋理圖700被覆蓋在像素網(wǎng)格上,該像素網(wǎng)格是多個像素寬和多個像素高。該像素寬度和像素高度定義了像素網(wǎng)格的分辨率。像素網(wǎng)格的分辨率可以例如是512×512。uv坐標(被表達為像素網(wǎng)格的像素坐標)用于定義二維紋理圖700中的位置。二維紋理圖700中的每個u,v像素坐標在視頻幀中具有對應的x,y像素坐標。像素網(wǎng)格的像素分辨率是相當隨意的。如果像素分辨率太小,則紋理映射(在下文中參考步驟s522描述)將在經(jīng)修改的圖像中引入平滑/模糊。如果像素分辨率太大,則紋理映射和效果渲染將會不必要地變慢。因此,對于本領域技術人員將顯而易見的是,選擇與所接收的圖像中的臉部的最大尺寸近似對應的像素網(wǎng)格的像素分辨率是合適的。臉部網(wǎng)格的u,v坐標對于臉部位置、表情、或姿態(tài)是恒定且不變的。在過程500開始之前,u,v坐標在離線預先計算步驟中被計算了一次。
在步驟s508處,幀修改應用230執(zhí)行紋理映射處理,由此將三維三角網(wǎng)格中的每個三角形的紋理復制到二維紋理圖700中的對應的三角形。對三維三角網(wǎng)格中的三角形的“紋理”的引用在本文中用于指示三維三角網(wǎng)格中的特定三角形中的每個像素的顏色值。像素顏色值可以根據(jù)rgb顏色模型來定義。
在步驟s510處,幀修改應用230確定與在步驟s504處所檢測到的繪圖的坐標(x,y)相對應的u,v坐標。在步驟s512處,幀修改應用230以(在步驟s510中所確定的)u,v坐標與相關聯(lián)的效果信息的形式來將繪圖命令存儲在存儲器226中。與u,v坐標相關聯(lián)的效果信息包括基于由用戶a104所選擇的繪圖工具按鈕404和顏色408而在該u,v坐標處要應用于二維紋理圖700的繪圖修改的指示。在一些實施例中,效果信息不包括絕對顏色值。替代地,該效果信息包括取決于所選擇顏色408的顏色修改因子。該顏色修改因子是根據(jù)乘法項和加法項來定義的。因此,具有原始顏色值(r,g,b)的像素根據(jù)以下方式而被修改為具有新的顏色值(r',g',b'):
r'=αrr+βr
g'=αgg+βg
b'=αbb+βb
從而,三個乘法項αr、αg、和αb以及三個加法項βr、βg、和βb描述了所要應用的效果。所述三個乘法項和三個加法項的值是預先配置的,并且根據(jù)所選擇的顏色408而變化。通過以該方式應用顏色修改因子,像素以與視頻幀中的未修改的像素保持一致的方式而被修改。例如,如果相機208正在捕獲視頻的房間中的光照水平改變,則顏色修改因子確保像素是基于其原始顏色值來修改的。實施例還擴展到定義了絕對顏色值的顏色408。所存儲的效果信息還包括有關繪圖筆劃的寬度的信息,其給出了關于要修改的u,v坐標處的像素周圍的像素的數(shù)量的指示。繪圖筆劃的寬度取決于所選擇的繪圖工具按鈕404。例如,在選擇刷子繪圖工具按鈕404c時所形成的繪圖筆劃的寬度可以比選擇口紅繪圖工具按鈕404b時所形成的繪圖筆劃更寬。類似地,在選擇口紅繪圖工具按鈕404b時所形成的繪圖筆劃的寬度可以比在選擇鋼筆繪圖工具按鈕404a時所形成的繪圖筆劃更寬。
在步驟s514處,幀修改應用230確定在幀修改應用230以鏡像操作模式操作時是否接收了繪圖指令。
如果在步驟s514處,幀修改應用230確定在幀修改應用230以鏡像操作模式操作時接收到繪圖指令,則過程進行至步驟s516。
二維紋理圖700是對稱的,其在于通過臉部中心的豎直的對稱軸(如在圖7中所示)將二維紋理圖700分割,以這樣的方式,在軸的一側(cè)的二維紋理圖700部分是處于該軸另一側(cè)的二維紋理圖700的部分的鏡像圖。
如果在步驟s510處所確定的u,v坐標落在軸線的一側(cè)(即,不在軸線本身上),則在步驟s516,幀修改應用230確定鏡像坐標umirror,v,其定義了與在步驟s510中所確定的u,v坐標對稱地相反(在u方向上)的二維紋理圖700中的位置。
在步驟s518處,幀修改應用230將以umirror,v坐標(其是在步驟s516中所確定的)為形式的繪圖命令以及相關聯(lián)的效果信息一起存儲在存儲器226中。與umirror,v坐標相關聯(lián)的效果信息包括對要應用于二維紋理圖700的繪圖修改的指示,并且與在步驟s512處與u,v坐標相關聯(lián)地存儲的信息相同。
在實施例中,存儲器226被設置為存儲要由幀修改應用230讀取并且被應用于二維紋理映射700的繪圖命令(如上所述)。
在步驟s518之后,過程500進行到步驟s520。如果在步驟s514處確定當幀修改應用230以鏡像操作模式操作時沒有接收到繪圖指令,則過程500也從步驟s514進行至步驟s520。
在步驟s520處,幀修改應用230取回存儲在存儲器226中的所有繪圖命令,并且根據(jù)所取回的繪圖命令來修改二維紋理圖700。即,對于存儲在存儲器226中的u,v坐標中的每個u,v坐標,幀修改應用230根據(jù)其相關聯(lián)的效果信息來修改二維紋理圖700的u,v坐標。類似地,如果一個或多個umirror,v坐標被存儲在存儲器226中,則對于存儲在存儲器226中的umirror,v坐標中的每個umirror,v,幀修改應用230根據(jù)其相關聯(lián)的效果信息來修改二維紋理圖700的umirror,v坐標。
在步驟s522處,幀修改應用230執(zhí)行與在步驟s508處所執(zhí)行的紋理映射相反的紋理映射過程。在步驟s522處,二維紋理圖700中的每個三角形的紋理被復制到在步驟s504處所確定的三維三角網(wǎng)格的對應的三角形。對二維紋理圖700中的三角形的“紋理”的引用在本文中用于表示二維紋理圖700中的特定三角形中的每個像素的顏色值。
響應于由幀修改應用230所執(zhí)行的步驟s522,在步驟s502處所接收的視頻幀在由幀修改應用230所提供的用戶界面中以經(jīng)修改的形式進行渲染。
步驟s522可以使用z緩沖來實現(xiàn)。如果三維三角網(wǎng)格中的三角形的一部分必須被渲染在視頻幀中與三維三角網(wǎng)格的另一個三角形的一部分相同的x,y像素中,則對(從臉部追蹤器算法的輸出所獲得的)這些部分的深度(z坐標)進行比較,并且視頻幀的x,y像素從最接近于用戶終端102的顯示器204的觀看者(例如,用戶a)的三角形獲得其顏色。使用z緩沖來執(zhí)行步驟s522確保了屬于三維三角網(wǎng)格中的多于一個三角形的x,y像素從最接近于觀看者(例如,用戶a)的三角形獲得其顏色,即距離較遠的三角形被最接近的一個三角形所遮擋。
z緩沖技術的替代物是從臉部追蹤器算法的輸出確定在三維三角網(wǎng)格中的每個三角形的中點處的深度(z坐標)值,并且根據(jù)三維三角網(wǎng)格中的所有三角形的中點z值將它們排序成經(jīng)排序的列表。通過從距離顯示器204的觀看者最遠的三維三角網(wǎng)格中的三角形開始渲染,并且完成有序列表而以渲染距離顯示器204的觀看者最近的三維三角網(wǎng)格中的三角形結(jié)束,這也將正確地對遮擋進行處理。
在步驟524處,幀修改應用230將經(jīng)修改的視頻幀供應至通信客戶端應用112以便經(jīng)由網(wǎng)絡接口224通過網(wǎng)絡106傳輸至第二用戶終端108。本領域技術人員將意識到的是,可以在傳輸之前由通信客戶端應用112對經(jīng)修改的視頻幀進行處理(例如,進行編碼和分組)。
應當意識到的是,在幀修改應用230的功能被并入到通信客戶端應用112中的實施例中,在步驟s522處,通信在由通信客戶端應用112所提供的用戶界面中渲染經(jīng)修改的視頻幀,并且不執(zhí)行步驟s524。
過程接著返回至步驟s502,其中在示例性實施例中,幀修改應用230從第一用戶終端102的相機208接收所捕獲的接下來的視頻幀。
必須針對每個視頻幀而重新渲染二維紋理圖700(在步驟s508),因為其必須包含來自所捕獲圖像(在視頻幀中)的最新更新的紋理。在另一方面,可以將繪圖效果預先渲染成分別的uv圖(在本文中被稱為“效果圖”)。該“效果圖”保持不變直到用戶添加或刪除繪圖筆劃為止。將該效果圖混合到二維紋理圖700上以創(chuàng)建三維三角網(wǎng)格的經(jīng)混合的二維表示。通過將該效果圖的分辨率設置為等于二維紋理圖700的分辨率,該混合可以以簡單的逐像素循環(huán)來完成,而不需要三維三角網(wǎng)格或遮擋的知識。三維三角網(wǎng)格的經(jīng)混合的二維表示的u,v坐標中的每個從二維紋理圖700的對應的u,v坐標獲取紋理,除非該效果圖已經(jīng)在特定的u,v坐標處被修改,在被修改的情況下,三維三角網(wǎng)格的經(jīng)混合的二維表示的u,v坐標從所述效果圖獲取紋理。
應當理解的是,在由用戶a在所顯示的視頻數(shù)據(jù)上繪制繪圖的時間期間,幀修改應用230將接收到多個視頻幀(過程500將循環(huán)多次)。在步驟s504處所確定的x,y像素坐標定義了該繪圖的一部分的位置。根據(jù)進行繪圖的用戶a的繪圖筆劃的速度以及在幀修改應用230處接收幀的速率。一旦用戶a104完成了繪制,通過迭代地執(zhí)行過程500,幀修改應用將確定整個繪圖的x,y像素坐標,并且存儲器226將包括對應的u,v坐標和umirror,v坐標(如果繪圖是在鏡像模式下繪制的)。
在步驟s506處,幀修改應用230確定由用戶a104在所顯示的幀中繪制的繪圖的至少一組像素坐標(x,y)。
圖8示出了用戶界面,該用戶界面是在用戶a通過將光標802從點p1移動到點p2而繪制了刷子筆劃804之后由幀修改應用230提供的,同時幀修改應用在鏡像模式中操作。應當理解的是,當由用戶a104從點p1到點p2繪圖筆劃時,將在幀修改應用230從相機208接收每個視頻幀時迭代地執(zhí)行過程500。
根據(jù)在上文中所描述的過程500,幀修改應用230生成作為刷子筆劃804的鏡像圖像的刷子筆劃806。將由刷子筆劃804和806所組成的繪圖粘貼至所捕獲的視頻數(shù)據(jù)中的臉部的皮膚上,并且以三維方式隨著臉部移動。例如,如果不同于如在圖8中所示出的直接看向相機208,而是用戶將他的頭部轉(zhuǎn)90度以側(cè)對相機208,則將筆劃804、806中的僅僅一個在由幀修改應用230所供用戶界面中進行渲染(取決于用戶是以順時針還是逆時針轉(zhuǎn)動他的頭部的)。
應當理解的是,用戶a可以繪制多個繪圖。當幀修改應用230不處于鏡像操作模式時,在存儲器226中由多個u,v坐標來標識所繪制的繪圖。當幀修改應用230處于鏡像操作模式時,在存儲器226中由多個u,v坐標以及多個umirror,v坐標來標識所繪制的繪圖。
將每個繪圖的u,v坐標以隊列存儲在存儲器226中,由此,最近的繪圖的u,v坐標被存儲在隊列頂部而最早的繪圖的u,v坐標被存儲在隊列底部。
如在圖4和8中所示,幀修改應用230可以將可選擇的撤銷按鈕414覆蓋在所顯示的所捕獲的視頻上以供用戶a104使用合適的輸入設備來選擇。響應于檢測到對可選擇的撤銷按鈕414的選擇,幀修改應用230被設置為移除存儲器226中的隊列頂部的u,v坐標。因此,當執(zhí)行步驟s520時,用戶a104所繪制的最新的繪圖不再被渲染(由幀修改應用230所接收的隨后的視頻幀不利用該最新繪圖進行修改)。
如在圖4和8中所示,幀修改應用230可以將可選擇的新繪圖按鈕416覆蓋在所顯示的所捕獲的視頻上以供用戶a104使用合適的輸入設備來選擇。響應于檢測到對可選擇的新繪圖按鈕416的選擇,幀修改應用230被設置為移除存儲器226中的隊列中所存儲的所有繪圖的u,v坐標。因此,用戶a104截止該時間點所繪制的所有繪圖都不再由幀修改應用230來渲染。
如在圖4和8中所示,幀修改應用230可以將可選擇的保存按鈕418覆蓋在所顯示的所捕獲的視頻上以供用戶a104使用合適的輸入設備來選擇。響應于檢測到對可選擇的保存按鈕418的選擇,幀修改應用230被設置為將繪圖文件保存至存儲器226。所保存的繪圖文件包括在保存按鈕418被選擇時存儲在存儲器226中的所有u,v坐標(及其相關聯(lián)的效果信息)以及所有umirror,v坐標(及其相關聯(lián)的效果信息)。因此,繪圖文件是以與臉部形狀以及相機208的分辨率和類型無關的格式來保存的。這使得所保存的繪圖文件能夠在通信系統(tǒng)100的用戶之間進行分享。
盡管已經(jīng)參考從第一用戶終端102的相機208接收所捕獲的視頻幀的幀修改應用230以及在這些所捕獲的視頻幀進行繪制的用戶a104(從用戶a104接收的繪圖指令)而在上文中描述了示例性實現(xiàn),但本公開的原理擴展至在下文中所描述的其他實施例。
為了連續(xù)性,參考在用戶終端102上執(zhí)行的幀修改應用230而在上文中描述了這些其他實施例。
在用戶a104與用戶b110之間的視頻通話期間,將由第一用戶終端的相機208所捕獲的視頻數(shù)據(jù)通過網(wǎng)絡106傳送至第二用戶終端108,并且在第二用戶終端108上執(zhí)行的幀修改應用230的用戶界面中進行顯示。在另一個實施例中,由在第一用戶終端108上執(zhí)行的幀修改應用230所接收的所捕獲的視頻(在圖3中所示)是從第一用戶終端102的相機208接收的,而繪圖指令(在圖3中所示)是響應于用戶b110在用戶a的臉部(其在第二用戶終端108上執(zhí)行的幀修改應用230的用戶界面中顯示)上進行繪制而通過網(wǎng)絡106從第二用戶終端108接收的。因此,在該實施例中,用戶b110在第二用戶終端108上所顯示的用戶a的臉部上進行繪制,并且該繪圖是在第一用戶終端102的顯示器204上渲染的。
在另一個實施例中,由在第一用戶終端108上執(zhí)行的幀修改應用230所接收的所捕獲的視頻(在圖3中所示)是通過網(wǎng)絡106從第二用戶終端108接收的(由第二用戶終端108的相機所捕獲),而繪圖指令(在圖3中所示)是響應于用戶b110在用戶b的臉部(其在第二用戶終端108上執(zhí)行的幀修改應用230的用戶界面中顯示)上進行繪制而通過網(wǎng)絡106從第二用戶終端108接收的。因此,在該實施例中,用戶b110在第二用戶終端108上所顯示的他們自己的臉部上進行繪制,并且該繪圖是在第一用戶終端102的顯示器204上渲染的。
在另一個實施例中,由在第一用戶終端108上執(zhí)行的幀修改應用230所接收的所捕獲的視頻(在圖3中所示)是通過網(wǎng)絡106從第二用戶終端108接收的(由第二用戶終端108的相機所捕獲),并且在由幀修改應用230所提供的用戶界面中進行顯示——繪圖指令(在圖3中所示)是響應于用戶a104在這些所顯示的視頻幀上進行繪制而從用戶a104接收的。因此,在該實施例中,用戶a104在第一用戶終端102上所顯示的用戶b的臉部上進行繪制,并且該繪圖是在第一用戶終端102的顯示器204上渲染的。
在用戶終端102上執(zhí)行的幀修改應用230可以根據(jù)在上文中所描述的一個或多個實施例來操作。
盡管已經(jīng)參考通過用戶在到來的直播視頻的幀上繪制刷子筆劃繪制的繪圖而對實施例進行了描述,但是本公開的實施例擴展到包括將預先計算的三維圖形對象應用至到來的直播視頻的幀的繪圖指令。例如,用戶可以選擇將帽子圖形放置到臉上,因此根據(jù)在上文中所描述的實施例,該帽子圖形將與三維三角網(wǎng)格的頂點相關聯(lián),并且因此以三維方式隨著(在視頻中所捕獲的)用戶的移動而移動。
已經(jīng)在上文中描述了本公開的第一方面。
在示例性實施例中,確定在所述所接收的視頻幀中的所述臉部的位置包括:以二維方式來識別所述臉部中的臉部特征點,并且將三維三角網(wǎng)格擬合至所追蹤的臉部特征點,其中針對多個繪圖輸入中的每個繪圖輸入,所述臉部位置與所述三維三角網(wǎng)格上的位置相對應,而所確定的另外的臉部位置與所述三維三角網(wǎng)格上另外的位置相對應。
修改每個所接收的視頻幀的步驟可以包括將所獲得的所述三維三角網(wǎng)格中的每個三角形的紋理映射到所述三維三角網(wǎng)格的二維表示上;并且針對每個所接收到的繪圖輸入:確定在所述三維三角網(wǎng)格的所述二維表示中與所述三維三角網(wǎng)格上的所述位置和所述另外的位置相對應的位置和另外的位置;將所述圖像數(shù)據(jù)應用于所述三維三角網(wǎng)格的所述二維表示中的所確定的位置和所確定的另外的位置;并且將所述三維三角網(wǎng)格的所述二維表示中的每個三角形的紋理映射到所述三維三角網(wǎng)格上。
修改每個所接收的視頻幀的步驟可以包括將所述三維三角網(wǎng)格中的每個三角形的紋理映射到所述三維三角網(wǎng)格的第一二維表示上;并且針對所接收的每個繪圖輸入:確定在所述三維三角網(wǎng)格的第二二維表示中與所述三維三角網(wǎng)格上的所述位置和所述另外的位置相對應的位置和另外的位置;將所述圖像數(shù)據(jù)應用于所述三維三角網(wǎng)格的所述第二二維表示中的所確定的位置和所確定的另外的位置;將所述三維三角網(wǎng)格的所述第二二維表示混合到所述三維三角網(wǎng)格的所述第一二維表示上,以創(chuàng)建所述三維三角網(wǎng)格的經(jīng)混合的二維表示;并且將所述三維三角網(wǎng)格的所述經(jīng)混合的二維表示中的每個三角形的紋理映射到所述三維三角網(wǎng)格上。
所述方法還可以包括在所述用戶界面中顯示至少一個可選擇的繪圖工具按鈕。
所述至少一個可選擇的繪圖工具按鈕可以包括以下中的一個或其任何組合:筆繪圖工具按鈕、口紅繪圖工具按鈕、和刷子繪圖工具按鈕。
所述方法還可以包括響應于檢測到由用戶使用所述用戶終端的輸入設備對所述至少一個可選擇的繪圖工具按鈕的選擇而顯示與所選擇的繪圖工具按鈕相關聯(lián)的多種可選擇的顏色。
所述圖像數(shù)據(jù)可以基于所選擇的繪圖工具按鈕和多個可選擇的顏色中與所選擇的繪圖工具按鈕相關聯(lián)的所選擇的顏色。
所述圖像數(shù)據(jù)可以包括要應用于所述臉部的所述第一側(cè)面上的所述臉部位置處的至少一個像素的顏色修改因子,所述顏色修改因子是基于所述所選擇的顏色的。
所述顏色修改因子可以包括:(i)要應用于所述至少一個像素中的每個像素的原始紅色值的乘法項和加法項;(ii)要應用于所述至少一個像素中的每個像素的原始綠色值的乘法項和加法項;和(iii)要應用于所述至少一個像素中的每個像素的原始藍色值的乘法項和加法項。
所述圖像數(shù)據(jù)還可以包括要應用于所述臉部的所述第一側(cè)面上的所述臉部位置處的至少一個像素的顏色值,該顏色值是基于所述所選擇的顏色的。
所述方法還包括針對所述多個繪圖輸入中的每個繪圖輸入,將繪圖命令存儲在所述用戶終端的存儲器中,所述繪圖命令包括與所述繪圖輸入相關聯(lián)的圖像數(shù)據(jù)、所述臉部的所述第一側(cè)面上的所述臉部位置的指示、以及所述臉部的所述第二側(cè)面上的所述所確定的另外的臉部位置的指示。
修改所述視頻幀的步驟包括取回存儲在所述存儲器中的所有繪圖命令,并且根據(jù)所取回的繪圖命令來修改所述視頻幀。
所述方法還可以包括將每個經(jīng)修改的視頻幀通過所述通信網(wǎng)絡傳送至所述至少一個另外的用戶終端。
在上文中所提及的所述視頻幀可以是通過所述通信網(wǎng)絡從所述至少一個另外的用戶終端接收的。
所述多個繪圖輸入可以是從與所述用戶終端相關聯(lián)的用戶處接收的。
所述通信網(wǎng)絡可以是基于分組的網(wǎng)絡。
在圖5中單獨示出的步驟可以或可以不被實現(xiàn)為分別的步驟,并且可以或可以不以所示出的順序來實現(xiàn)。
通常而言,在本文中所描述的任何功能都可以使用軟件、固件、硬件(例如,固定邏輯電路)、或這些實現(xiàn)的組合來實現(xiàn)。如在本文中所使用的術語“控制器”、“功能”、“組件”和“應用”通常表示軟件、固件、硬件、或其組合。在軟件實現(xiàn)的情況下,控制器、功能、組件、或應用表示當在處理器(例如,一個或多個cpu)上執(zhí)行時執(zhí)行指定的任務的程序代碼。可以將所述程序代碼存儲在一個或多個計算機可讀存儲器設備中。在下文中所描述的技術的特征是與平臺無關的,這意味著可以在具有多種處理器的多種商業(yè)計算平臺上實現(xiàn)所述技術。
例如,用戶終端還可以包括使得用戶終端的硬件執(zhí)行操作的實體(例如,軟件),例如,處理器功能塊等。例如,用戶設備可以包括計算機可讀介質(zhì),其可以被配置為保存使得用戶終端,并且更加特別地使得操作系統(tǒng)和用戶終端的相關聯(lián)的硬件執(zhí)行操作的指令。因此,指令用于配置操作系統(tǒng)和相關聯(lián)的硬件以執(zhí)行操作,并且以該方式引起操作系統(tǒng)的狀態(tài)的轉(zhuǎn)換并且使得相關聯(lián)的硬件執(zhí)行功能??梢杂捎嬎銠C可讀介質(zhì)通過多種不同的配置而將指令提供至用戶終端。
計算機可讀介質(zhì)的一種這樣的配置是信號承載介質(zhì),并且因此被配置為將指令(例如,作為載波)發(fā)送至計算設備,例如,經(jīng)由網(wǎng)絡。計算機可讀介質(zhì)還可以被配置為計算機可讀存儲介質(zhì),并且因此不是信號承載介質(zhì)。計算機可讀存儲介質(zhì)的示例包括:隨機存取存儲器(ram)、只讀存儲器(rom)、光盤、閃速存儲器、硬盤存儲器、以及可以使用磁、光、和其他技術來存儲指令和其他數(shù)據(jù)的其他存儲器設備。
盡管已經(jīng)用特定于結(jié)構(gòu)特征和/或方法動作的語言描述了主題,但是應當理解的是,在所附權利要求中所限定的主題不一定限于在上文中所描述的具體的特征或動作。相反,在上文中所描述的具體的特征和動作是作為實現(xiàn)所述權利要求的示例形式而公開的。