黃 曦,丁友東,吳 兵
(上海大學 上海電影學院,上海 200072)
?
老電影全局閃爍修復系統(tǒng)的設計與實現
黃 曦,丁友東,吳 兵
(上海大學 上海電影學院,上海 200072)
針對老電影中褪色閃爍的現象,研究了一種基于顏色傳遞和色彩校正的全局閃爍修復方法。該方法主要分三個步驟對視頻序列進行修復,首先對導入的圖像序列進行分鏡并判斷是否存在閃爍,然后對閃爍序列進行參考幀選取,如果無參考幀,則采用色彩校正來產生參考幀,最后通過顏色傳遞進行全局顏色閃爍修復。在VS2013中使用OpenCV實現了相關算法,并詳細介紹了系統(tǒng)實現的關鍵代碼。實驗表明,該系統(tǒng)能夠較好地完成對老電影全局閃爍的交互式修復。
老電影修復;全局閃爍;顏色傳遞;色彩校正
電影是歷史文化的縮影,也是一份極為珍貴的可視化資料,然而由于諸多原因導致老電影出現了不同程度的損傷,閃爍就是其中一個較為嚴重的問題。閃爍的本質是圖像相鄰幀在色彩、亮度上發(fā)生了不自然的變化[1],這些變化并非導演在拍攝時為營造某種氛圍而特意加上去的,而是由于前期拍攝操作不當或后期保存時的諸多原因造成的。這些變化在時間和空間上是不確定的,單幀觀看不易發(fā)現,只有連續(xù)放映時才能檢測到這種缺陷[2-3]。
目前,大多數的修復方法都需要對圖像序列中的閃爍進行建模,然后估計該模型的閃爍參數。諶安軍等通過對圖像序列中的局部閃爍進行基于余弦基的建模和逐次超松弛迭代的方法,實現了對嚴重局部亮度閃爍的電影的修復[4]。周磊等設計了一種基于塊的局部區(qū)域參數估計和補償方法,通過對圖像序列進行基于塊的閃爍模型參數估計和當前幀補償模型的設計,實現了參照模型下的受損圖像亮度修復[5]。趙培棟等提出了一種基于多幀參考的分塊視頻閃爍消除法,在有效去除閃爍現象的同時修正其帶來的運動模糊現象[6]。Julie Delon基于尺度空間理論使用尺度時間均衡的方法實現了全局亮度閃爍的修復[7]。但已有的方法大都具有局限性,并不適用于由于褪色產生的顏色閃爍現象。
本文采用Visual Studio和OpenCV圖像處理庫,將圖像領域的色彩校正、顏色傳遞等方法引入老電影序列的閃爍修復中,在實現傳統(tǒng)方法的同時,通過方案整合和考慮不同情況,很好地解決了全局褪色閃爍修復問題,并設計了一套完整的自動化修復系統(tǒng)。
1.1 圖像色彩校正
在圖像序列的閃爍修復前,需要找到比照修復的參考幀,但如果整個鏡頭都產生了或多或少的褪色,沒有符合要求的參考幀,那么就需要選定某一幀進行色彩校正,然后用其作為參考幀。Ruderman提出的lαβ空間具有通道之間最小相關性的特點,被廣泛用于自然場景圖像的色彩校正[8]。Reinhard在Ruderman的基礎上,提出了在lαβ空間的色彩校正算法[9]。該方法假設圖像的偏色現象是圖像的RGB通道數值乘以未知常量Cr,Cg,Cb所引起的。此舉不會改變圖像在lαβ空間的方差,但會改變平均值。因此,色彩校正主要依靠修正通道的平均值。白色在lαβ空間中定義為(0,0,0),將表示色彩的α,β通道平均值調整至0,同時保留l通道的平均值和各通道的標準差,色彩校正就能實現。其算法的步驟為:
1)將需要校正的圖像從RGB顏色空間轉換到lαβ顏色空間。
2)計算出該圖像在α,β兩個通道的均值,記為mα,mβ。
3)計算出該圖像總共的像素點,記為N。
4)利用式(1)調整圖像的均值
(1)
式中:α,β表示lαβ顏色空間通道內所有像素的原始值;α′,β′表示處理好之后的所有像素值;mα,mβ分別表示α,β兩個通道均值;Cα,Cβ分別表示α,β兩個通道實際需求的通道均值,若圖像僅需要色彩校正而不需額外添加色彩效果,則Cα,Cβ均為0。
5) 將處理好之后的圖像轉回RGB顏色空間。
1.2 全局顏色傳遞算法
顏色傳遞是一種改變圖像顏色的算法,通過定義提供結構的源圖像和提供色彩布局的參考圖像,就可以得到既有源圖像的形狀又有參考圖像顏色的合成圖像。Reinhard提出了一種顏色傳遞算法,通過把圖像轉換到lαβ空間,繼而進行統(tǒng)計學計算來實現全局的顏色傳遞[5],此種方法處理數據少,計算復雜度低,非常適合于大批量圖像的處理。顏色傳遞算法具體步驟如下:
1) 將源圖像和參考圖像均從RGB顏色空間轉換到lαβ顏色空間,這樣就可以去除兩圖像之間的相關性。
3) 按式(2)將各個通道的所有像素值分別減去其均值,達到弱化源圖像的整體色彩信息的目的。
(2)
4)將源圖像與參考圖像標準差之比作為通道值偏移量的系數,按式(3)將參考圖像的細節(jié)信息映射到源圖像中。
(3)
式中:l′,α′,β′表示合成圖像在lαβ顏色空間的三通道的所有像素值。
5) 在所得合成圖的基礎上按式(4)加上參考圖像各通道的均值,添加參考圖像的整體信息以完成最終合成效果。
(4)
式中:l,α,β是合成圖像最后得到的三通道所有像素值。
6) 完成顏色傳遞后將合成圖像由lαβ顏色空間轉換到RGB顏色空間。
2.1 修復方法的流程
本文通過對彩色老電影中的全局閃爍情況的分析,設計了一種采用彩色校正和顏色傳遞的閃爍校正方法,并設計了自動修復系統(tǒng),方法的流程如圖1所示。
圖1 老電影全局閃爍修復系統(tǒng)流程圖
由于本文所提方法適用于同一個鏡頭下的閃爍修復,對于導入的序列存在多個鏡頭的情況,需要進行分鏡處理。在同一組鏡頭序列中,選擇合適的一幀圖像作為參考幀,若無恰當的選擇則使用色彩校正算法處理褪色情況較輕的一幀,將處理后的結果作為參考幀。然后使用顏色傳遞算法將參考幀的顏色特性依次傳遞給同組每一幀圖像。當同一組分鏡處理好之后,重復上述過程直至導入序列的每一幀均處理完畢。
2.2 修復方法的實現
本文的系統(tǒng)采用VisualStudio2013作為開發(fā)工具,制作界面選擇了基于對話框的MFC,同時配置了OpenCV2.4.9來支持算法的編寫。
利用VC++和OpenCV實現的系統(tǒng)的具體過程和部分代碼如下:
1)初始化
圖像序列默認以uint8的格式導入系統(tǒng),為了確保后續(xù)數據處理的精確度,將圖像改為float格式,把圖像數值從(0,255)映射到(0.0,1.0)區(qū)間:
src.convertTo(src,CV_32FC3,1.0f/255.0f);
2)RGB到lαβ顏色空間的轉換
對于判定有閃爍特性的分鏡序列,在整組序列找不到合適的參考幀時,選擇一幀偏色情況較輕的圖像進行色彩校正處理,將處理后的圖像作為參考幀。
在色彩校正之前,需要將圖像從RGB顏色空間轉換到lαβ空間。轉換的參考公式各異,對于本系統(tǒng),選擇了Reinhard等人提供的公式[9],其優(yōu)點在于公式簡潔,無需數值分段處理。核心代碼如下:
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)色彩校正
對于轉換到lαβ顏色空間的圖像求取其平均值:
ScalarsrcMeans;
srcMeans=mean(srcLab);
再用上文提到的色彩校正公式進行計算:
Data[i]=Data[i]-srcMeans[0]+A/N;
Data[i+1]=Data[i+1]-srcMeans[1]+B/N;
4)顏色傳遞
對于轉換到lαβ顏色空間的待處理幀和參考幀,首先求取每個通道的平均值和標準差:
meanStdDev(srcLab,srcMeans,srcVariances);
meanStdDev(refLab,refMeans,refVariances);
再用上文提到的顏色傳遞公式進行計算:
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顏色空間的轉換
處理好后的圖像幀需從lαβ空間轉回RGB空間,其計算過程是RGB到lαβ顏色空間轉換的逆過程:
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;
值得注意的是,在顏色傳遞的過程中,單個像素的值可能會超出原定范圍,故圖像在轉回RGB空間后,需檢查值的溢出問題:
if(Data[i]>1.0)
Data[i]=1.0;
elseif(Data[i]<0.0)
Data[i]=0.0;
6)后處理
將最后的處理結果的格式轉回uint類型,用于顯示及存儲:
dst.convertTo(dst,CV_8UC3,255)
3.1 系統(tǒng)界面
本系統(tǒng)由兩個主界面組成,圖2是整個系統(tǒng)的主界面,此界面主要用于展示使用顏色傳遞算法對整個序列的處理效果。界面分為3個區(qū)域,界面左邊的2個圖形框分別用于顯示同一幀圖像處理前與處理后的對比效果。界面右側下部的2個圖形框用于統(tǒng)計該序列處理前和處理后所有圖像的RGB均值,用以說明顏色傳遞算法的實用性。右側上部的按鈕用以實現不同的功能。
圖2 系統(tǒng)主界面1(截圖)
圖3是本系統(tǒng)針對單幀圖像處理結果的界面。相對于主界面只能處理固定文件夾下的整個圖像序列,此界面能對靈活載入計算機內任意位置的圖像進行處理,并且該界面主要用于顏色傳遞算法與色彩校正算法的對比。界面分為2個區(qū)域,左邊的4個圖形框為展示區(qū)域,分別展現了源圖像、參考圖像、運用顏色傳遞進行處理后的合成圖像,以及源圖像經過色彩校正之后的圖像。界面的右側區(qū)域主要是算法的選取,當選取色彩校正時,需手動輸入α、β通道的均值。
圖3 系統(tǒng)主界面2(截圖)
3.2 實驗分析
本文選用動畫電影《沒頭腦和不高興》中的一組鏡頭序列作為實驗用例,圖像大小為2 048×1 556,該序列共有50幀圖像,褪色閃爍現象較為嚴重。
由于實驗序列中沒有合適的參考幀,故選擇偏色情況相對較輕的一幀圖像,在色彩校正之后作為整段序列的參考幀。圖4a選自實驗序列第33幀圖像,偏色不太嚴重,在進行色彩校正后如圖4b所示,兩幅圖前后對比可見,經過校正后圖像偏紅的現象得到明顯改善。
圖4 色彩校正結果對比
將圖4b所示結果作為實驗序列的參考幀,在lαβ顏色空間內計算出參考幀及序列中其他待處理幀的顏色特性,按照本文第一部分給出的式(2)~(4)依次將參考幀的顏色特性傳遞給其他幀。圖5b展示了經過顏色傳遞算法處理后序列的第30~35幀結果,相對于圖5a的原始圖像序列,褪色現象得到明顯改善,圖像的色彩基本達到一致。
圖5 全局閃爍修復效果
圖6a為實驗序列原始圖像的RGB通道均值的統(tǒng)計結果,總計共50幀。圖6b為經過色彩校正和顏色傳遞處理后的統(tǒng)計結果。相對原始均值統(tǒng)計,處理后序列的均值曲線平滑,從客觀上證明了顏色傳遞算法在處理褪色閃爍上有明顯效果。
圖6 處理前后序列均值統(tǒng)計對比
本文采用基于顏色傳遞和色彩校正的方法實現了對老電影中全局閃爍的自動修復。在VS2013中利用OpenCV2.4.9實現了視頻序列處理的相關算法。針對分鏡后老電影序列,在修復序列無參考幀的情況下,
采用色彩校正修復一幀圖像,將修復后的圖像作為參考幀,再使用顏色傳遞算法對該序列進行修復。實驗證明,本方法對全局褪色閃爍的去除效果顯著。
[1] 李志永,杜坤.電影數字修復中全局閃爍的去除[J].現代電影技術,2010(2):15-17.
[2]PITIEF,DAHYOTR,KELLYF,etal.Statisticalmethodsinvideoprocessing[M].Heidelberg:Springer, 2004: 153-164.
[3] 張然然,吳冏,丁友東,等.電影檔案中亮度閃爍的修正[J].計算機工程,2010,36(5):272-273.
[4] 諶安軍,滕升華,鄒謀炎.圖像序列中亮度閃爍去除[J].電子與信息學報,2007,29(1):39-42.
[5] 周磊.電影膠片修復及噪聲處理關鍵技術的研究[D].上海:上海交通大學,2008.
[6] 趙培棟,韓軍,閔友鋼,等.基于多幀參考的分塊視頻閃爍消除算法[J].上海大學學報:自然科學版,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— ),博士,教授,博士生導師,主要研究方向為計算機圖形學、數字影視技術等;
吳 兵(1983— ),博士生,主要研究方向為圖形圖像處理。
責任編輯:閆雯雯
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
黃曦,丁友東,吳兵.老電影全局閃爍修復系統(tǒng)的設計與實現[J]. 電視技術,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
國家自然科學基金項目(61402278:61303093);上海市自然科學基金項目(14ZR1415800);上海市科委科技攻關項目(14511108400);上海市教委科研創(chuàng)新項目(14YZ023);2015年度上海大學電影學高峰學科
2016-03-11