夏天然, 丁友東, 于 冰, 黃 曦
(1.上海大學(xué)上海電影學(xué)院,上海200072;2.上海大學(xué)上海電影特效工程技術(shù)研究中心,上海200072)
作為一種早期藝術(shù)的表達(dá)方式,老電影記錄了早年社會的面貌,具有極大的研究價(jià)值,是不可或缺的一種史實(shí)資料.然而,由于歷史和自然原因,老電影膠片存在著不同程度的損壞,其中黑白影片更為嚴(yán)重.膠片的噪聲、劃痕、斑點(diǎn)、抖動、閃爍、幀丟失、大面積破損和顏色退化等也都隨著膠片數(shù)字化保留下來,需要修復(fù)人員進(jìn)行逐幀的人工修復(fù).計(jì)算機(jī)自動化修復(fù)技術(shù)不斷更新,如數(shù)字視頻去噪、顏色增強(qiáng)矯正、去閃爍、劃痕與斑點(diǎn)的檢測和修復(fù)等[1-4],提高了人工修復(fù)的速度.然而,對于影片畫面大面積破損、有用信息大量丟失的情況,幀畫面的完全復(fù)原對人工修復(fù)和計(jì)算機(jī)自動修復(fù)仍是不小的挑戰(zhàn).
目前,修復(fù)面積破損的方法主要有兩類:圖像修補(bǔ)和圖像補(bǔ)全.圖像修補(bǔ)是通過在參數(shù)模型中引入平滑先驗(yàn)知識,或使用偏微分方程(partial differential equations,PDEs)將局部的結(jié)構(gòu)特征從破損洞的邊緣由外向內(nèi)進(jìn)行擴(kuò)散,由于該方法使用數(shù)學(xué)模型計(jì)算傳播特征,只適用于修補(bǔ)直線、曲線等小面積的破損.基于此,Efros等[5]首次將紋理統(tǒng)計(jì)特性和相似性先驗(yàn)考慮在內(nèi),利用圖像紋理具有一定規(guī)律的特性,從相似區(qū)域拷貝紋理信息并進(jìn)行相應(yīng)的縫合.這類方法稱為基于樣本的圖像補(bǔ)全,其中選取的樣本可以是像素點(diǎn)或像素塊.根據(jù)樣本拷貝范圍的不同,圖像補(bǔ)全可分為局部圖像補(bǔ)全和全局圖像補(bǔ)全,其中局部補(bǔ)全主要從當(dāng)前圖像或幀中選取相似樣本.經(jīng)典的局部圖像補(bǔ)全方法有Criminisi等[6]提出的紋理和結(jié)構(gòu)分離的補(bǔ)全方法,該方法優(yōu)先考慮破損區(qū)域的結(jié)構(gòu)信息,從而使得修復(fù)結(jié)果更為合理.另外,Huang等[7]提出了平面結(jié)構(gòu)指導(dǎo)的圖像補(bǔ)全方法,該方法自動提取圖像幾何透視約束和結(jié)構(gòu)化規(guī)律約束,并使用這兩種約束指導(dǎo)破損區(qū)域像素塊的填充,很好地解決了結(jié)構(gòu)化的幾何變形圖像破損.全局圖像補(bǔ)全的方法[8-13]則是將搜索域擴(kuò)展到鄰幀,充分考慮時(shí)空的一致性,使得補(bǔ)全后的畫面內(nèi)容更為自然.然而,兩種圖像補(bǔ)全方法中相似塊的錯誤搜尋和不自然的拼貼都會導(dǎo)致大面積破損區(qū)域無法進(jìn)行較好的過渡修復(fù),這對于追求流暢自然播放效果的老電影來說是無法容忍的.
目前,老電影的修復(fù)是使用MTI FILM公司開發(fā)的DRSTMNOVA軟件來進(jìn)行的.雖然上述軟件還沒有成熟的大面積破損修復(fù)模塊,但在DRS模塊中有一項(xiàng)前后幀替代工具,通過框選前后幀相似內(nèi)容替代破損幀畫面可以大致完成破損的修復(fù).通過這種方法能夠較好地修復(fù)背景不動的畫面,但對于前景運(yùn)動畫面,直接的替代會出現(xiàn)拼貼不自然的現(xiàn)象.通過學(xué)習(xí)該工具的替代思想,并針對上述圖像修復(fù)方法的不足,本工作不再局限于尋找最相似塊,而是通過運(yùn)動估計(jì)來整體還原破損區(qū)域的狀態(tài),提出了子幀縫合修復(fù)算法.子幀縫合修復(fù)算法首先將破損區(qū)域看成待修復(fù)子幀,并通過人工修復(fù)或前后幀尋找得到合適的前后參考子幀;然后,在插值過程中使用光流估計(jì)得到兩參考子幀的運(yùn)動路徑,通過自適應(yīng)的雙向幀插值獲得預(yù)處理中間子幀,并使用塊匹配進(jìn)行中間子幀重構(gòu);最后,在修復(fù)過程中將插值得到的中間子幀粘貼于破損處,并使用動態(tài)規(guī)劃法計(jì)算幀內(nèi)重合部分的最優(yōu)路徑完成子幀的圖像縫合.由于子幀縫合修復(fù)算法使用幀插值對破損區(qū)域進(jìn)行整體估計(jì),破損區(qū)域內(nèi)不會出現(xiàn)模糊或修復(fù)痕跡明顯等現(xiàn)象.實(shí)驗(yàn)結(jié)果表明,子幀縫合修復(fù)算法不僅比傳統(tǒng)方法有更好的修復(fù)效果,而且簡單方便、易操作,可以協(xié)助人工完成更精細(xì)的運(yùn)動破損畫面修復(fù).
基于子幀縫合的老電影大面積破損修復(fù)算法的流程框架如圖1所示.預(yù)處理步驟包括鏡頭分割和幀預(yù)修復(fù),這是因?yàn)橛捌煌R頭內(nèi)容相差較大,修復(fù)前需通過人工方式進(jìn)行鏡頭分割,保證待修復(fù)幀的前后參考幀都處于同一鏡頭內(nèi).另外,由于畫面的抖動、閃爍、細(xì)小的劃痕斑點(diǎn)會影響后續(xù)的步驟,需要對幀進(jìn)行預(yù)修復(fù).對于畫面的抖動和細(xì)小的劃痕斑點(diǎn)等問題,使用老電影DRSTMNOVA修復(fù)軟件進(jìn)行修復(fù).閃爍問題則采用文獻(xiàn)[14]中的顏色傳遞算法確定參考幀,并將參考幀中的顏色傳遞給鏡頭中的其他幀,從而保證鏡頭色調(diào)的一致性.在框選子幀前,確保修復(fù)鏡頭中有完好的前后參考幀以供參考,如圖1中子幀框選步驟的I1幀和I2幀.框選范圍以完整包含所有破損區(qū)域并盡可能縮小框選面積為基準(zhǔn),如此既能完全修復(fù)破損,又充分保留原始信息.如果鏡頭中全部幀都已損壞,可通過人工修復(fù)得到兩張關(guān)鍵參考幀.框選好破損子幀和前后參考子幀后,進(jìn)入子幀插值步驟和子幀縫合步驟.子幀插值分為3步:運(yùn)動路徑估計(jì)、雙向幀插值和中間子幀重構(gòu).子幀插值步驟中的I1s、I2s和Ir分別表示前向參考子幀、后向參考子幀和待修復(fù)子幀.如圖1中像素A到像素A′的虛線所示,運(yùn)動路徑可通過計(jì)算像素對在時(shí)間軸上的運(yùn)動矢量來獲得.確定運(yùn)動路徑后,便可將合適的像素沿該路徑移動到待修復(fù)子幀中.針對雙向幀插值后存在的黑洞現(xiàn)象,使用塊匹配對中間子幀進(jìn)行幀重構(gòu).子幀縫合步驟中,將插好的子幀Ir使用圖像縫合技術(shù)縫合在待修復(fù)幀的破損區(qū)域.對于邊緣縫合痕跡明顯的地方,可結(jié)合人工修復(fù)完成邊緣微調(diào),完善總體修復(fù)效果.
圖1 基于子幀縫合的老電影大面積破損修復(fù)算法的流程框架Fig.1 Flow framework of old film restoration quilting based on subframe
使用基于運(yùn)動路徑的插值方法對子幀進(jìn)行插值,其中運(yùn)動路徑表示前后參考幀對應(yīng)像素在時(shí)間維度的運(yùn)動矢量.假設(shè)前向參考幀中的像素點(diǎn)為(x,y,t),后向參考幀中的對應(yīng)像素點(diǎn)為 (,則兩像素差值為
式中,G是一個高斯濾波器.平滑項(xiàng)則假定分段的平滑流場,
使用迭代加權(quán)最小二乘法對式(5)進(jìn)行金字塔式的迭代優(yōu)化,求出最佳的(u,v)值,進(jìn)而得到所需的運(yùn)動路徑.
在插值過程中,使用自適應(yīng)的雙向幀插值法對待修復(fù)子幀進(jìn)行插值處理.將待修復(fù)子幀看作黑幀,分別從前幀和后幀中選取合適的像素沿運(yùn)動路徑平移到待修復(fù)子幀中.對于多幀的修復(fù),前一半的待修復(fù)子幀優(yōu)先考慮前向參考子幀的像素,而后一半的待修復(fù)子幀優(yōu)先考慮后向參考子幀的像素.由于插完后的子幀存在黑洞現(xiàn)象,因而需要對其進(jìn)行重構(gòu)修復(fù),保證結(jié)果自然.為保證重構(gòu)的準(zhǔn)確率,使用近鄰域像素對黑洞進(jìn)行預(yù)填補(bǔ).
在中間子幀重構(gòu)的過程中,使用塊匹配從前后參考子幀中尋找最相似的塊對中間子幀進(jìn)行重新構(gòu)建.塊匹配的核心是在圖像B中尋找與圖像A最為相似的塊的最近鄰域場(nearest neighbor fields,NNFs).Barnes等[16-17]分兩步解決了最近鄰域場的計(jì)算,首先使用隨機(jī)數(shù)或已知的先驗(yàn)信息初始化NNFs,然后對NNFs進(jìn)行不斷的迭代.迭代過程分為傳播和隨機(jī)搜索.假定函數(shù)表示NNFs的偏移量,a是圖像A的塊坐標(biāo),b是圖像B的塊坐標(biāo),那么f(a)=b?a.在傳播過程中,聯(lián)合考慮(x?1,y),(x,y?1)和(x,y)的偏移情況,因而有
在隨機(jī)搜索過程中,搜索半徑呈指數(shù)規(guī)律增長,有
式中,V0=f(x,y),m表示最大搜索半徑,ε表示搜索窗口尺寸比例,Ni表示在[?1,1]×[?1,1]的隨機(jī)數(shù).在搜索域內(nèi)隨機(jī)搜索最相似塊,直到搜索半徑mεi小于單個像素.計(jì)算完NNFs后,根據(jù)所得匹配塊偏移量完成中間子幀的矯正.
直接將插值后的子幀粘貼在破損區(qū)域會出現(xiàn)邊緣痕跡明顯的現(xiàn)象.圖像融合[18-19]致力于將背景和移植的圖像塊融合,并不適用于對破損區(qū)域的修復(fù),而且融合會導(dǎo)致邊界模糊.因而,為了減少邊界效應(yīng),此處使用圖像縫合技術(shù)對子幀進(jìn)行縫合處理.縫合的關(guān)鍵是在圖像邊緣重疊部分找到一條最優(yōu)的縫,通過這條縫,重疊區(qū)域被分成兩部分,其中縫左邊或上邊的重疊區(qū)域選取左邊或上邊圖像的像素值,縫右邊或下邊的重疊區(qū)域則選取右邊或下邊圖像的像素值.
重疊區(qū)域最優(yōu)的縫可轉(zhuǎn)換成求解使得邊界誤差成本最小的像素路徑.圖像縫合的示意圖如圖2(a)所示,其中A0,B0分別是圖像A和圖像B重疊部分的圖像,I0是兩圖像的重疊區(qū)域,(i,j)表示重疊區(qū)域中的像素坐標(biāo).縫s的能量函數(shù)為
圖2 子幀縫合Fig.2 Subframe quilting
老電影大面積破損修復(fù)的鏡頭素材選自《神奇的劍塔》《馬路天使》和《山間鈴響馬幫來》.對《神奇的劍塔》中代表性的頭部左轉(zhuǎn)鏡頭人工添加破損,測試本方法相較于其他方法的可行性.選取《馬路天使》和《山間鈴響馬幫來》中真實(shí)存在的破損鏡頭,測試本方法對實(shí)際破損幀畫面的修復(fù)效果.
對人工合成的影片進(jìn)行修復(fù),并通過計(jì)算不同修復(fù)情況下的峰值信噪比(peak signal to noise ratio,PSNR)對影片修復(fù)結(jié)果進(jìn)行客觀評價(jià).圖3為《神奇劍塔》中頭部左轉(zhuǎn)鏡頭某一幀采用不同方法修復(fù)的實(shí)驗(yàn)結(jié)果.實(shí)驗(yàn)的幀大小為1 920×1 080像素,子幀選取大小為640×676像素,前后參考幀選取當(dāng)前幀的前一幀和后一幀.為了清晰展現(xiàn)修復(fù)效果,截取幀中被修復(fù)的部分進(jìn)行說明.圖3(b)是采用文獻(xiàn)[7]中算法的修復(fù)結(jié)果,顯然幀內(nèi)參考的圖像補(bǔ)全修復(fù)方法并不適用于人物面部缺損的構(gòu)建,無法實(shí)現(xiàn)自然的畫面修復(fù).由于全局圖像補(bǔ)全算法針對視頻畫面物體去除的補(bǔ)全,側(cè)重于背景的復(fù)原,此處不再探討.圖3(c)是使用DRSTMNOVA軟件將前幀的畫面替代破損畫面的結(jié)果,因?yàn)槿宋锴昂髱嬖谶\(yùn)動,所以局部放大后能看到明顯的拼貼誤差(見圖3(f)).通過本工作基于運(yùn)動路徑的子幀插值算法進(jìn)行修復(fù),由圖3(d)和(e)可以看出,修復(fù)后的畫面都有相對自然的人物中間狀態(tài),而子幀縫合技術(shù)的運(yùn)用,使得圖3(h)比圖3(g)擁有更為自然的邊緣過渡.表1為頭部左轉(zhuǎn)鏡頭破損幀修復(fù)結(jié)果在不同算法下的PSNR值.通過圖3和表1可知,本工作提出的算法優(yōu)于以文獻(xiàn)[7]為代表的單張圖像修復(fù)算法和DRS修復(fù)軟件.
圖3 《神奇的劍塔》的修復(fù)實(shí)驗(yàn)結(jié)果Fig.3 Experimental results of “The Magical Sword Tower”
表1 影片修復(fù)算法不同時(shí)的PSNR值Table 1 PSNR values of different algorithms for film restoration dB
除了修復(fù)結(jié)果,老電影的修復(fù)時(shí)間同樣重要.由于畫面損傷程度不同,人工修復(fù)熟練度不同,使用DRSTMNOVA軟件修復(fù)的時(shí)間是無法預(yù)估的.表2為文獻(xiàn)[7]中的算法與本算法在執(zhí)行時(shí)間上的比較.由表2可知,本算法的計(jì)算速度明顯高于文獻(xiàn)[7]中的算法.通常老電影多幀畫面中僅少數(shù)幾幀出現(xiàn)較為嚴(yán)重的大面積破損,而精細(xì)的修復(fù)這類畫面需要耗費(fèi)很長時(shí)間.使用54.9 s修復(fù)640×676像素的破損畫面是可以接受的,耗時(shí)快于人工逐像素的拷貝修復(fù).
表2 電影修復(fù)算法不同時(shí)執(zhí)行時(shí)間的比較Table 2 Comparison of different algorithm execution time for film restoration s
實(shí)際情況下老電影大面積破損修復(fù)更為復(fù)雜,修復(fù)難度也更高.對于單幀的破損修復(fù),選取《山間鈴響馬幫來》中的大面積污漬唱歌畫面進(jìn)行修復(fù).待修復(fù)鏡頭中類似圖4(a)的破損連續(xù)幀有9幀,并且該鏡頭的第一幀就出現(xiàn)大面積污漬.由于沒有完好的前向參考幀,這連續(xù)9幀中重疊破損的區(qū)域采用本工作中的方法無法修復(fù),因而只對可以從前幀中尋找到完好參考內(nèi)容的第9幀進(jìn)行修復(fù).在《山間鈴響馬幫來》的修復(fù)實(shí)驗(yàn)中,幀大小為2 048×1 556像素,子幀選取大小為649×1 553像素,前向參考幀選取鏡頭中的第1幀畫面,而后向參考幀選取第10幀.通過本工作子幀插值的方法插出中間8幀,并使用第8幀進(jìn)行子幀縫合,實(shí)驗(yàn)結(jié)果如圖4所示.對于多幀的破損修復(fù),選取《馬路天使》中連續(xù)4幀存在大面積亮斑的畫面進(jìn)行修復(fù),結(jié)果如圖5所示.由于該鏡頭要修復(fù)的破損幀數(shù)增加,破損區(qū)域還包含人物的運(yùn)動,若恢復(fù)出合理的人物狀態(tài)較難.在《馬路天使》的修復(fù)實(shí)驗(yàn)中,幀大小為720×576像素,子幀選取大小為300×240像素,前后參考幀選取當(dāng)前四幀的前一幀和后一幀.根據(jù)光流估計(jì),修復(fù)算法較好地還原了亮斑處人物的運(yùn)動,為人工修復(fù)時(shí)確定人物的運(yùn)動狀態(tài)提供了很好的參考.從圖4和圖5可以看出,本工作提出的算法總體上解決了有完好前后參考幀的實(shí)際運(yùn)動破損畫面的修復(fù),并取得了較自然的修復(fù)結(jié)果.
圖4 《山間鈴響馬幫來》的修復(fù)實(shí)驗(yàn)結(jié)果Fig.4 Experimental results of“Caravans with Ring”
圖5 《馬路天使》的修復(fù)實(shí)驗(yàn)結(jié)果Fig.5 Experimental results of “Street Angel”
本工作提出了一種子幀縫合的老電影大面積破損修復(fù)方法,該方法將幀的破損區(qū)域看成子幀,通過前后參考子幀進(jìn)行子幀插值處理,解決了包含物體運(yùn)動的老電影大面積破損問題.同時(shí),該方法通過子幀縫合,淡化了直接粘貼的邊緣痕跡,使得修復(fù)更為自然.雖然子幀縫合的大面積破損修復(fù)并不能完全復(fù)原破損前的狀態(tài),但實(shí)驗(yàn)結(jié)果較為自然,在實(shí)際影片的播放過程中看不出明顯的修復(fù)痕跡.不管是作為老電影直接修復(fù)工具還是協(xié)助修復(fù)工具,本工作提出的方法都有一定的現(xiàn)實(shí)意義和實(shí)際可操作性,切實(shí)解決了老電影的大面積破損修復(fù)問題.