黃 曦,丁友東,吳 兵
(上海大學(xué) 上海電影學(xué)院,上海 200072)
?
老電影全局閃爍修復(fù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
黃 曦,丁友東,吳 兵
(上海大學(xué) 上海電影學(xué)院,上海 200072)
針對(duì)老電影中褪色閃爍的現(xiàn)象,研究了一種基于顏色傳遞和色彩校正的全局閃爍修復(fù)方法。該方法主要分三個(gè)步驟對(duì)視頻序列進(jìn)行修復(fù),首先對(duì)導(dǎo)入的圖像序列進(jìn)行分鏡并判斷是否存在閃爍,然后對(duì)閃爍序列進(jìn)行參考幀選取,如果無參考幀,則采用色彩校正來產(chǎn)生參考幀,最后通過顏色傳遞進(jìn)行全局顏色閃爍修復(fù)。在VS2013中使用OpenCV實(shí)現(xiàn)了相關(guān)算法,并詳細(xì)介紹了系統(tǒng)實(shí)現(xiàn)的關(guān)鍵代碼。實(shí)驗(yàn)表明,該系統(tǒng)能夠較好地完成對(duì)老電影全局閃爍的交互式修復(fù)。
老電影修復(fù);全局閃爍;顏色傳遞;色彩校正
電影是歷史文化的縮影,也是一份極為珍貴的可視化資料,然而由于諸多原因?qū)е吕想娪俺霈F(xiàn)了不同程度的損傷,閃爍就是其中一個(gè)較為嚴(yán)重的問題。閃爍的本質(zhì)是圖像相鄰幀在色彩、亮度上發(fā)生了不自然的變化[1],這些變化并非導(dǎo)演在拍攝時(shí)為營(yíng)造某種氛圍而特意加上去的,而是由于前期拍攝操作不當(dāng)或后期保存時(shí)的諸多原因造成的。這些變化在時(shí)間和空間上是不確定的,單幀觀看不易發(fā)現(xiàn),只有連續(xù)放映時(shí)才能檢測(cè)到這種缺陷[2-3]。
目前,大多數(shù)的修復(fù)方法都需要對(duì)圖像序列中的閃爍進(jìn)行建模,然后估計(jì)該模型的閃爍參數(shù)。諶安軍等通過對(duì)圖像序列中的局部閃爍進(jìn)行基于余弦基的建模和逐次超松弛迭代的方法,實(shí)現(xiàn)了對(duì)嚴(yán)重局部亮度閃爍的電影的修復(fù)[4]。周磊等設(shè)計(jì)了一種基于塊的局部區(qū)域參數(shù)估計(jì)和補(bǔ)償方法,通過對(duì)圖像序列進(jìn)行基于塊的閃爍模型參數(shù)估計(jì)和當(dāng)前幀補(bǔ)償模型的設(shè)計(jì),實(shí)現(xiàn)了參照模型下的受損圖像亮度修復(fù)[5]。趙培棟等提出了一種基于多幀參考的分塊視頻閃爍消除法,在有效去除閃爍現(xiàn)象的同時(shí)修正其帶來的運(yùn)動(dòng)模糊現(xiàn)象[6]。Julie Delon基于尺度空間理論使用尺度時(shí)間均衡的方法實(shí)現(xiàn)了全局亮度閃爍的修復(fù)[7]。但已有的方法大都具有局限性,并不適用于由于褪色產(chǎn)生的顏色閃爍現(xiàn)象。
本文采用Visual Studio和OpenCV圖像處理庫(kù),將圖像領(lǐng)域的色彩校正、顏色傳遞等方法引入老電影序列的閃爍修復(fù)中,在實(shí)現(xiàn)傳統(tǒng)方法的同時(shí),通過方案整合和考慮不同情況,很好地解決了全局褪色閃爍修復(fù)問題,并設(shè)計(jì)了一套完整的自動(dòng)化修復(fù)系統(tǒng)。
1.1 圖像色彩校正
在圖像序列的閃爍修復(fù)前,需要找到比照修復(fù)的參考幀,但如果整個(gè)鏡頭都產(chǎn)生了或多或少的褪色,沒有符合要求的參考幀,那么就需要選定某一幀進(jìn)行色彩校正,然后用其作為參考幀。Ruderman提出的lαβ空間具有通道之間最小相關(guān)性的特點(diǎn),被廣泛用于自然場(chǎng)景圖像的色彩校正[8]。Reinhard在Ruderman的基礎(chǔ)上,提出了在lαβ空間的色彩校正算法[9]。該方法假設(shè)圖像的偏色現(xiàn)象是圖像的RGB通道數(shù)值乘以未知常量Cr,Cg,Cb所引起的。此舉不會(huì)改變圖像在lαβ空間的方差,但會(huì)改變平均值。因此,色彩校正主要依靠修正通道的平均值。白色在lαβ空間中定義為(0,0,0),將表示色彩的α,β通道平均值調(diào)整至0,同時(shí)保留l通道的平均值和各通道的標(biāo)準(zhǔn)差,色彩校正就能實(shí)現(xiàn)。其算法的步驟為:
1)將需要校正的圖像從RGB顏色空間轉(zhuǎn)換到lαβ顏色空間。
2)計(jì)算出該圖像在α,β兩個(gè)通道的均值,記為mα,mβ。
3)計(jì)算出該圖像總共的像素點(diǎn),記為N。
4)利用式(1)調(diào)整圖像的均值
(1)
式中:α,β表示lαβ顏色空間通道內(nèi)所有像素的原始值;α′,β′表示處理好之后的所有像素值;mα,mβ分別表示α,β兩個(gè)通道均值;Cα,Cβ分別表示α,β兩個(gè)通道實(shí)際需求的通道均值,若圖像僅需要色彩校正而不需額外添加色彩效果,則Cα,Cβ均為0。
5) 將處理好之后的圖像轉(zhuǎn)回RGB顏色空間。
1.2 全局顏色傳遞算法
顏色傳遞是一種改變圖像顏色的算法,通過定義提供結(jié)構(gòu)的源圖像和提供色彩布局的參考圖像,就可以得到既有源圖像的形狀又有參考圖像顏色的合成圖像。Reinhard提出了一種顏色傳遞算法,通過把圖像轉(zhuǎn)換到lαβ空間,繼而進(jìn)行統(tǒng)計(jì)學(xué)計(jì)算來實(shí)現(xiàn)全局的顏色傳遞[5],此種方法處理數(shù)據(jù)少,計(jì)算復(fù)雜度低,非常適合于大批量圖像的處理。顏色傳遞算法具體步驟如下:
1) 將源圖像和參考圖像均從RGB顏色空間轉(zhuǎn)換到lαβ顏色空間,這樣就可以去除兩圖像之間的相關(guān)性。
3) 按式(2)將各個(gè)通道的所有像素值分別減去其均值,達(dá)到弱化源圖像的整體色彩信息的目的。
(2)
4)將源圖像與參考圖像標(biāo)準(zhǔn)差之比作為通道值偏移量的系數(shù),按式(3)將參考圖像的細(xì)節(jié)信息映射到源圖像中。
(3)
式中:l′,α′,β′表示合成圖像在lαβ顏色空間的三通道的所有像素值。
5) 在所得合成圖的基礎(chǔ)上按式(4)加上參考圖像各通道的均值,添加參考圖像的整體信息以完成最終合成效果。
(4)
式中:l,α,β是合成圖像最后得到的三通道所有像素值。
6) 完成顏色傳遞后將合成圖像由lαβ顏色空間轉(zhuǎn)換到RGB顏色空間。
2.1 修復(fù)方法的流程
本文通過對(duì)彩色老電影中的全局閃爍情況的分析,設(shè)計(jì)了一種采用彩色校正和顏色傳遞的閃爍校正方法,并設(shè)計(jì)了自動(dòng)修復(fù)系統(tǒng),方法的流程如圖1所示。
圖1 老電影全局閃爍修復(fù)系統(tǒng)流程圖
由于本文所提方法適用于同一個(gè)鏡頭下的閃爍修復(fù),對(duì)于導(dǎo)入的序列存在多個(gè)鏡頭的情況,需要進(jìn)行分鏡處理。在同一組鏡頭序列中,選擇合適的一幀圖像作為參考幀,若無恰當(dāng)?shù)倪x擇則使用色彩校正算法處理褪色情況較輕的一幀,將處理后的結(jié)果作為參考幀。然后使用顏色傳遞算法將參考幀的顏色特性依次傳遞給同組每一幀圖像。當(dāng)同一組分鏡處理好之后,重復(fù)上述過程直至導(dǎo)入序列的每一幀均處理完畢。
2.2 修復(fù)方法的實(shí)現(xiàn)
本文的系統(tǒng)采用VisualStudio2013作為開發(fā)工具,制作界面選擇了基于對(duì)話框的MFC,同時(shí)配置了OpenCV2.4.9來支持算法的編寫。
利用VC++和OpenCV實(shí)現(xiàn)的系統(tǒng)的具體過程和部分代碼如下:
1)初始化
圖像序列默認(rèn)以u(píng)int8的格式導(dǎo)入系統(tǒng),為了確保后續(xù)數(shù)據(jù)處理的精確度,將圖像改為float格式,把圖像數(shù)值從(0,255)映射到(0.0,1.0)區(qū)間:
src.convertTo(src,CV_32FC3,1.0f/255.0f);
2)RGB到lαβ顏色空間的轉(zhuǎn)換
對(duì)于判定有閃爍特性的分鏡序列,在整組序列找不到合適的參考幀時(shí),選擇一幀偏色情況較輕的圖像進(jìn)行色彩校正處理,將處理后的圖像作為參考幀。
在色彩校正之前,需要將圖像從RGB顏色空間轉(zhuǎn)換到lαβ空間。轉(zhuǎn)換的參考公式各異,對(duì)于本系統(tǒng),選擇了Reinhard等人提供的公式[9],其優(yōu)點(diǎn)在于公式簡(jiǎn)潔,無需數(shù)值分段處理。核心代碼如下:
L=0.3811*R+0.5783*G+0.0402*B;
M=0.1967*R+0.7244*G+0.0782*B;
S=0.0241*R+0.1288*G+0.8444*B;
l=(L+M+S)/sqrt(3.0);
a=(L+M-2*S)/sqrt(6.0);
b=(L-M)/sqrt(2.0);
3)色彩校正
對(duì)于轉(zhuǎn)換到lαβ顏色空間的圖像求取其平均值:
ScalarsrcMeans;
srcMeans=mean(srcLab);
再用上文提到的色彩校正公式進(jìn)行計(jì)算:
Data[i]=Data[i]-srcMeans[0]+A/N;
Data[i+1]=Data[i+1]-srcMeans[1]+B/N;
4)顏色傳遞
對(duì)于轉(zhuǎn)換到lαβ顏色空間的待處理幀和參考幀,首先求取每個(gè)通道的平均值和標(biāo)準(zhǔn)差:
meanStdDev(srcLab,srcMeans,srcVariances);
meanStdDev(refLab,refMeans,refVariances);
再用上文提到的顏色傳遞公式進(jìn)行計(jì)算:
for(intchanel=0;chanel<3;chanel++)
{
dataTemp[chanel]=refVariances[chanel]/srcVariances[chanel];
}
Data[i]=dataTemp[0]*(Data[i]-srcMeans[0])+refMeans[0];
Data[i+1]=dataTemp[1]*(Data[i+1]-srcMeans[1])+refMeans[1];
Data[i+2]=dataTemp[2]*(Data[i+2]-srcMeans[2])+refMeans[2];
5)lαβ到RGB顏色空間的轉(zhuǎn)換
處理好后的圖像幀需從lαβ空間轉(zhuǎn)回RGB空間,其計(jì)算過程是RGB到lαβ顏色空間轉(zhuǎn)換的逆過程:
L=l/sqrt(3.0)+a/sqrt(6.0)+b/sqrt(2.0);
M=l/sqrt(3.0)+a/sqrt(6.0)-b/sqrt(2.0);
S=l/sqrt(3.0)-2*a/sqrt(6.0);
R=4.4679*L-3.5873*M+0.1193*S;
G=-1.2186*L+2.3809*M-0.1624*S;
B=0.0497*L-0.2439*M+1.2045*S;
值得注意的是,在顏色傳遞的過程中,單個(gè)像素的值可能會(huì)超出原定范圍,故圖像在轉(zhuǎn)回RGB空間后,需檢查值的溢出問題:
if(Data[i]>1.0)
Data[i]=1.0;
elseif(Data[i]<0.0)
Data[i]=0.0;
6)后處理
將最后的處理結(jié)果的格式轉(zhuǎn)回uint類型,用于顯示及存儲(chǔ):
dst.convertTo(dst,CV_8UC3,255)
3.1 系統(tǒng)界面
本系統(tǒng)由兩個(gè)主界面組成,圖2是整個(gè)系統(tǒng)的主界面,此界面主要用于展示使用顏色傳遞算法對(duì)整個(gè)序列的處理效果。界面分為3個(gè)區(qū)域,界面左邊的2個(gè)圖形框分別用于顯示同一幀圖像處理前與處理后的對(duì)比效果。界面右側(cè)下部的2個(gè)圖形框用于統(tǒng)計(jì)該序列處理前和處理后所有圖像的RGB均值,用以說明顏色傳遞算法的實(shí)用性。右側(cè)上部的按鈕用以實(shí)現(xiàn)不同的功能。
圖2 系統(tǒng)主界面1(截圖)
圖3是本系統(tǒng)針對(duì)單幀圖像處理結(jié)果的界面。相對(duì)于主界面只能處理固定文件夾下的整個(gè)圖像序列,此界面能對(duì)靈活載入計(jì)算機(jī)內(nèi)任意位置的圖像進(jìn)行處理,并且該界面主要用于顏色傳遞算法與色彩校正算法的對(duì)比。界面分為2個(gè)區(qū)域,左邊的4個(gè)圖形框?yàn)檎故緟^(qū)域,分別展現(xiàn)了源圖像、參考圖像、運(yùn)用顏色傳遞進(jìn)行處理后的合成圖像,以及源圖像經(jīng)過色彩校正之后的圖像。界面的右側(cè)區(qū)域主要是算法的選取,當(dāng)選取色彩校正時(shí),需手動(dòng)輸入α、β通道的均值。
圖3 系統(tǒng)主界面2(截圖)
3.2 實(shí)驗(yàn)分析
本文選用動(dòng)畫電影《沒頭腦和不高興》中的一組鏡頭序列作為實(shí)驗(yàn)用例,圖像大小為2 048×1 556,該序列共有50幀圖像,褪色閃爍現(xiàn)象較為嚴(yán)重。
由于實(shí)驗(yàn)序列中沒有合適的參考幀,故選擇偏色情況相對(duì)較輕的一幀圖像,在色彩校正之后作為整段序列的參考幀。圖4a選自實(shí)驗(yàn)序列第33幀圖像,偏色不太嚴(yán)重,在進(jìn)行色彩校正后如圖4b所示,兩幅圖前后對(duì)比可見,經(jīng)過校正后圖像偏紅的現(xiàn)象得到明顯改善。
圖4 色彩校正結(jié)果對(duì)比
將圖4b所示結(jié)果作為實(shí)驗(yàn)序列的參考幀,在lαβ顏色空間內(nèi)計(jì)算出參考幀及序列中其他待處理幀的顏色特性,按照本文第一部分給出的式(2)~(4)依次將參考幀的顏色特性傳遞給其他幀。圖5b展示了經(jīng)過顏色傳遞算法處理后序列的第30~35幀結(jié)果,相對(duì)于圖5a的原始圖像序列,褪色現(xiàn)象得到明顯改善,圖像的色彩基本達(dá)到一致。
圖5 全局閃爍修復(fù)效果
圖6a為實(shí)驗(yàn)序列原始圖像的RGB通道均值的統(tǒng)計(jì)結(jié)果,總計(jì)共50幀。圖6b為經(jīng)過色彩校正和顏色傳遞處理后的統(tǒng)計(jì)結(jié)果。相對(duì)原始均值統(tǒng)計(jì),處理后序列的均值曲線平滑,從客觀上證明了顏色傳遞算法在處理褪色閃爍上有明顯效果。
圖6 處理前后序列均值統(tǒng)計(jì)對(duì)比
本文采用基于顏色傳遞和色彩校正的方法實(shí)現(xiàn)了對(duì)老電影中全局閃爍的自動(dòng)修復(fù)。在VS2013中利用OpenCV2.4.9實(shí)現(xiàn)了視頻序列處理的相關(guān)算法。針對(duì)分鏡后老電影序列,在修復(fù)序列無參考幀的情況下,
采用色彩校正修復(fù)一幀圖像,將修復(fù)后的圖像作為參考幀,再使用顏色傳遞算法對(duì)該序列進(jìn)行修復(fù)。實(shí)驗(yàn)證明,本方法對(duì)全局褪色閃爍的去除效果顯著。
[1] 李志永,杜坤.電影數(shù)字修復(fù)中全局閃爍的去除[J].現(xiàn)代電影技術(shù),2010(2):15-17.
[2]PITIEF,DAHYOTR,KELLYF,etal.Statisticalmethodsinvideoprocessing[M].Heidelberg:Springer, 2004: 153-164.
[3] 張然然,吳冏,丁友東,等.電影檔案中亮度閃爍的修正[J].計(jì)算機(jī)工程,2010,36(5):272-273.
[4] 諶安軍,滕升華,鄒謀炎.圖像序列中亮度閃爍去除[J].電子與信息學(xué)報(bào),2007,29(1):39-42.
[5] 周磊.電影膠片修復(fù)及噪聲處理關(guān)鍵技術(shù)的研究[D].上海:上海交通大學(xué),2008.
[6] 趙培棟,韓軍,閔友鋼,等.基于多幀參考的分塊視頻閃爍消除算法[J].上海大學(xué)學(xué)報(bào):自然科學(xué)版,2010,16(4):342-348.
[7]JULIED.Movieandvideoscale-timeequalizationapplicationtoflickerreduction[J].IEEEtransactionsonimageprocessing, 2006, 15(1):241-248.
[8]RUDERMANDL,CRONINTW,CHIAOCC.Statisticsofconeresponsestonaturalimages:implicationsforvisualcoding[J].OpticalsocietyofAmerica,1998(15):2036-2045.
[9]REINHARDE,ASHIKHMINM,GOOCHB,etal.Colortransferbetweenimages[J].IEEEcomputergraphicsandapplications, 2001(9):34-41.
黃 曦(1992— ),碩士生,主研圖形圖像處理;
丁友東(1967— ),博士,教授,博士生導(dǎo)師,主要研究方向?yàn)橛?jì)算機(jī)圖形學(xué)、數(shù)字影視技術(shù)等;
吳 兵(1983— ),博士生,主要研究方向?yàn)閳D形圖像處理。
責(zé)任編輯:閆雯雯
Implementation and design of old film global flicker restoration system
HUANG Xi, DING Youdong, WU Bing
(ShanghaiFilmAcademy,ShanghaiUniversity,Shanghai200072,China)
Aiming at flicker phenomenon in old films, a method based on color transform and hue correction is presented. There are three key steps to remove flicker on the video sequence. Firstly, the imported sequence is grouped and then each group is judged whether there is flicker. Secondly, reference frame is chosen in each group. If there is no appropriate one, a frame is corrected with hue correction algorithm. Finally, global flicker is removed by using color transform algorithm in each sequence group. The relevant algorithm is designed by VS2013 and OpenCV, key codes are given as well. Results show that the method can effectively remove global flicker in old films, and is suitable for automated interactive restoration system.
old film restoration; global flicker; color transform; hue correction
黃曦,丁友東,吳兵.老電影全局閃爍修復(fù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電視技術(shù),2016,40(12):125-129. HUANG X, DING Y D, WU B. Implementation and design of old film global flicker restoration system [J]. Video engineering,2016,40(12):125-129.
TP391.4
A
10.16280/j.videoe.2016.11.024
國(guó)家自然科學(xué)基金項(xiàng)目(61402278:61303093);上海市自然科學(xué)基金項(xiàng)目(14ZR1415800);上海市科委科技攻關(guān)項(xiàng)目(14511108400);上海市教委科研創(chuàng)新項(xiàng)目(14YZ023);2015年度上海大學(xué)電影學(xué)高峰學(xué)科
2016-03-11