本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤其是一種漸變動(dòng)畫的生成方法及計(jì)算設(shè)備。
背景技術(shù):
由多幅包含人臉的圖像(簡(jiǎn)稱為“人臉圖像”)生成漸變動(dòng)畫的方法目前有著廣泛的應(yīng)用。例如在相冊(cè)中,通過(guò)用戶輸入一些本人或好友的照片,將這些照片當(dāng)做關(guān)鍵幀,并在照片中間插值多幀圖像實(shí)現(xiàn)動(dòng)畫效果,由于插入的中間幀的過(guò)渡,這種照片的播放效果要比ppt式的播放生動(dòng)有趣。
人臉漸變的普遍方法是在實(shí)現(xiàn)圖像變形的基礎(chǔ)上,先分別對(duì)兩幅圖像進(jìn)行兩個(gè)方向的變形,再對(duì)兩幅變形圖像進(jìn)行圖像灰度融合,產(chǎn)生一系列的中間圖像,從而實(shí)現(xiàn)圖像的平滑漸變。然而遺憾的是,任意兩張包含人臉的圖像,其臉型、表情、姿態(tài)可能都是不同的,且人臉與背景部分(如,肩、脖子、場(chǎng)景等)的對(duì)應(yīng)關(guān)系也有可能是不同的,比如一張包含左側(cè)臉的圖像和一張包含右側(cè)臉的圖像之間的過(guò)渡,通過(guò)插入中間幀圖像期望得到一個(gè)漸漸地從左到右變化且清晰的人臉。
因此,要如何實(shí)現(xiàn)任意兩張人臉圖像的中間過(guò)渡融合,保證插值出的中間幀圖像也會(huì)是一個(gè)相對(duì)清晰的人臉,是需要解決的一個(gè)重要問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明提供了一種漸變動(dòng)畫的生成方法及計(jì)算設(shè)備,以力圖解決或者至少緩解上面存在的至少一個(gè)問(wèn)題。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種漸變動(dòng)畫的生成方法,該方法適于在包含人臉的第一人臉圖像和第二人臉圖像的中間插入至少一個(gè)中間幀圖像,以生成人臉漸變動(dòng)畫,包括步驟:按第一計(jì)算方式計(jì)算第一人臉圖像的第一投影矩陣和第一全圖三維模型;根據(jù)第一投影矩陣和第一全圖三維模型以第二計(jì)算方式計(jì)算第一人臉圖像的第一紋理坐標(biāo);對(duì)第二人臉圖像依次執(zhí)行第一計(jì)算方式和第二計(jì)算方式的計(jì)算步驟,得到第二人臉圖像的第二投影矩陣、第二全圖三維模型和第二紋理坐標(biāo);對(duì)于每個(gè)待插入的中間幀:根據(jù)第一投影矩陣、第二投影矩陣和待插入中間幀的位置計(jì)算待插入中間幀的投影矩陣;根據(jù)第一全圖三維模型、第二全圖三維模型和待插入中間幀的位置計(jì)算待插入中間幀的全圖三維模型;根據(jù)待插入中間幀的投影矩陣和全圖三維模型以第二計(jì)算方式計(jì)算該待插入中間幀的紋理坐標(biāo);根據(jù)待插入中間幀的紋理坐標(biāo)與第一紋理坐標(biāo)、第二紋理坐標(biāo)分別生成該待插入中間幀的第一圖像分量和第二圖像分量;結(jié)合第一圖像分量和第二圖像分量生成中間幀圖像;以及由第一人臉圖像、第二人臉圖像和生成的中間幀圖像生成漸變動(dòng)畫。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,按第一計(jì)算方式計(jì)算人臉圖像的投影矩陣的步驟包括:提取人臉圖像中的人臉特征點(diǎn);通過(guò)所提取的人臉特征點(diǎn)擬合得到人臉三維模型及該人臉三維模型對(duì)應(yīng)的投影矩陣。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,按第一計(jì)算方式計(jì)算人臉圖像的全圖三維模型的步驟包括:根據(jù)人臉三維模型的深度差計(jì)算該人臉圖像中非人臉區(qū)域的深度,得到全圖三維模型。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,在提取人臉圖像中的人臉特征點(diǎn)的步驟之前,還包括步驟:根據(jù)檢測(cè)到的人臉區(qū)域?qū)θ四槇D像進(jìn)行裁剪和/或縮放處理。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,通過(guò)所提取的人臉特征點(diǎn)擬合得到人臉三維模型和投影矩陣的步驟包括:利用三維形變模型3dmm根據(jù)人臉圖像的人臉特征點(diǎn)生成人臉圖像的人臉三維模型和該人臉三維模型對(duì)應(yīng)的投影矩陣。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,按第一計(jì)算方式計(jì)算全圖三維模型的步驟包括:將人臉三維模型上鼻子中心點(diǎn)與每個(gè)輪廓點(diǎn)的連線分別向外延伸預(yù)定距離,得到對(duì)應(yīng)的多個(gè)邊緣點(diǎn);以及從人臉三維模型上的頂點(diǎn)開始、按三角形關(guān)系依次連接多個(gè)邊緣點(diǎn),得到全圖三維模型。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,根據(jù)投影矩陣和全圖三維模型以第二計(jì)算方式計(jì)算人臉圖像的紋理坐標(biāo)的步驟包括:將投影矩陣和全圖三維模型相乘得到紋理坐標(biāo)。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的投影矩陣mvpi為:
其中,sumframe表示待插入的中間幀的總幀數(shù),sumfrme表示插入中間幀后的總幀數(shù),mvp1表示第一投影矩陣,mvp2表示第二投影矩陣。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的全圖三維模型m_expandi為:
其中,sumframe表示待插入的中間幀的總幀數(shù),sumfrme表示插入中間幀后的總幀數(shù),m_expand1表示第一全圖三維模型,m_expand2表示第二全圖三維模型。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的第一圖像分量image1i為:
其中,sumfrme表示插入中間幀后的總幀數(shù),t1表示第一紋理坐標(biāo),ti表示待插入的第i個(gè)中間幀的紋理坐標(biāo)。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的第二圖像分量image2i為:
其中,sumfrme表示插入中間幀后的總幀數(shù),t2表示第二紋理坐標(biāo),ti表示待插入的第i個(gè)中間幀的紋理坐標(biāo)。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的中間幀圖像framei為:
其中,sumfrme表示插入中間幀后的總幀數(shù),image1i表示第一圖像分量,image2i表示第二圖像分量。
可選地,在根據(jù)本發(fā)明的生成漸變動(dòng)畫的方法中,待插入的中間幀的總幀數(shù)sumframe與插入中間幀后的總幀數(shù)sumfrme之間的關(guān)系是:
sumfrme=sumframe+2。
根據(jù)本發(fā)明的又一方面,提供了一種計(jì)算設(shè)備,包括:一個(gè)或多個(gè)處理器;和存儲(chǔ)器;一個(gè)或多個(gè)程序,其中一個(gè)或多個(gè)程序存儲(chǔ)在存儲(chǔ)器中并被配置為由一個(gè)或多個(gè)處理器執(zhí)行,一個(gè)或多個(gè)程序包括用于執(zhí)行如上所述方法中的任一方法的指令。
根據(jù)本發(fā)明的再一方面,提供了一種存儲(chǔ)一個(gè)或多個(gè)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),一個(gè)或多個(gè)程序包括指令,指令當(dāng)計(jì)算設(shè)備執(zhí)行時(shí),使得計(jì)算設(shè)備執(zhí)行如上所述的方法中的任一方法。
通過(guò)上述描述,本方案基于三維人臉重建技術(shù)實(shí)現(xiàn)了人臉圖像之間的過(guò)渡,能夠利用前后兩幀人臉圖像生成一個(gè)漸變動(dòng)畫。根據(jù)本方案,先利用人臉特征點(diǎn)生成人臉三維模型,再計(jì)算背景區(qū)域的深度信息,得到全圖三維模型,并根據(jù)前后兩幀圖像的三維特征內(nèi)插出多個(gè)中間幀,可以在不同臉型、不同表情、不同姿態(tài)的中間生成相應(yīng)的過(guò)渡臉型、表情和姿態(tài)。另外,相比于直接利用2d人臉特征點(diǎn)做網(wǎng)格化,然后進(jìn)行網(wǎng)格融合生成漸變動(dòng)畫的方案,本方案能夠很好地解決兩張人臉圖像的人臉姿態(tài)差異較大時(shí),生成的中間幀圖像中人臉扭曲的問(wèn)題。
附圖說(shuō)明
為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來(lái)描述某些說(shuō)明性方面,這些方面指示了可以實(shí)踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過(guò)結(jié)合附圖閱讀下面的詳細(xì)描述,本公開的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯。遍及本公開,相同的附圖標(biāo)記通常指代相同的部件或元素。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算設(shè)備100的構(gòu)造示意圖;
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的漸變動(dòng)畫的生成方法200的流程圖;
圖3a示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的人臉三維模型的示意圖;以及
圖3b示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的由圖3a的人臉三維模型擴(kuò)展得到的全圖三維網(wǎng)格模型的示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1是示例計(jì)算設(shè)備100的框圖。在基本的配置102中,計(jì)算設(shè)備100典型地包括系統(tǒng)存儲(chǔ)器106和一個(gè)或者多個(gè)處理器104。存儲(chǔ)器總線108可以用于在處理器104和系統(tǒng)存儲(chǔ)器106之間的通信。
取決于期望的配置,處理器104可以是任何類型的處理,包括但不限于:微處理器(μp)、微控制器(μc)、數(shù)字信息處理器(dsp)或者它們的任何組合。處理器104可以包括諸如一級(jí)高速緩存110和二級(jí)高速緩存112之類的一個(gè)或者多個(gè)級(jí)別的高速緩存、處理器核心114和寄存器116。示例的處理器核心114可以包括運(yùn)算邏輯單元(alu)、浮點(diǎn)數(shù)單元(fpu)、數(shù)字信號(hào)處理核心(dsp核心)或者它們的任何組合。示例的存儲(chǔ)器控制器118可以與處理器104一起使用,或者在一些實(shí)現(xiàn)中,存儲(chǔ)器控制器118可以是處理器104的一個(gè)內(nèi)部部分。
取決于期望的配置,系統(tǒng)存儲(chǔ)器106可以是任意類型的存儲(chǔ)器,包括但不限于:易失性存儲(chǔ)器(諸如ram)、非易失性存儲(chǔ)器(諸如rom、閃存等)或者它們的任何組合。系統(tǒng)存儲(chǔ)器106可以包括操作系統(tǒng)120、一個(gè)或者多個(gè)應(yīng)用122以及程序數(shù)據(jù)124。在一些實(shí)施方式中,應(yīng)用122可以布置為在操作系統(tǒng)上利用程序數(shù)據(jù)124進(jìn)行操作。程序數(shù)據(jù)124包括指令,在根據(jù)本發(fā)明的計(jì)算設(shè)備100中,程序數(shù)據(jù)124包含用于執(zhí)行漸變動(dòng)畫的生成方法的指令。
計(jì)算設(shè)備100還可以包括有助于從各種接口設(shè)備(例如,輸出設(shè)備142、外設(shè)接口144和通信設(shè)備146)到基本配置102經(jīng)由總線/接口控制器130的通信的接口總線140。示例的輸出設(shè)備142包括圖形處理單元148和音頻處理單元150。它們可以被配置為有助于經(jīng)由一個(gè)或者多個(gè)a/v端口152與諸如顯示器或者揚(yáng)聲器之類的各種外部設(shè)備進(jìn)行通信。示例外設(shè)接口144可以包括串行接口控制器154和并行接口控制器156,它們可以被配置為有助于經(jīng)由一個(gè)或者多個(gè)i/o端口158和諸如輸入設(shè)備(例如,鍵盤、鼠標(biāo)、筆、語(yǔ)音輸入設(shè)備、觸摸輸入設(shè)備)或者其他外設(shè)(例如打印機(jī)、掃描儀等)之類的外部設(shè)備進(jìn)行通信。示例的通信設(shè)備146可以包括網(wǎng)絡(luò)控制器160,其可以被布置為便于經(jīng)由一個(gè)或者多個(gè)通信端口164與一個(gè)或者多個(gè)其他計(jì)算設(shè)備162通過(guò)網(wǎng)絡(luò)通信鏈路的通信。
網(wǎng)絡(luò)通信鏈路可以是通信介質(zhì)的一個(gè)示例。通信介質(zhì)通??梢泽w現(xiàn)為在諸如載波或者其他傳輸機(jī)制之類的調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,并且可以包括任何信息遞送介質(zhì)?!罢{(diào)制數(shù)據(jù)信號(hào)”可以是這樣的信號(hào),它的數(shù)據(jù)集中的一個(gè)或者多個(gè)或者它的改變可以在信號(hào)中編碼信息的方式進(jìn)行。作為非限制性的示例,通信介質(zhì)可以包括諸如有線網(wǎng)絡(luò)或者專線網(wǎng)絡(luò)之類的有線介質(zhì),以及諸如聲音、射頻(rf)、微波、紅外(ir)或者其它無(wú)線介質(zhì)在內(nèi)的各種無(wú)線介質(zhì)。這里使用的術(shù)語(yǔ)計(jì)算機(jī)可讀介質(zhì)可以包括存儲(chǔ)介質(zhì)和通信介質(zhì)二者,如存儲(chǔ)一個(gè)或多個(gè)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
計(jì)算設(shè)備100可以實(shí)現(xiàn)為小尺寸便攜(或者移動(dòng))電子設(shè)備的一部分,這些電子設(shè)備可以是諸如蜂窩電話、個(gè)人數(shù)字助理(pda)、個(gè)人媒體播放器設(shè)備、無(wú)線網(wǎng)絡(luò)瀏覽設(shè)備、個(gè)人頭戴設(shè)備、應(yīng)用專用設(shè)備、或者可以包括上面任何功能的混合設(shè)備。計(jì)算設(shè)備100還可以實(shí)現(xiàn)為包括桌面計(jì)算機(jī)和筆記本計(jì)算機(jī)配置的個(gè)人計(jì)算機(jī)。在一些實(shí)施例中,計(jì)算設(shè)備100被配置為執(zhí)行漸變動(dòng)畫的生成方法200。
如前文所述,在日常生活中,用戶常希望輸入任意兩張人臉圖像,由計(jì)算設(shè)備100利用這兩張人臉圖像插值出中間的過(guò)渡圖像,最終輸出漸變動(dòng)畫。下文將結(jié)合圖2,詳細(xì)描述根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)現(xiàn)這樣效果的方法200的流程圖。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的漸變動(dòng)畫的生成方法200的流程圖。
如圖2所示,該方法200始于步驟s210,按第一計(jì)算方式計(jì)算第一人臉圖像的第一投影矩陣和第一全圖三維模型。該步驟又可以細(xì)分為以下兩個(gè)子步驟。
第一步,計(jì)算第一人臉圖像的第一投影矩陣和第一人臉三維模型。首先,提取第一人臉圖像中的人臉特征點(diǎn)。按照本發(fā)明的實(shí)施方式,將輸入的人臉圖像劃分成兩個(gè)區(qū)域,分別是:包括人臉的人臉區(qū)域和人臉區(qū)域以外的背景區(qū)域。人臉特征點(diǎn)包括但不限于人臉中表征眉毛、鼻子、眼角、嘴巴、臉外輪廓等特征的關(guān)鍵點(diǎn)。需要說(shuō)明的是,提取人臉特征點(diǎn)已屬于本領(lǐng)域比較成熟的算法,任何目前已知或者將來(lái)開發(fā)的人臉檢測(cè)方法/人臉特征點(diǎn)提取方法均可與本發(fā)明的實(shí)施例結(jié)合使用,本發(fā)明的范圍在此方面不受限制。
然后,通過(guò)所提取的人臉特征點(diǎn)擬合得到第一人臉三維模型及該第一人臉三維模型對(duì)應(yīng)的第一投影矩陣。根據(jù)本發(fā)明的一個(gè)實(shí)施例,第一人臉三維模型和其對(duì)應(yīng)的第一投影矩陣通過(guò)三維形變模型(3dmm)求得。其中,3dmm模型是1999年由blanz和vetter發(fā)表的《amorphablemodelforthesynthesisof3dfaces》論文提到的方法,該方法的基本思想是:將人臉空間看作一個(gè)線性空間,用事先建立好的三維人臉數(shù)據(jù)的線性組合的投影逼近二維圖片上的人臉。具體地,利用3dmm模型求解第一人臉三維模型及其對(duì)應(yīng)的第一投影矩陣的方法包括如下幾步:
①利用人臉庫(kù)、根據(jù)預(yù)先采集的三維人臉數(shù)據(jù)建立人臉空間基底和投影矩陣的初始參數(shù)。根據(jù)一種實(shí)施方式,該人臉空間基底可以包含人臉的形狀向量和紋理向量,投影矩陣是采用人臉空間基底的特征點(diǎn)預(yù)估的,其初始參數(shù)包括相機(jī)的位置、圖像平面的旋轉(zhuǎn)角度、直射光和環(huán)境光的各個(gè)分量、圖像對(duì)比度等等。
②對(duì)于給定的具體人臉(即人臉特征點(diǎn)),根據(jù)人臉空間基底和初始參數(shù)的反復(fù)迭代,擬合出該人臉圖像的三維人臉模型,換句話說(shuō),根據(jù)已有的具有相同頂點(diǎn)數(shù)和拓?fù)浣Y(jié)構(gòu)的三維人臉模型數(shù)據(jù)的相應(yīng)的三維特征點(diǎn),通過(guò)最小化三維模型線性組合的特征點(diǎn)投影后和二維特征點(diǎn)的距離,求解得到組合的參數(shù),由該參數(shù)進(jìn)一步得到擬合的三維人臉模型。如圖3a,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的人臉三維模型的示意圖,從圖中可以看出,該人臉三維模型中的頂點(diǎn)可以按照三角形關(guān)系連接形成一種“網(wǎng)格結(jié)構(gòu)”。同時(shí),在擬合出該三維人臉模型的過(guò)程中,對(duì)應(yīng)的投影矩陣的參數(shù)就形成了新的投影矩陣,即,該三維人臉模型對(duì)應(yīng)的投影矩陣。
關(guān)于三維重建的具體內(nèi)容可參考上述論文。任何目前已知的基于3dmm算法建立三維人臉模型的方法均可與本發(fā)明的實(shí)施例相結(jié)合,本發(fā)明對(duì)此不作限制。
第二步,根據(jù)第一人臉三維模型的深度差計(jì)算該第一人臉圖像中非人臉區(qū)域的深度,得到第一全圖三維模型。具體來(lái)說(shuō),將第一人臉三維模型上鼻子中心點(diǎn)與每個(gè)輪廓點(diǎn)的連線分別向外延伸預(yù)定距離,得到對(duì)應(yīng)的多個(gè)邊緣點(diǎn),再?gòu)牡谝蝗四樔S模型上的頂點(diǎn)開始、按三角形關(guān)系依次連接多個(gè)邊緣點(diǎn),得到第一全圖三維模型。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,計(jì)算人臉三維模型上鼻子中心點(diǎn)的三維坐標(biāo)值與每個(gè)輪廓點(diǎn)的三維坐標(biāo)值的坐標(biāo)差值,然后由該坐標(biāo)差值對(duì)應(yīng)計(jì)算每條鼻子中心點(diǎn)與輪廓點(diǎn)連線向外延伸的預(yù)定距離,以確定多個(gè)邊緣點(diǎn)的三維坐標(biāo)值??蛇x地,每個(gè)預(yù)定距離為對(duì)應(yīng)坐標(biāo)差值的預(yù)定倍數(shù)倍,如2-3倍。亦可以根據(jù)鼻子中心點(diǎn)與輪廓點(diǎn)的連線向外做多次延伸,只要與開始輸入的人臉圖像的寬高比保持一致即可。本發(fā)明對(duì)此方面不做限定。
如圖3b,示出了在圖3a的人臉三維模型的基礎(chǔ)上擴(kuò)展得到的全圖三維網(wǎng)格模型的示意圖。經(jīng)過(guò)至少一次向外擴(kuò)展得到人臉圖像的全圖三維模型后,人臉圖像中的背景區(qū)域也可以隨著人臉區(qū)域一起進(jìn)行旋轉(zhuǎn)、平移等變換,也就避免了當(dāng)臉部姿態(tài)變換時(shí),臉部區(qū)域和背景區(qū)域的連接處發(fā)生嚴(yán)重扭曲變形的問(wèn)題。
根據(jù)本發(fā)明的又一個(gè)實(shí)施例,在提取第一人臉圖像中的人臉特征點(diǎn)計(jì)算第一投影矩陣的步驟之前,還可以根據(jù)檢測(cè)到的人臉區(qū)域?qū)Φ谝蝗四槇D像進(jìn)行裁剪和/或縮放處理。一般來(lái)說(shuō),人臉檢測(cè)算法能夠提供一個(gè)包含人臉區(qū)域的人臉框,可以直接將該人臉框的圖裁剪出來(lái),然后縮放到統(tǒng)一的大??;也可以不裁剪,直接縮放到統(tǒng)一大小,這樣做可以保證輸入的前后兩張圖像尺寸一致,也明確了待插入中間幀圖像的尺寸,以形成(人臉大小)大小一致的漸變動(dòng)畫。
隨后在步驟s220中,根據(jù)第一投影矩陣和第一全圖三維模型以第二計(jì)算方式計(jì)算第一人臉圖像的第一紋理坐標(biāo)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,將第一投影矩陣和第一全圖三維模型相乘得到第一紋理坐標(biāo),假設(shè)(x,y,z)是全圖三維模型上一個(gè)頂點(diǎn)的坐標(biāo),mvp是投影矩陣,那么:
(u,v,1)=mvp*(x,y,z)
(u,v)就是該頂點(diǎn)(x,y,z)對(duì)應(yīng)的紋理坐標(biāo)。
隨后在步驟s230中,對(duì)第二人臉圖像依次執(zhí)行第一計(jì)算方式和第二計(jì)算方式的計(jì)算步驟,得到第二人臉圖像的第二投影矩陣、第二全圖三維模型和第二紋理坐標(biāo)。
根據(jù)本發(fā)明的實(shí)現(xiàn)方式,對(duì)第二人臉圖像執(zhí)行與第一人臉圖像同樣的計(jì)算步驟(如上述步驟s210和步驟s220所描述的那樣),即可求得第二人臉圖像的第二投影矩陣、第二全圖三維模型和第二紋理坐標(biāo)。并且,可以對(duì)第一人臉圖像和第二人臉圖像一并進(jìn)行處理,并不限制處理的先后順序。其中所表述的投影矩陣包含了“第一投影矩陣”“第二投影矩陣”……各種可能的關(guān)于人臉圖像的投影矩陣的叫法,類似的還有“人臉三維模型”“全圖三維模型”“紋理坐標(biāo)”等,只要計(jì)算方式遵從本方法所描述的那樣即可。
隨后的步驟中,對(duì)每個(gè)待插入的中間幀進(jìn)行相應(yīng)的處理,以生成插入的中間幀圖像。假設(shè)要在第一人臉圖像和第二人臉圖像中插入sumframe幀圖像,對(duì)每一幀都執(zhí)行如下步驟s240至步驟s280,以生成一個(gè)中間幀圖像,當(dāng)循環(huán)sumframe后,就計(jì)算出了所有待插入的中間幀圖像。
在步驟s240中,根據(jù)第一投影矩陣、第二投影矩陣和待插入中間幀的位置計(jì)算待插入中間幀的投影矩陣。對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的投影矩陣mvpi為:
其中,sumframe表示待插入的中間幀的總幀數(shù),sumfrme表示插入中間幀后的總幀數(shù),mvp1表示第一投影矩陣,mvp2表示第二投影矩陣。
一般地,sumfrme=sumframe+2。如,當(dāng)要在用戶輸入的前后兩幀人臉圖像中間插入10幀圖像時(shí),sumframe=10,總幀數(shù)sumfrme=12。
隨后在步驟s250中,根據(jù)第一全圖三維模型、第二全圖三維模型和待插入中間幀的位置計(jì)算待插入中間幀的全圖三維模型。對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的全圖三維模型m_expandi為:
同上,sumframe表示待插入的中間幀的總幀數(shù),sumfrme表示插入中間幀后的總幀數(shù),m_expand1表示第一全圖三維模型,m_expand2表示第二全圖三維模型。
隨后在步驟s260中,根據(jù)待插入中間幀的投影矩陣和全圖三維模型以第二計(jì)算方式計(jì)算該待插入中間幀的紋理坐標(biāo)。第二計(jì)算方式的具體計(jì)算過(guò)程在前文已經(jīng)進(jìn)行了詳細(xì)描述,此處不再累述。
隨后在步驟s270中,根據(jù)待插入中間幀的紋理坐標(biāo)與第一紋理坐標(biāo)生成該待插入中間幀的第一圖像分量、據(jù)待插入中間幀的紋理坐標(biāo)與第二紋理坐標(biāo)分別生成該待插入中間幀的第二圖像分量。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的第一圖像分量image1i和第二圖像分量image2i分別為:
同樣,sumfrme表示插入中間幀后的總幀數(shù),另外,t1表示第一紋理坐標(biāo),t2表示第二紋理坐標(biāo),ti表示待插入的第i個(gè)中間幀的紋理坐標(biāo)。
隨后在步驟s280中,結(jié)合第一圖像分量和第二圖像分量生成中間幀圖像。對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的中間幀圖像framei為:
同樣,sumfrme表示插入中間幀后的總幀數(shù),image1i表示第一圖像分量,image2i表示第二圖像分量。
當(dāng)經(jīng)過(guò)多次循環(huán),生成所有的中間幀圖像后,在步驟s290中,再由第一人臉圖像、第二人臉圖像和生成的中間幀圖像生成視頻,即漸變動(dòng)畫。
本方案基于三維人臉重建技術(shù)實(shí)現(xiàn)了人臉圖像之間的過(guò)渡,能夠利用前后兩幀人臉圖像生成一個(gè)漸變動(dòng)畫。根據(jù)本發(fā)明的方案,先利用人臉特征點(diǎn)生成人臉三維模型,再計(jì)算背景區(qū)域的深度信息,得到全圖三維模型,并根據(jù)前后兩幀圖像的三維特征內(nèi)插出多個(gè)中間幀,可以在不同臉型、不同表情、不同姿態(tài)的中間生成相應(yīng)的過(guò)渡臉型、表情和姿態(tài)。例如,從不笑到大笑的中間過(guò)渡生成微笑的表情,從一張左側(cè)臉到一張右側(cè)臉的中間生成從左往右轉(zhuǎn)頭的效果,并保證所插入的中間幀圖像的人臉的清晰度。
另外,相比于直接利用2d人臉特征點(diǎn)做網(wǎng)格化,然后進(jìn)行網(wǎng)格融合生成漸變動(dòng)畫的方案,本方案能夠很好地解決兩張人臉圖像的人臉姿態(tài)差異較大時(shí),生成的中間幀圖像中人臉扭曲的問(wèn)題。
這里描述的各種技術(shù)可結(jié)合硬件或軟件,或者它們的組合一起實(shí)現(xiàn)。從而,本發(fā)明的方法和設(shè)備,或者本發(fā)明的方法和設(shè)備的某些方面或部分可采取嵌入有形媒介,例如軟盤、cd-rom、硬盤驅(qū)動(dòng)器或者其它任意機(jī)器可讀的存儲(chǔ)介質(zhì)中的程序代碼(即指令)的形式,其中當(dāng)程序被載入諸如計(jì)算機(jī)之類的機(jī)器,并被所述機(jī)器執(zhí)行時(shí),所述機(jī)器變成實(shí)踐本發(fā)明的設(shè)備。
在程序代碼在可編程計(jì)算機(jī)上執(zhí)行的情況下,計(jì)算設(shè)備一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件),至少一個(gè)輸入裝置,和至少一個(gè)輸出裝置。其中,存儲(chǔ)器被配置用于存儲(chǔ)程序代碼;處理器被配置用于根據(jù)該存儲(chǔ)器中存儲(chǔ)的所述程序代碼中的指令,執(zhí)行本發(fā)明的方法。
以示例而非限制的方式,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息。通信介質(zhì)一般以諸如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)來(lái)體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。以上的任一種的組合也包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
本發(fā)明一并公開:
a9、如a1-8中任一項(xiàng)所述的方法,其中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的全圖三維模型m_expandi為:
其中,sumframe表示待插入的中間幀的總幀數(shù),sumfrme表示插入中間幀后的總幀數(shù),m_expand1表示第一全圖三維模型,m_expand2表示第二全圖三維模型。
a10、如a1-9中任一項(xiàng)所述的方法,其中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的第一圖像分量image1i為:
其中,sumfrme表示插入中間幀后的總幀數(shù),t1表示第一紋理坐標(biāo),ti表示待插入的第i個(gè)中間幀的紋理坐標(biāo)。
a11、如a1-9中任一項(xiàng)所述的方法,其中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的第二圖像分量image2i為:
其中,sumfrme表示插入中間幀后的總幀數(shù),t2表示第二紋理坐標(biāo),ti表示待插入的第i個(gè)中間幀的紋理坐標(biāo)。
a12、如a1-11中任一項(xiàng)所述的方法,其中,對(duì)于待插入的第i個(gè)中間幀,其對(duì)應(yīng)的中間幀圖像framei為:
其中,sumfrme表示插入中間幀后的總幀數(shù),image1i表示第一圖像分量,image2i表示第二圖像分量。
a13、如a8-12中任一項(xiàng)所述的方法,其中,待插入的中間幀的總幀數(shù)sumframe與插入中間幀后的總幀數(shù)sumfrme之間的關(guān)系是:
sumfrme=sumframe+2。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。
如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來(lái)描述普通對(duì)象僅僅表示涉及類似對(duì)象的不同實(shí)例,并且并不意圖暗示這樣被描述的對(duì)象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。
盡管根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是受益于上面的描述,本技術(shù)領(lǐng)域內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實(shí)施例。此外,應(yīng)當(dāng)注意,本說(shuō)明書中使用的語(yǔ)言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)許多修改和變更都是顯而易見(jiàn)的。對(duì)于本發(fā)明的范圍,對(duì)本發(fā)明所做的公開是說(shuō)明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書限定。