基于fpga的實時祼眼3d播放系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于裸眼3D技術(shù)領(lǐng)域,更為具體地講,涉及一種基于FPGA的實時裸眼3D 播放系統(tǒng)。
【背景技術(shù)】
[0002] 裸眼3D顯示,即裸眼立體顯示(auto-stereoscopicdisplay,也稱自由立體顯 示),主要原理是利用人眼視差特性,可以在多人同時裸視條件(無須佩帶頭盔、偏光鏡等 輔助設(shè)備)下呈現(xiàn)出具有空間深度和影像懸浮于屏幕外的逼真立體影像。事實上許多研 究機構(gòu)已經(jīng)開始了對裸眼3D顯示的研究,包括各大院校、研究所、公司等。英國Reality Vision公司較早提出了HAD(HolographicAutostereoscopicDisplay,全息自由立體顯 示)技術(shù)概念,是裸眼式3D技術(shù)的重要進步。2009年,美國的PureD印th公司研究開發(fā)了 同類技術(shù)MLD(Multi-LayerDisplay,多層顯示技術(shù)),利用多層IXD前后排列,分別顯示前 景與后景,形成前后深度感。隨著3D電視技術(shù)的不斷發(fā)展,出現(xiàn)了許多不同類型的3D視頻 格式(3Dvideoformat)。其中基于深度圖像的 3D視頻(depth-image-based3Dvideo) 格式依靠其兼容性好、實現(xiàn)方式簡便、應(yīng)用廣泛的特點而被廣泛接受。這種3D視頻格式的 特點是由視頻及其對應(yīng)的深度圖像組成。其中深度圖像是一幅灰度值在〇~255的灰度圖 像,每一個灰度值用8個bit表示。這種格式給3D電視系統(tǒng)的實現(xiàn)帶來的好處主要有以下 幾點:
[0003] ①能夠在解碼端生成一定范圍內(nèi)的任意視點的視圖,有較強交互性;
[0004] ②通過傳輸一路視頻及其對應(yīng)的深度圖像便能實現(xiàn)立體電視功能,占用帶寬小, 編碼效率高;
[0005] ③2D/3D切換非常方便,當電視機只顯示視頻部分而不執(zhí)行DIBR功能時,便切換 成了 2D視頻;
[0006] ④方便地支持各種立體顯示設(shè)備(包括自由立體顯示器、全息成像系統(tǒng))。
[0007] 目前,負責H. 264標準制定的聯(lián)合視頻組(JointVideoTeam,JVT)和歐洲 的ATTEST項目已經(jīng)推薦采用"視頻+深度"的3D視頻格式,HDMI(HighDefinition MultimediaInterface,高清晰度多媒體接口)標準的最新版1.4也已支持"左視圖+深 度(Left+d印th) "等3D視頻格式。
[0008] 然而,目前支持這種格式的實時播放器很少,所以研究一種支持基于深度圖像的 3D視頻實時播放的裸眼3D播放器就顯得尤其重要。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種基于FPGA的實時裸眼3D播放 系統(tǒng),實現(xiàn)對N個立體圖像對的生成和融合,實現(xiàn)3D視頻的實時播放。
[0010] 為實現(xiàn)上述發(fā)明目的,本發(fā)明基于FPGA的實時裸眼3D播放系統(tǒng),包括視頻輸入模 塊、DDR存儲控制模塊、DDR存儲器、數(shù)據(jù)拆分模塊、目標圖像生成模塊、多視點圖像融合模 塊和上屏顯示模塊,其中:
[0011] 視頻輸入模塊交替接收參考圖像數(shù)據(jù)和對應(yīng)的深度圖像,根據(jù)DDR存儲器每次寫 入或讀取數(shù)據(jù)的數(shù)據(jù)包大小分別對參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)進行組合,將組合后的數(shù) 據(jù)交替發(fā)送給DDR控制器模塊;組合方式以公式表示為:
[0012] al (Sx+bi) =z
[0013] a2(y+b2) =z
[0014] 其中,x表示參考圖像數(shù)據(jù)中每個像素的三個RGB分量中每個分量數(shù)據(jù)的位數(shù),y 表示深度圖像數(shù)據(jù)中每個像素數(shù)據(jù)的位數(shù),z表示DDR存儲器每次寫入或讀取的數(shù)據(jù)包大 小;&1表示彩色分量數(shù)據(jù)的組合數(shù)量,ai為正整數(shù),b:表示參考圖像數(shù)據(jù)組合時高位補零位 的個數(shù),h為非負整數(shù);a2表示深度數(shù)據(jù)的組合數(shù)量,a2為正整數(shù),b2表示深度圖像數(shù)據(jù)組 合時高位補零位的個數(shù),b2為非負整數(shù);
[0015] DDR存儲控制模塊接收視頻輸入模塊輸出的參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù),存儲 至DDR存儲器,然后按照一行參考圖像數(shù)據(jù)、一行深度圖像數(shù)據(jù)間隔輸出至數(shù)據(jù)拆分模塊;
[0016] 數(shù)據(jù)拆分模塊根據(jù)參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)在視頻輸入模塊中的組合規(guī)則 對接收到的參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)進行拆分,刪除高位補零位,將拆分后得到的數(shù) 據(jù)發(fā)送給目標圖像生成模塊;
[0017] 目標圖像生成模塊將接收的參考圖像及其對應(yīng)的深度圖像按照預(yù)設(shè)的N個視點 參數(shù)通過DIBR算法合成N個目標圖像,將參考圖像和各個目標圖像分別構(gòu)成立體圖像對, 將N個立體圖像對發(fā)送給多視點圖像融合模塊;
[0018] 多視點圖像融合模塊將N個立體圖像對進行子像素抽取,融合得到N個立體圖像 對的合成圖像,發(fā)送給上屏顯示模塊;
[0019] 上屏顯示模塊對合成圖像進行上屏顯示。
[0020] 本發(fā)明基于FPGA的實時裸眼3D播放系統(tǒng),包括視頻輸入模塊、DDR存儲控制模塊、 DDR存儲器、數(shù)據(jù)拆分模塊、目標圖像生成模塊和上屏顯示模塊,視頻輸入模塊交替接收參 考圖像數(shù)據(jù)和對應(yīng)的深度圖像并進行組合,將組合后的數(shù)據(jù)交替發(fā)送給DDR控制器模塊; DDR控制器模塊將參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)存儲至DDR存儲器,并按行間隔輸出至數(shù) 據(jù)拆分模塊;數(shù)據(jù)拆分模塊根據(jù)對接收到的參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)進行拆分,發(fā)送 給目標圖像生成模塊;目標圖像生成模塊通過DIBR算法合成N個目標圖像,構(gòu)成N個立體 圖像對;多視點圖像融合模塊將N個立體圖像對融合得到N個立體圖像對的合成圖像,發(fā)送 給上屏顯示模塊進行上屏顯示。本發(fā)明實現(xiàn)了對3D視頻的實時播放。
【附圖說明】
[0021] 圖1是本發(fā)明基于FPGA的實時裸眼3D播放系統(tǒng)的【具體實施方式】結(jié)構(gòu)圖;
[0022] 圖2是視頻輸入模塊的【具體實施方式】結(jié)構(gòu)示意圖;
[0023] 圖3是DDR存儲控制器模塊的結(jié)構(gòu)示意圖;
[0024] 圖4是本發(fā)明裸眼3D播放系統(tǒng)的具體實施例結(jié)構(gòu)圖;
[0025] 圖5是圖4中hdmi_in模塊的結(jié)構(gòu)圖;
[0026] 圖6是圖4中MPMC模塊的結(jié)構(gòu)圖;
[0027] 圖7是DDR讀寫時序圖;
[0028] 圖8是ddr2_cmd仿真時序分析圖;
[0029] 圖9是col_dep_div模塊的結(jié)構(gòu)圖。
【具體實施方式】
[0030] 下面結(jié)合附圖對本發(fā)明的【具體實施方式】進行描述,以便本領(lǐng)域的技術(shù)人員更好地 理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當已知功能和設(shè)計的詳細描述也許 會淡化本發(fā)明的主要內(nèi)容時,這些描述在這里將被忽略。
[0031] 圖1是本發(fā)明基于FPGA的實時裸眼3D播放系統(tǒng)的【具體實施方式】結(jié)構(gòu)圖。如圖1 所示,本發(fā)明基于FPGA的實時裸眼3D播放系統(tǒng)包括視頻輸入模塊1、DDR控制器模塊2、DDR 存儲器3、數(shù)據(jù)拆分模塊4、DIBR算法模塊5、多視點圖像融合模塊6和上屏顯示模塊7。為 了使圖1更加簡潔清楚,略去了時鐘模塊和電源模塊等系統(tǒng)必要模塊。下面分別對每個模 塊進行說明。
[0032] 魯視頻輸入模塊1
[0033] 視頻輸入模塊1交替接收參考圖像數(shù)據(jù)和對應(yīng)的深度圖像,即接收第一幀參考圖 像數(shù)據(jù)后,接收第一幀參考圖像對應(yīng)的深度圖像數(shù)據(jù),然后接收第二幀參考圖像數(shù)據(jù),再然 后是第二幀參考圖像對應(yīng)的深度圖像數(shù)據(jù)。根據(jù)DDR存儲器每次寫入或讀取數(shù)據(jù)的數(shù)據(jù)包 大小,分別對參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)進行組合,組合方式以公式表示為:
[0034] al (Sx+bi) =z
[0035] a2(y+b2) =z
[0036] 其中,x表示參考圖像數(shù)據(jù)中每個像素的三個RGB分量中每個分量數(shù)據(jù)的位數(shù),y 表示深度圖像數(shù)據(jù)中每個像素數(shù)據(jù)的位數(shù),z表示DDR存儲器每次寫入或讀取的數(shù)據(jù)包大 小。%表示彩色分量數(shù)據(jù)的組合數(shù)量,ai為正整數(shù),h表示參考圖像數(shù)據(jù)組合時高位補零 位的個數(shù),h為非負整數(shù)。a2表示深度數(shù)據(jù)的組合數(shù)量,a2為正整數(shù),b2表示深度圖像數(shù)據(jù) 組合時高位補零位的個數(shù),b2為非負整數(shù)。數(shù)據(jù)組合的各個參數(shù),都是預(yù)先根據(jù)實際的視頻 輸入數(shù)據(jù)和DDR存儲器來設(shè)置的。這種組合可以視為對參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)的串 并轉(zhuǎn)換。
[0037] 視頻輸入模塊1將組合后的數(shù)據(jù)交替發(fā)送給DDR控制器模塊2。
[0038] 由于參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)是交替輸入的,因此深度圖像數(shù)據(jù)的輸入端口 可以和參考圖像數(shù)據(jù)的三個分量輸入端口中的其中一個共用一個物理端口,這樣可以節(jié)省 輸入端口。
[0039] 圖2是視頻輸入模塊1的【具體實施方式】結(jié)構(gòu)示意圖。如圖2所示,視頻輸入模塊1 包括啟動控制模塊11、視頻讀寫管理模塊12、參考圖像緩存模塊13、深度圖像緩存模塊14。
[0040] 啟動控制模塊11監(jiān)測DDR存儲器的初始化完成信號,當初始化完成信號為有效 時,根據(jù)場同步信號確定起始幀,然后向視頻讀寫管理模塊12發(fā)送啟動信號。這是因為輸 入數(shù)據(jù)并不一定是從一幀參考圖像的第一個像素開始,所以要根據(jù)場同步信號來確定起始 幀。
[0041] 視頻讀寫管理模塊12接收啟動控制模塊的啟動信號,交替接收參考圖像數(shù)據(jù)和 對應(yīng)的深度圖像,根據(jù)DDR存儲器3每次寫入或讀取數(shù)據(jù)的數(shù)據(jù)包大小,按照各自的組合規(guī) 貝1J,控制存儲使能信號,將參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù)分別輸出至參考圖像緩存模塊13 和深度圖像緩存模塊14。
[0042] 參考圖像緩存模塊13緩存組合后的參考圖像數(shù)據(jù),輸出給DDR存儲控制器模塊2。
[0043] 深度圖像緩存模塊14緩存組合后的深度圖像數(shù)據(jù),輸出給DDR存儲控制器模塊2。
[0044] 參考圖像緩存模塊13和深度圖像緩存模塊14在進行數(shù)據(jù)輸出時是交替輸出的。
[0045] 采用緩存模塊,可以解決輸入?yún)⒖紙D像數(shù)據(jù)和對應(yīng)的深度圖像的時鐘與存儲時鐘 不一致,即跨時鐘域問題。
[0046] ?DDR存儲控制器模塊
[0047] DDR存儲控制模塊2接收視頻輸入模塊1輸出的參考圖像數(shù)據(jù)和深度圖像數(shù)據(jù),存 儲至DDR存儲器3,然后按照一行參考圖像數(shù)據(jù)、一行深度圖像數(shù)據(jù)間隔輸出至數(shù)據(jù)拆分模 塊4。
[0048] 圖3是DDR存儲控制器模塊的結(jié)構(gòu)示意圖。如圖3所示,DDR存儲控制模塊包括地 址產(chǎn)生模塊21、讀寫信號產(chǎn)生模塊22、DDR控制器