專利名稱:一種平面視頻轉(zhuǎn)立體視頻的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)多媒體技術(shù),特別涉及一種平面視頻轉(zhuǎn)立體視頻的方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)多媒體技術(shù)的發(fā)展,立體視頻得到越來越多的推廣和青睞,所謂立體視頻, 就是雙目或者多路視頻序列,即包含兩路以上視頻序列,并且每個(gè)視頻序列對(duì)應(yīng)幀之間帶 有視差,能夠?yàn)橛^看者提供帶有視差信息的左視圖序列和右視圖序列,這也是觀看立體視 頻時(shí)可以產(chǎn)生如臨其境的立體感的原因;但是由于直接獲取立體視頻的難度較大、設(shè)備成 本較高,并且現(xiàn)有的平面視頻內(nèi)容數(shù)量龐大,所以將平面視頻轉(zhuǎn)立體視頻技術(shù)得到了越來 越多的重視。
平面視頻轉(zhuǎn)立體視頻的過程,就是一個(gè)將平面視頻序列轉(zhuǎn)換為平面視頻幀圖像序列, 然后提取平面視頻幀圖像序列對(duì)應(yīng)的深度信息得到對(duì)應(yīng)的深度圖序列,利用深度信息渲染 算法(Depth Image Based Rendering, DIBR)將平面視頻幀圖像序列和深度圖序列渲染生 成雙目或多路立體視頻序列的過程?,F(xiàn)有技術(shù)主要是通過人機(jī)交互實(shí)現(xiàn)將平面視頻轉(zhuǎn)換為 立體視頻,具體過程如下首先將平面視頻序列轉(zhuǎn)化成無壓縮格式并保存在硬盤中,然后 利用opencv的程序?qū)o壓縮格式平面視頻序列變成一幀幀的平面視頻幀圖像并保存在硬 盤中,再利用手工得到每幀平面視頻幀圖像的深度圖并保存在硬盤中,接著利用深度信息 渲染算法把平面視頻幀圖像序列和深度圖序列合成立體視頻幀圖像序列并保存在硬盤中, 最后用opencv的程序?qū)⒘Ⅲw視頻幀圖像序列合成無壓縮格式的立體視頻幀序列輸出。 在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在如下缺點(diǎn) 現(xiàn)有技術(shù)平面視頻轉(zhuǎn)立體視頻的過程中,每一步驟都需要人工參與,人工參與度高、 工作量大,平面視頻轉(zhuǎn)立體視頻的效率低;并且,每一步驟的中間結(jié)果都需要保存在硬盤 中,而無壓縮格式的視頻和圖像文件都很大,所以會(huì)占用硬盤大量的存儲(chǔ)空間。
發(fā)明內(nèi)容
為了減小人工參與度、提高平面視頻轉(zhuǎn)立體視頻的效率,本發(fā)明實(shí)施例提供了一種平 面視頻轉(zhuǎn)立體視頻的方法和裝置。所述技術(shù)方案如下.-
5一方面,本發(fā)明實(shí)施例提供了一種平面視頻轉(zhuǎn)立體視頻的方法,所述方法包括 對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列; 對(duì)所述平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列; 對(duì)所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;
基于所述平面視頻幀圖像序列和所述深度圖序列,利用深度信息渲染算法生成立體視 頻幀圖像序列;
對(duì)所述立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。
另一方面,本發(fā)明實(shí)施例提供了一種平面視頻轉(zhuǎn)立體視頻的裝置,所述裝置包括 平面視頻幀圖像序列獲取模塊,用于對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像 序列;
幀差圖像序列獲取模塊,用于在所述平面視頻幀圖像序列獲取模塊得到所述平面視頻 幀圖像序列后,對(duì)所述平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;
深度圖序列獲取模塊,用于在所述幀差圖像序列獲取模塊得到所述幀差圖像序列后, 對(duì)所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;
立體視頻幀圖像序列獲取模塊,用于在所述深度圖序列獲取模塊得到所述深度圖序列 后,基于所述平面視頻幀圖像序列和所述深度圖序列,利用深度信息渲染算法生成立體視 頻幀圖像序列;
立體視頻序列獲取模塊,用于在所述立體視頻幀圖像序列獲取模塊得到所述立體視頻 幀圖像序列后,對(duì)所述立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。 本發(fā)明實(shí)施例提供的技術(shù)方案的有益效果是
在將平面視頻轉(zhuǎn)換為立體視頻的過程中,省卻了大量人工的參與,節(jié)約了大量人力和 時(shí)間,提高了平面視頻轉(zhuǎn)立體視頻的效率;并且,不需要將中間結(jié)果保存在硬盤中,節(jié)約 了硬盤的存儲(chǔ)空間。
圖1是本發(fā)明實(shí)施例1提供的一種平面視頻轉(zhuǎn)立體視頻的方法流程圖2是本發(fā)明實(shí)施例2提供的-種平面視頻轉(zhuǎn)立體視頻的方法流程圖3是本發(fā)明實(shí)施例3提供的一種平面視頻轉(zhuǎn)立體視頻的裝置結(jié)構(gòu)示意圖4是本發(fā)明實(shí)施例3提供的另一種平面視頻轉(zhuǎn)立體視頻的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式
6為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作 進(jìn)一步地詳細(xì)描述。
本發(fā)明實(shí)施例提出將ffmpeg應(yīng)用到平面視頻轉(zhuǎn)立體視頻的過程中。其中,ffmpeg是 一個(gè)集音視頻錄制、音視頻轉(zhuǎn)換及音視頻編碼解碼功能為一體的完整的開源方案,ffmpeg 幾乎可以支持當(dāng)前所有格式的音視頻,ffmpeg主要包括libavcodec庫(kù)和libavformat庫(kù), libavcodec庫(kù)中包含所有ffmpeg音視頻編碼器和ffmpeg音視頻解碼器,libavforaiat庫(kù)中包
含所有的普通音視頻格式的解析器和產(chǎn)生器。本發(fā)明實(shí)施例通過將ffmpeg應(yīng)用到平面視頻 轉(zhuǎn)立體視頻的過程中,并結(jié)合各種技術(shù)手段實(shí)現(xiàn)了將平面視頻自動(dòng)轉(zhuǎn)換為立體視頻,下面 將結(jié)合具體的實(shí)施例詳細(xì)描述本發(fā)明實(shí)施例所述的一種平面視頻轉(zhuǎn)立體視頻的方法是如 何實(shí)現(xiàn)自動(dòng)將平面視頻轉(zhuǎn)換為立體視頻的。 實(shí)施例1
參見圖l,本發(fā)明實(shí)施例提供了一種平面視頻轉(zhuǎn)立體視頻的方法,具體包括
101:對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列;
102:對(duì)平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;
103:對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;
104:基于平面視頻幀圖像序列和深度圖序列,利用深度信息渲染算法生成立體視頻 幀圖像序列;
105:對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。
其中,對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列,具體包括
打開平面視頻序列,獲取平面視頻序列的信息;
調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻序列的信息進(jìn)行解碼,得到平面視頻幀圖像序列。
其中,對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列,具體包括 根據(jù)幀差圖像序列,將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列;
對(duì)多個(gè)子序列中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到多個(gè)子序列 中每個(gè)子序列的積累幀差圖像;
將多個(gè)子序列中每個(gè)子序列的積累幀差圖像作為多個(gè)子序列中每個(gè)子序列所包含的 所有平面視頻序列的深度圖,從而得到平面視頻序列對(duì)應(yīng)的深度圖序列。
其中,對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列,具體包括 設(shè)置立體視頻序列的參數(shù);
讀取立體視頻幀圖像序列,獲取體視頻幀圖像序列的信息;調(diào)用ffmpeg的視頻編碼器對(duì)立體視頻幀圖像序列的信息進(jìn)行編碼,得到立體視頻序列。
進(jìn)一步地,對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列之后,基于平面視頻 幀圖像序列和深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列之前,還包括-對(duì)深度圖序列進(jìn)行平滑處理。
本實(shí)施例所述的方法,在將平面視頻轉(zhuǎn)換為立體視頻的過程中,省卻了大量人工的參 與,節(jié)約了大量人力和時(shí)間,提高了平面視頻轉(zhuǎn)立體視頻的效率;并且,不需要將中間結(jié) 果保存在硬盤中,節(jié)約了硬盤的存儲(chǔ)空間;而且,將子序列的積累幀差圖像作為深度圖, 與手工得到深度圖相比,減少了工作量,提高了得到深度圖的的效率;另外,通過對(duì)深度 圖序列進(jìn)行平滑處理,消除了深度圖內(nèi)部的噪聲和深度圖邊緣不光滑不連續(xù)的部分,減少 了積累幀差誤差的影響,從而避免了生成立體視頻序列后邊緣的抖動(dòng)。
實(shí)施例2
參見圖2,本發(fā)明實(shí)施例提供了一種平面視頻轉(zhuǎn)立體視頻的方法,具體包括 201:對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列。
其中,對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列包括打開要轉(zhuǎn)換為立體 視頻序列的平面視頻序列,獲取平面視頻序列信息;調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻 序列信息進(jìn)行解碼,得到平面視頻幀圖像序列;其中平面視頻序列信息主要包括平面視 頻序列的幀數(shù)、每幀平面視頻的寬度、每幀平面視頻的高度及每幀平面視頻的序列號(hào)等。
需要說明的是實(shí)際應(yīng)用中平面視頻序列可能存在已損壞的不可以進(jìn)行解碼的平面視 頻,所以在調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻序列信息進(jìn)行解碼前,還需要根據(jù)獲取的 平面視頻序列信息判斷是否可以解碼,如果可以則調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻序 列信息進(jìn)行解碼;否則,關(guān)閉該平面視頻。并且需要說明的是,ffmpeg提供有視頻解碼器 的接口和獲取視頻解碼器的函數(shù),通過引用ffmpeg提供的函數(shù)就可以獲取到ffinpeg的視 頻解碼器,然后就可以通過調(diào)用ffmpeg的視頻解碼器實(shí)現(xiàn)對(duì)平面視頻序列信息進(jìn)行解碼, 得到平面視頻幀圖像序列;其中引用ffmpeg提供的函數(shù)獲取到ffmpeg的視頻解碼器時(shí), 需要用到平面視頻序列信息中包括的各種參數(shù),如果平面視頻已損壞,平面視頻序列信息 中的某些參數(shù)就可能獲取不到,相應(yīng)地就無法通過引用ffmpeg提供的函數(shù)獲取到ffmpeg 的視頻解碼器時(shí),造成無法調(diào)用ffmpeg的視頻解碼器對(duì)該平面視頻序列信息進(jìn)行解碼,所 以上述根據(jù)獲取的平面視頻序列信息判斷是否可以解碼,具體也就是根據(jù)獲取的平面視頻 序列信息中,判斷是否可以引用ffmpeg提供的函數(shù)獲取到ffmpeg的視頻解碼器,如果可以則調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻序列信息進(jìn)行解碼;否則,關(guān)閉該平面視頻。并 且,在得到平面視頻幀圖像序列后,會(huì)將平面視頻幀圖像序列保存在內(nèi)存中,等待后續(xù)的 處理。
進(jìn)一步需要說明的是,由于ffmpeg支持所有格式視頻,所以如果平面視頻序列是壓縮 格式的,也可以將平面視頻序列解碼成平面視頻幀圖像序列,無需事先對(duì)平面視頻序列進(jìn) 行解壓縮;與現(xiàn)有技術(shù)中每次轉(zhuǎn)換前需要人工先對(duì)壓縮格式的平面視頻進(jìn)行解壓縮,再轉(zhuǎn) 化為平面視頻幀圖像序列相比,可以省卻人工、節(jié)約大量的時(shí)間和硬盤存儲(chǔ)空間。
另外需要說明的是,在調(diào)甩ffmpeg的視頻解碼器將平面視頻序列解碼成平面視頻幀圖 像序列時(shí),可以預(yù)先選擇起始幀和幀數(shù),然后利用ffmpeg提供的視頻解碼器將選中的平面 視頻序列解碼成平面視頻幀圖像序列,也就是說可以根據(jù)實(shí)際的需要,選擇要轉(zhuǎn)換為立體 視頻序列的平面視頻序列,例如平面視頻序列包括100幀,現(xiàn)在需要將50-80幀的部分 轉(zhuǎn)換為立體視頻序列,那么在利用ffmpeg提供的視頻解碼器將平面視頻序列解碼成平面視 頻幀圖像序列序列時(shí),可以選擇起始幀為50和幀數(shù)為31,然后ffmpeg提供的視頻解碼器 就會(huì)將50-80幀的平面視頻序列轉(zhuǎn)換為相應(yīng)的平面視頻幀圖像序列;而現(xiàn)有技術(shù)中將平面 視頻序列轉(zhuǎn)化為平面視頻幀圖像序列時(shí),如果需要將50-80幀的平面視頻序列轉(zhuǎn)換為立體 視頻序列,那么會(huì)將所以平面視頻序列(100幀)先全部轉(zhuǎn)換為平面視頻幀圖像序列,然 后再通過人工從平面視頻幀圖像序列中選擇出50-80幀的平面視頻幀圖像序列,再進(jìn)行后 續(xù)的轉(zhuǎn)換。
202:對(duì)得到的平面視頻幀圖像序列進(jìn)行灰度變換,得到灰度圖像序列。 其中,對(duì)得到的平面視頻幀圖像序列進(jìn)行灰度變換,得到灰度圖像序列,具體是,利 用RGB (Red Green Blue,紅綠藍(lán))圖像變換公式對(duì)平面視頻幀圖像序列進(jìn)行灰度變換, 得到平面視頻幀圖像序列對(duì)應(yīng)的灰度圖像序列。RGB圖像變換公式如下 y = 0.212671xi + 0.715160xG +0.072169x5 (1) 其中,y是灰度圖像每個(gè)像素點(diǎn)的灰度值,i 、 G、 5分別是平面視頻幀圖像中每個(gè)像 素點(diǎn)的A、 G、萬分量。
203:將灰度圖像序列中每相鄰兩幀灰度圖像作差,得到幀差圖像序列。 其中,將灰度圖像序列中每相鄰兩幀灰度圖像作差,得到幀差圖像序列具體是對(duì)相 鄰兩幀灰度圖像相應(yīng)的每?jī)蓚€(gè)像素點(diǎn)的灰度值做差并求絕對(duì)值;將得到的絕對(duì)值結(jié)果作為 幀差圖像相應(yīng)的每個(gè)像素點(diǎn)的灰度值,生成相鄰兩幀灰度圖像的幀差圖像;按照上述方法, 依次得到灰度圖像序列中所有相鄰兩幀灰度圖像的幀差圖像,從而得到灰度圖像序列對(duì)應(yīng) 的幀差圖像序列。204:對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到平面視頻幀圖像序列對(duì)應(yīng)的深度圖序列。
其中,根據(jù)幀差圖像序列,得到平面視頻幀圖像序列對(duì)應(yīng)的深度圖序列,具體包括 根據(jù)幀差圖像序列,將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列;對(duì)多個(gè)子序列 中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到多個(gè)子序列中每個(gè)子序列的積 累幀差圖像;將多個(gè)子序列中每個(gè)子序列的積累幀差圖像作為多個(gè)子序列中每個(gè)子序列所 包含的所有平面視頻序列的深度圖,從而得到平面視頻序列對(duì)應(yīng)的深度圖序列。
其中,將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列,具體是按照相鄰視頻 幀圖像內(nèi)容的上下文關(guān)系,將平面視頻幀圖像序列劃分為內(nèi)容相關(guān)的多個(gè)子序列,例如 按照視頻幀圖像內(nèi)容上下文的高度相關(guān)性(人物個(gè)數(shù)一致,人物的動(dòng)作連續(xù)且幅度比較 小),將平面視頻序列劃分為高度相關(guān)的多個(gè)子序列。如果相鄰兩幀平面視頻幀圖像是完 全內(nèi)容相關(guān)的(即假設(shè)兩幀平面視頻幀圖像是完全一樣的),那么該相鄰兩幀平面視頻幀 圖像對(duì)應(yīng)的幀差圖像的每個(gè)像素點(diǎn)的灰度值應(yīng)該很小(假設(shè)為0 20)或者灰度值很小的像 素點(diǎn)個(gè)數(shù)會(huì)在總的像素點(diǎn)個(gè)數(shù)中占很大比例;如果相鄰兩幀平面視頻幀圖像是內(nèi)容無關(guān)的 (即假設(shè)兩幀平面視頻幀圖像是完全不一樣),那么該相鄰兩幀平面視頻幀圖像對(duì)應(yīng)的幀 差圖像的每個(gè)像素點(diǎn)的灰度值應(yīng)該很大(假設(shè)為200~256)或者灰度值很大的像素點(diǎn)個(gè)數(shù) 會(huì)在總的像素點(diǎn)個(gè)數(shù)中占很大比例;根據(jù)相鄰兩幀平面視頻幀圖像對(duì)應(yīng)的幀差圖像的上述 特性,本實(shí)施例根據(jù)幀差圖像序列,將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列 時(shí),具體過程如下預(yù)先設(shè)置一個(gè)灰度閾值(如設(shè)置為50)和比例閾值(如設(shè)置為70%); 將幀差圖像的每個(gè)像素點(diǎn)的灰度值與該灰度閾值進(jìn)行比較,并統(tǒng)計(jì)小于該灰度閾值的個(gè) 數(shù);然后計(jì)算小于該灰度閾值的個(gè)數(shù)占總像素點(diǎn)個(gè)數(shù)的比例,得到相應(yīng)的比例值;再將該 比例值與比例閾值進(jìn)行比較,如果大于比例閾值,則對(duì)應(yīng)該幀差圖像的兩幀平面視頻幀圖 像可以劃分為同一子序列;按照上述方法依次對(duì)幀差圖像序列包括的所有幀差圖像進(jìn)行判 斷,相應(yīng)地就可以將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列。需要說明的是灰 度值閾值和比例閾值可以根據(jù)實(shí)際情況進(jìn)行設(shè)置,如需要得到的子序列之間的相關(guān)性大 (即平面視頻幀圖像序列之間的差別較小),可將灰度值閾值設(shè)置的相對(duì)小些(如設(shè)置為 20),將比例閾值設(shè)置的相對(duì)大些(如設(shè)置為80%)。例如平面視頻幀圖像序列包括有5 幀,預(yù)先設(shè)置灰度閾值為50、比例閾值為70%,將第1幀平面視頻幀圖像和第2幀平面視 頻幀圖像對(duì)應(yīng)的幀差圖像中的每個(gè)像素點(diǎn)的灰度值與灰度閾值進(jìn)行比較,統(tǒng)計(jì)到小于該灰 度閾值的個(gè)數(shù)為240,然后計(jì)算240占總像素點(diǎn)個(gè)數(shù)(假設(shè)為300)的比例,得到相應(yīng)的 比例值為80%,該比例值大于比例閾值,所以第1幀平面視頻幀圖像和第2幀平面視頻幀圖像可以劃分為同一子序列;相應(yīng)地得到第2幀平面視頻幀圖像和第3幀平面視頻幀圖像 對(duì)應(yīng)的幀差圖像的比例值為90%、第3幀平面視頻幀圖像和第4幀平面視頻幀圖像對(duì)應(yīng)的 幀差圖像的比例值為40%、第4幀平面視頻幀圖像和第5幀平面視頻幀圖像對(duì)應(yīng)的幀差圖 像的比例值為85%,所以將第1幀平面視頻幀圖像、第2幀平面視頻幀圖像和第3幀平面 視頻幀圖像劃分為第1子序列、將第4幀平面視頻幀圖像和第5幀平面視頻幀圖像劃分為 第2子序列。
其中,對(duì)多個(gè)子序列中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到多 個(gè)子序列中每個(gè)子序列的積累幀差圖像,具體是將多個(gè)子序列中每個(gè)子序列自身所包含 的所有視頻幀圖像對(duì)應(yīng)的所有幀差圖像相應(yīng)的各個(gè)像素點(diǎn)的灰度值相加,將得到的相加結(jié) 果作為多個(gè)子序列中每個(gè)子序列自身積累幀差圖像相應(yīng)的像素點(diǎn)的灰度值,從而得到多個(gè) 子序列中每個(gè)子序列自身對(duì)應(yīng)的積累幀差圖像。例如上述第1子序列包含第1幀平面視 頻幀圖像、第2幀平面視頻幀圖像和第3幀平面視頻幀圖像,設(shè)第1幀平面視頻幀圖像和 第2幀平面視頻幀圖像對(duì)應(yīng)的幀差圖像為第1幀差圖像,第2幀平面視頻幀圖像和第3幀 平面視頻幀圖像對(duì)應(yīng)的幀差圖像為第2幀差圖像,將第1幀差圖像和第2幀差圖像相應(yīng)的 每?jī)蓚€(gè)像素點(diǎn)的灰度值相加,將得到的相加結(jié)果作為第1子序列積累幀差圖像相應(yīng)的每個(gè) 像素點(diǎn)的灰度值,從而得到第1子序列對(duì)應(yīng)的積累幀差圖像;上述第2子序列包含第3幀 平面視頻幀圖像和第4幀平面視頻幀圖像,因?yàn)榈?幀平面視頻幀圖像和第4幀平面視頻 幀圖像對(duì)應(yīng)的幀差圖像只有1幀,所以第3幀平面視頻幀圖像和第4幀平面視頻幀圖像對(duì) 應(yīng)的幀差圖像即為第2子序列的積累幀差圖像。
其中,將多個(gè)子序列中每個(gè)子序列的積累幀差圖像作為多個(gè)子序列中每個(gè)子序列所包 含的所有平面視頻序列的深度圖,從而得到平面視頻序列對(duì)應(yīng)的深度圖序列,例如上述 第1子序列包含第1幀平面視頻幀圖像、第2幀平面視頻幀圖像和第3幀平面視頻幀圖像, 將第1子序列的積累幀差圖像作為第1幀平面視頻幀圖像、第2幀平面視頻幀圖像和第3 幀平面視頻幀圖像的深度圖;上述第2子序列包含第3幀平面視頻幀圖像和第4幀平面視 頻幀圖像,將第2子序列的積累幀差圖像作為第3幀平面視頻幀圖像和第4幀平面視頻幀 圖像的深度圖;從而得到了平面視頻序列(5幀)的深度圖序列(5幀)。
需要說明的是,將平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列,將多個(gè)子序列 中每個(gè)子序列的積累幀差圖像作為多個(gè)子序列中每個(gè)子序列所包含的所有平面視頻序列 的深度圖,從而得到平面視頻序列對(duì)應(yīng)的深度圖序列;與現(xiàn)有技術(shù)中通過手工得到每個(gè)平 面視頻的深度圖相比,減少了工作量,提高了平面視頻轉(zhuǎn)立體視頻序列的效率。
205:對(duì)深度圖序列進(jìn)行平滑處理。
11其中,對(duì)深度圖序列進(jìn)行平滑處理具體是,用低通濾波器對(duì)深度圖序列進(jìn)行濾波,本 實(shí)施例采用Gaussian (高斯)低通濾波器進(jìn)行平滑處理,實(shí)際應(yīng)用中也可以采用其它的低 通濾波器,如拉普拉斯低通濾波器等。對(duì)深度圖序列進(jìn)行平滑處理,可以消除深度圖內(nèi)部 的噪聲和深度圖邊緣不光滑不連續(xù)的部分,并減少了積累幀差誤差的影響,從而避免了生 成立體視頻序列后邊緣的抖動(dòng)。
206:基于平面視頻幀圖像序列和平面視頻幀圖像序列對(duì)應(yīng)的深度圖序列,利用深度 信息渲染算法,得到立體視頻幀圖像序列。
其中,基于平面視頻幀圖像序列和平面視頻幀圖像序列對(duì)應(yīng)的深度圖序列,利用深度
信息渲染算法,得到立體視頻幀圖像序列的過程為將平面視頻幀圖像序列的每幀平面視
頻幀圖像作為左視圖,把左視圖和與左視圖對(duì)應(yīng)的深度圖合成得到右視圖,然后再將左右 視圖用奇偶數(shù)列交叉的方式合成得到立體視頻幀圖像序列(立體視頻幀圖像序列的奇數(shù)列 為左視圖的奇數(shù)列,立體視頻幀圖像序列的偶數(shù)列為右視圖的偶數(shù)列)。
207:對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列并輸出。
其中,對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列并輸出包括設(shè)置立體視 頻序列參數(shù);讀取立體視頻幀圖像序列,獲取立體視頻幀圖像序列信息;調(diào)用ffmpeg的視 頻編碼器對(duì)立體視頻幀圖像序列信息進(jìn)行編碼,得到立體視頻序列并輸出。立體視頻幀圖 像序列信息包括立體視頻序列的幀數(shù)、每幀立體視頻的寬度、每幀立體視頻的高度及每 幀立體視頻的序列號(hào)等。
需要說明的是,設(shè)置立體視頻序列參數(shù)具體是指根據(jù)實(shí)際情況(如根據(jù)立體顯示器的 參數(shù)和深度信息渲染算法的參數(shù))設(shè)定輸出立體視頻序列的文件格式、立體視頻序列幀數(shù)、 立體視頻序列分辨率等參數(shù);相應(yīng)地最后得到并輸出的立體視頻序列是按照設(shè)置的立體視 頻序列參數(shù)輸出的。
并且需要說明的是,實(shí)際應(yīng)用中立體視頻幀圖像序列可能存在已損壞的不可以進(jìn)行編 碼的立體視頻幀圖像,所以在調(diào)用ffmpeg的視頻編碼器對(duì)立體視頻幀圖像序列信息進(jìn)行解 碼之前,還需要根據(jù)獲取的立體視頻幀圖像序列信息判斷是否可以編碼,如果可以則調(diào)用 ffmpeg的視頻編碼器對(duì)立體視頻幀圖像序列信息進(jìn)行編碼;否則,關(guān)閉該立體視頻幀圖像。 其中,根據(jù)獲取的立體視頻幀圖像序列信息判斷是否可以編碼的原理與201中根據(jù)獲取的 平面視頻序列信息判斷是否可以解碼的原理類似,此處不再贅述。
另外需要說明的是,實(shí)現(xiàn)調(diào)用ffmpeg的視頻編碼器的過程與實(shí)現(xiàn)調(diào)用ffmpeg的視頻 解碼器的過程類似,此處不在贅述。
本實(shí)施例所述的方法,通過將ffmpeg引用到平面視頻轉(zhuǎn)立體視頻的過程中,省卻了大量人工的參與,節(jié)約了大量人力和時(shí)間,提高了平面視頻轉(zhuǎn)立體視頻的效率;并可以根據(jù) 設(shè)置的視頻參數(shù),輸出相應(yīng)格式的立體視頻,不需要人工進(jìn)行格式的轉(zhuǎn)換,使得操作簡(jiǎn)單, 增加了用戶的體驗(yàn);并且,不需要將中間結(jié)果保存在硬盤中,節(jié)約了硬盤的存儲(chǔ)空間;而 且,將子序列的積累幀差圖像作為深度圖,與手工得到深度圖相比,減少了工作量,提高 了得到深度圖的的效率;另外,通過對(duì)深度圖序列進(jìn)行平滑處理,消除了深度圖內(nèi)部的噪 聲和深度圖邊緣不光滑不連續(xù)的部分,減少了積累幀差誤差的影響,從而避免了生成立體 視頻序列后邊緣的抖動(dòng)。
實(shí)施例3
參見圖3,本發(fā)明實(shí)施例提供了一種平面視頻轉(zhuǎn)立體視頻的裝置,該裝置包括 平面視頻幀圖像序列獲取模塊301,用于對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀 圖像序列;
幀差圖像序列獲取模塊302,用于在平面視頻幀圖像序列301獲取模塊得到平面視頻 幀圖像序列后,對(duì)平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;
深度圖序列獲取模塊303,用于在幀差圖像序列獲取模塊302得到幀差圖像序列后, 對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;
立體視頻幀圖像序列獲取模塊304,用于在深度圖序列獲取模塊303得到深度圖序列 后,基于平面視頻幀圖像序列和深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像 序列;
立體視頻序列獲取模塊305,用于在立體視頻幀圖像序列獲取模塊304得到立體視頻 幀圖像序列后,對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。 其中,平面視頻幀圖像序列獲取模塊301具體包括
平面視頻序列信息獲取單元,用于打開平面視頻序列,獲取平面視頻序列的信息; 平面視頻幀圖像序列獲取單元,用于在平面視頻序列信息獲取單元得到面視頻序列的
信息后,調(diào)用ffmpeg的視頻解碼器對(duì)平面視頻序列的信息進(jìn)行解碼,得到平面視頻幀圖像序列。
其中,深度圖序列獲取模塊303具體包括
子序列劃分單元,用于在幀差圖像序列獲取單元得到幀差圖像序列后,根據(jù)幀差圖 像序列,將平面視頻幀圖像序列獲取單元得到的平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多 個(gè)子序列;
積累幀差圖像獲取單元,用于在子序列劃分單劃分出多個(gè)子序列后,對(duì)多個(gè)子序列中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到多個(gè)子序列中每個(gè)子序列的積 累幀差圖像;
深度圖序列獲取單元,用于在積累幀差圖像獲取單元得到積累幀差圖像后,將多個(gè)子 序列中每個(gè)子序列的積累幀差圖像作為多個(gè)子序列中每個(gè)子序列所包含的所有平面視頻
序列的深度圖,從而得到平面視頻序列對(duì)應(yīng)的深度圖序列。 其中,立體視頻序列獲取模塊305具體包括
設(shè)置模塊,用于在立體視頻幀圖像序列獲取模塊304得到立體視頻幀圖像序列后,設(shè) 置立體視頻序列的參數(shù);
立體視頻幀圖像序列信息獲取單元,用于在設(shè)置模塊設(shè)置立體視頻序列的參數(shù)后,讀 取立體視頻幀圖像序列,獲取立體視頻幀圖像序列的信息;
立體視頻序列獲取單元,用于在立體視頻幀圖像序列信息獲取單元得到體視頻幀圖像 序列的信息后,調(diào)用ffmpeg的視頻編碼器對(duì)立體視頻幀圖像序列的信息進(jìn)行編碼,得到立 體視頻序列。
進(jìn)一步地,參見圖4,該裝置還包括
平滑處理模塊306,用于在深度圖序列獲取模塊303得到深度圖序列后,對(duì)深度圖序 列進(jìn)行平滑處理,然后通知立體視頻幀圖像序列獲取模塊304基于平面視頻幀圖像序列和 深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列。
本實(shí)施例所述的裝置,在將平面視頻轉(zhuǎn)換為立體視頻的過程中,省卻了大量人工的參 與,節(jié)約了大量人力和時(shí)間,提高了平面視頻轉(zhuǎn)立體視頻的效率;并且,不需要將中間結(jié) 果保存在硬盤中,節(jié)約了硬盤的存儲(chǔ)空間;而且,將子序列的積累幀差圖像作為深度圖, 與手工得到深度圖相比,減少了工作量,提高了得到深度圖的的效率;另外,通過對(duì)深度 圖序列進(jìn)行平滑處理,消除了深度圖內(nèi)部的噪聲和深度圖邊緣不光滑不連續(xù)的部分,減少 了積累幀差誤差的影響,從而避免了生成立體視頻序列后邊緣的抖動(dòng)。
以上實(shí)施例提供的技術(shù)方案中的全部或部分內(nèi)容可以通過軟件編程實(shí)現(xiàn),其軟件程序 存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)例如計(jì)算機(jī)中的硬盤、光盤或軟盤。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則 之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種平面視頻轉(zhuǎn)立體視頻的方法,其特征在于,所述方法包括對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列;對(duì)所述平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;對(duì)所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;基于所述平面視頻幀圖像序列和所述深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列;對(duì)所述立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。
2、 根據(jù)權(quán)利要求1所述的平面視頻轉(zhuǎn)立體視頻的方法,其特征在于,所述對(duì)平面視頻序 列進(jìn)行解碼,得到平面視頻幀圖像序列,具體包括打開所述平面視頻序列,獲取所述平面視頻序列的信息;調(diào)用ffmpeg的視頻解碼器對(duì)所述平面視頻序列的信息進(jìn)行解碼,得到所述平面視頻幀圖像序列。
3、 根據(jù)權(quán)利要求1所述的平面視頻轉(zhuǎn)立體視頻的方法,其特征在于,所述對(duì)所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列,具體包括根據(jù)所述幀差圖像序列,將所述平面視頻幀圖像序列劃分成內(nèi)容相關(guān)的多個(gè)子序列;對(duì)所述多個(gè)子序列中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到所述多個(gè) 子序列中每個(gè)子序列的積累幀差圖像;將所述多個(gè)子序列中每個(gè)子序列的積累幀差圖像作為所述多個(gè)子序列中每個(gè)子序列所包 含的所有平面視頻序列的深度圖,從而得到所述平面視頻序列對(duì)應(yīng)的所述深度圖序列。
4、 根據(jù)權(quán)利要求1所述的平面視頻轉(zhuǎn)立體視頻的方法,其特征在于,所述對(duì)所述立體視 頻幀圖像序列進(jìn)行編碼,得到所述立體視頻序列,具體包括設(shè)置所述立體視頻序列的參數(shù);讀取所述立體視頻幀圖像序列,獲取所述立體視頻幀圖像序列的信息; 調(diào)用ffmpeg的視頻編碼器對(duì)所述立體視頻幀圖像序列的信息進(jìn)行編碼,得到所述立體視 頻序列。
5、 根據(jù)權(quán)利要求1-4任意一項(xiàng)權(quán)利要求所述的平面視頻轉(zhuǎn)立體視頻的方法,其特征在于, 所述對(duì)所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列之后,基于所述平面視頻幀圖 像序列和所述深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列之前,還包括對(duì)所述深度圖序列進(jìn)行平滑處理。
6、 一種平面視頻轉(zhuǎn)立體視頻的裝置,其特征在于,所述裝置包括平面視頻幀圖像序列獲取模塊,用于對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列;幀差圖像序列獲取模塊,用于在所述平面視頻幀圖像序列獲取模塊得到所述平面視頻幀 圖像序列后,對(duì)所述平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;深度圖序列獲取模塊,用于在所述幀差圖像序列獲取模塊得到所述幀差圖像序列后,對(duì) 所述幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;立體視頻幀圖像序列獲取模塊,用于在所述深度圖序列獲取模塊得到所述深度圖序列后, 基于所述平面視頻幀圖像序列和所述深度圖序列,利用深度信息渲染算法生成立體視頻幀圖 像序列;立體視頻序列獲取模塊,用于在所述立體視頻幀圖像序列獲取模塊得到所述立體視頻幀 圖像序列后,對(duì)所述立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。
7、 根據(jù)權(quán)利要求6所述的平面視頻轉(zhuǎn)立體視頻的裝置,其特征在于,所述平面視頻幀圖 像序列獲取模塊具體包括平面視頻序列信息獲取單元,用于打開所述平面視頻序列,獲取所述平面視頻序列的信息;平面視頻幀圖像序列獲取單元,用于在所述平面視頻序列信息獲取單元得到所述平面視 頻序列的信息后,調(diào)用ffmpeg的視頻解碼器對(duì)所述平面視頻序列的信息進(jìn)行解碼,得到所述 平面視頻幀圖像序列。
8、 根據(jù)權(quán)利要求6所述的平面視頻轉(zhuǎn)立體視頻的裝置,其特征在于,所述深度圖序列獲 取模塊具體包括子序列劃分單元,用于在所述幀差圖像序列獲取單元得到所述幀差圖像序列后,根據(jù)所述幀差圖像序列,將所述平面視頻幀圖像序列獲取單元得到的所述平面視頻幀圖像序列劃分 成內(nèi)容相關(guān)的多個(gè)子序列;積累幀差圖像獲取單元,用于在所述子序列劃分單劃分出所述多個(gè)子序列后,對(duì)所述多 個(gè)子序列中每個(gè)子序列對(duì)應(yīng)的幀差圖像序列進(jìn)行幀差相加積累,得到所述多個(gè)子序列中每個(gè) 子序列的積累幀差圖像;深度圖序列獲取單元,用于在所述積累幀差圖像獲取單元得到所述積累幀差圖像后,將 所述多個(gè)子序列中每個(gè)子序列的積累幀差圖像作為所述多個(gè)子序列中每個(gè)子序列所包含的所 有平面視頻序列的深度圖,從而得到所述平面視頻序列對(duì)應(yīng)的所述深度圖序列。
9、 根據(jù)權(quán)利要求6所述的平面視頻轉(zhuǎn)立體視頻的裝置,其特征在于,所述立體視頻序列 獲取模塊具體包括設(shè)置模塊,用于在所述立體視頻幀圖像序列獲取模塊得到所述立體視頻幀圖像序列后, 設(shè)置所述立體視頻序列的參數(shù);立體視頻幀圖像序列信息獲取單元,用于在所述設(shè)置模塊設(shè)置所述立體視頻序列的參數(shù) 后,讀取所述立體視頻幀圖像序列,獲取所述立體視頻幀圖像序列的信息;立體視頻序列獲取單元,用于在所述立體視頻幀圖像序列信息獲取單元得到所述立體視 頻幀圖像序列的信息后,調(diào)用ffmpeg的視頻編碼器對(duì)所述立體視頻幀圖像序列的信息進(jìn)行編 碼,得到立體視頻序列。
10、 根據(jù)權(quán)利要求6-9任意一項(xiàng)權(quán)利要求所述的平面視頻轉(zhuǎn)立體視頻的裝置,其特征在 于,所述裝置還包括平滑處理模塊,用于在所述深度圖序列獲取模塊得到所述深度圖序列后,對(duì)所述深度圖 序列進(jìn)行平滑處理,然后通知所述立體視頻幀圖像序列獲取模塊基于所述平面視頻幀圖像序 列和所述深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列。
全文摘要
本發(fā)明公開了一種平面視頻轉(zhuǎn)立體視頻的方法和裝置,屬于計(jì)算機(jī)多媒體技術(shù)領(lǐng)域。所述方法包括對(duì)平面視頻序列進(jìn)行解碼,得到平面視頻幀圖像序列;對(duì)平面視頻幀圖像序列進(jìn)行灰度變換、作差,得到幀差圖像序列;對(duì)幀差圖像序列進(jìn)行幀差相加積累,得到深度圖序列;基于平面視頻幀圖像序列和深度圖序列,利用深度信息渲染算法生成立體視頻幀圖像序列;對(duì)立體視頻幀圖像序列進(jìn)行編碼,得到立體視頻序列。本發(fā)明在將平面視頻轉(zhuǎn)換為立體視頻的過程中,省卻了大量人工的參與,節(jié)約了大量人力和時(shí)間,提高了平面視頻轉(zhuǎn)立體視頻的效率;并且,不需要將中間結(jié)果保存在硬盤中,節(jié)約了硬盤的存儲(chǔ)空間。
文檔編號(hào)H04N13/00GK101483788SQ200910077228
公開日2009年7月15日 申請(qǐng)日期2009年1月20日 優(yōu)先權(quán)日2009年1月20日
發(fā)明者劉繼明, 戴瓊海, 汛 曹, 王好謙, 謝旭東 申請(qǐng)人:清華大學(xué)