<abbr id="kc8ii"><menu id="kc8ii"></menu></abbr>
  • <input id="kc8ii"><tbody id="kc8ii"></tbody></input><table id="kc8ii"><source id="kc8ii"></source></table><kbd id="kc8ii"></kbd>
    <center id="kc8ii"><table id="kc8ii"></table></center>
  • <input id="kc8ii"></input>
    <abbr id="kc8ii"></abbr>
  • <abbr id="kc8ii"></abbr>
  • <center id="kc8ii"><table id="kc8ii"></table></center>
    <abbr id="kc8ii"></abbr>
    你的位置:首頁(yè) > 光電顯示 > 正文

    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻

    發(fā)布時(shí)間:2020-04-22 來(lái)源:Witold Kaczurba 責(zé)任編輯:wenwei

    【導(dǎo)讀】視頻系統(tǒng),目前已經(jīng)深入消費(fèi)應(yīng)用的各個(gè)方面,在汽車、機(jī)器人和工業(yè)領(lǐng)域日益普遍。其在非消費(fèi)應(yīng)用中的增長(zhǎng)主要源于HDMI標(biāo)準(zhǔn)以及更快、更高效的DSP和FPGA的出現(xiàn)。
     
    本文將概要討論利用模擬或HDMI攝像機(jī)實(shí)現(xiàn)立體視覺(jué)(3D視頻)的各種要求。文章將描述一個(gè)基于FPGA的系統(tǒng),它將兩個(gè)視頻流結(jié)合成一個(gè)3D視頻流,通過(guò)HDMI 1.4發(fā)射器進(jìn)行傳輸,同時(shí)還要介紹一個(gè)基于DSP的系統(tǒng),與通常需從兩臺(tái)攝像機(jī)接收數(shù)據(jù)相比,該系統(tǒng)可以節(jié)省DMA帶寬。另外,本文還將描述一種方法,該方法可以實(shí)現(xiàn)一種并排格式,可供3D攝像機(jī)或要求3D視頻的系統(tǒng)使用。
     
    概述
     
    立體視覺(jué)要求使用兩臺(tái)攝像機(jī),二者相距大約5.5厘米,這是人類雙眼之間的典型間距,如圖1所示。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖1 支架上的兩臺(tái)攝像機(jī)(已針對(duì)立體視覺(jué)對(duì)齊)
     
    圖2所示高級(jí)功能框圖使用了采用相同視頻標(biāo)準(zhǔn)的兩臺(tái)同步攝像機(jī)、兩個(gè)視頻解碼器和一個(gè)FPGA。為了確保完全一致的幀速率,攝像機(jī)必須行鎖定到共同的參考時(shí)序。如果沒(méi)有同步,不使用外部存儲(chǔ)器,就不可能將輸出組合起來(lái)并存儲(chǔ)為完整的視頻幀。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖2 高級(jí)功能框圖
     
    圖3顯示兩個(gè)行鎖定視頻流被合并成一個(gè)立體圖像。圖4顯示,如果不將整個(gè)視頻幀保存在外部存儲(chǔ)器中,則異步視頻流無(wú)法合并。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖3 合并兩個(gè)同步視頻流
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖4 如果不使用外部存儲(chǔ)器,則無(wú)法合并異步視頻流
     
    然后,兩臺(tái)同步攝像機(jī)的輸出由視頻解碼器(如ADV7181D, ADV7182或ADV7186 用于模擬攝像機(jī))進(jìn)行數(shù)字化處;也可由 HDMI receivers(如ADV7610 或 ADV7611用于數(shù)字?jǐn)z像機(jī))進(jìn)行數(shù)字化處理。
     
    視頻解碼器和HDMI接收器都采用內(nèi)部鎖相環(huán)(PLL)在其輸出總線上產(chǎn)生時(shí)鐘和像素?cái)?shù)據(jù)。這意味著,在數(shù)字化模擬視頻,或者接收HDMI流時(shí),將為兩臺(tái)攝像機(jī)產(chǎn)生兩個(gè)獨(dú)立的時(shí)鐘域。另外,兩個(gè)視頻流可能存在對(duì)齊誤差。這些時(shí)序差異和對(duì)齊誤差必須在后端器件(如FPGA)中進(jìn)行補(bǔ)償,先將數(shù)據(jù)帶至共同的時(shí)鐘域,然后再將兩個(gè)視頻圖像結(jié)合成單個(gè)立體視頻幀。然后,通過(guò)一個(gè)支持3D的HDMI 1.4HDMI 接收器(如ADV7511 或 ADV7513—也可以將其提供給DSP(如 ADSP-BF609 Blackfin®處理器)—以便進(jìn)一步處理。
     
    時(shí)鐘架構(gòu)
     
    視頻解碼器有兩種完全不同的時(shí)鐘源,具體取決于其是否鎖定。當(dāng)視頻PLL被鎖定至輸入同步信號(hào)時(shí)——水平同步(視頻解碼器)或TMDS時(shí)鐘(HDMI)——結(jié)果會(huì)產(chǎn)生一個(gè)鎖定至輸入視頻源的時(shí)鐘。當(dāng)視頻失鎖時(shí),或者當(dāng)PLL處于強(qiáng)制自由運(yùn)行模式時(shí),視頻PLL不會(huì)鎖定至輸入同步信號(hào),結(jié)果會(huì)產(chǎn)生一個(gè)鎖定至晶振時(shí)鐘的時(shí)鐘輸出。另外,時(shí)鐘可能不會(huì)在復(fù)位后輸出,因?yàn)長(zhǎng)LC時(shí)鐘驅(qū)動(dòng)器在復(fù)位后設(shè)置為高阻抗模式。
     
    因此,如果系統(tǒng)有兩個(gè)或多個(gè)始于視頻解碼器或HDMI接收器的視頻路徑,即使將同一晶振時(shí)鐘提供給兩個(gè)視頻解碼器或HDMI接收器,仍會(huì)有兩個(gè)不同頻率、不同相位的不同時(shí)鐘域,因?yàn)槊總€(gè)器件都會(huì)基于自己的PLL產(chǎn)生自己的時(shí)鐘。
     
    帶鎖定視頻解碼器的同步系統(tǒng)
     
    典型的立體視頻使用兩個(gè)視頻源,其中,每個(gè)視頻解碼器都會(huì)鎖定至輸入視頻信號(hào),并會(huì)基于輸入水平同步或TMDS時(shí)鐘產(chǎn)生自己的時(shí)鐘。當(dāng)兩臺(tái)攝像機(jī)同步——或行鎖定至同一參考時(shí)序時(shí)——分幀線將始終對(duì)齊。由于兩個(gè)獨(dú)立的視頻解碼器會(huì)收到相同的水平同步信號(hào),因此,像素時(shí)鐘將擁有相同的像素時(shí)鐘頻率。這樣,就可以將兩條數(shù)據(jù)路徑帶入同一個(gè)時(shí)鐘域,如圖5所示。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖5 同步至同一參考源的兩臺(tái)攝像機(jī)。
     
    兩個(gè)視頻解碼 器都會(huì)收到同一同步信號(hào),因此,它們也會(huì)鎖定
     
    異步視頻系統(tǒng)
     
    不幸的是,其中一個(gè)視頻解碼器可能因視頻源信號(hào)質(zhì)量欠佳而失鎖,如圖6所示;或者,攝像機(jī)因視頻鏈路斷開(kāi)而失去同步性,如圖7所示。這會(huì)在兩條數(shù)據(jù)路徑中導(dǎo)致不同的頻率,結(jié)果又會(huì)導(dǎo)致進(jìn)入后端中的數(shù)據(jù)量不對(duì)稱。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖6 帶未鎖定視頻解碼器的行鎖定攝像機(jī)
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖7 帶鎖定視頻解碼器的未鎖定攝像機(jī)
     
    視頻失鎖可以通過(guò)使用一個(gè)中斷(SD視頻解碼器為SD_UNLOCK,分量視頻解碼器為CP_UNLOCK,或HDMI接收器中的TMDSPLL_LCK寄存器)來(lái)檢測(cè),該中斷會(huì)在一定延遲后介入。視頻解碼器集成了不穩(wěn)定水平同步平滑機(jī)制,因此,視頻失鎖的檢測(cè)可能需要兩三行。該延遲可通過(guò)控制FPGA中的失鎖來(lái)減少。
     
    時(shí)鐘三態(tài)模式
     
    在設(shè)計(jì)FPGA時(shí)鐘資源時(shí),必須知道,默認(rèn)情況下,許多視頻解碼器和HDMI產(chǎn)品在復(fù)位后將時(shí)鐘和數(shù)據(jù)線路置為三態(tài)模式。因此,LLC像素時(shí)鐘不適用于同步復(fù)位。
     
    兩條視頻流中的數(shù)據(jù)對(duì)齊誤差
     
    為了簡(jiǎn)化系統(tǒng)并減少合并兩幅圖像所需存儲(chǔ)器,到達(dá)FPGA的數(shù)據(jù)應(yīng)進(jìn)行同步,以使來(lái)自第一臺(tái)攝像機(jī)的第M 行第N個(gè) 像素與來(lái)自第二臺(tái)攝像機(jī)的第M 行第N個(gè) 像素同時(shí)收到。
     
    在FPGA輸入端,這可能很難實(shí)現(xiàn),因?yàn)閮蓷l視頻路徑可能具有不同的延遲:行鎖定攝像機(jī)可能輸出存在對(duì)齊誤差的行,不同的連接長(zhǎng)度可能加大對(duì)齊誤差,而視頻解碼器則可能帶來(lái)可變啟動(dòng)延遲。受這些延遲影響,采用行鎖定攝像機(jī)的系統(tǒng)會(huì)有一些存在對(duì)齊誤差的像素。
     
    行鎖定攝像機(jī)對(duì)齊誤差
     
    即使是行鎖定攝像機(jī)也可能輸出存在對(duì)齊誤差的視頻行。圖8顯示來(lái)自兩臺(tái)攝像機(jī)的CVBS輸出端的垂直同步信號(hào)。一臺(tái)攝像機(jī)(同步主機(jī))為第二臺(tái)攝像機(jī)(同步從機(jī))提供行鎖定信號(hào)。380 ns的對(duì)齊誤差是清楚可見(jiàn)的。圖9展示的是這些攝像機(jī)輸出端的視頻解碼器傳輸?shù)臄?shù)據(jù)。可以看到11個(gè)像素的位移。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖8 行鎖定視頻攝像機(jī)之間的380 ns視頻對(duì)齊誤差
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖9 數(shù)字域中未補(bǔ)償?shù)?1個(gè)像素的視頻對(duì)齊誤差
     
    不同的連接長(zhǎng)度
     
    所有電氣連接都會(huì)帶來(lái)傳播延遲,因此,要確保兩條視頻路徑具有相同的軌道和電纜長(zhǎng)度。
     
    視頻解碼器/HDMI接收器延遲
     
    所有視頻解碼器都會(huì)帶來(lái)可能因啟用的功能而異的延遲。另外,有些視頻器件含有可能增加隨機(jī)啟動(dòng)延遲的因素——如深色FIFO。采用視頻解碼器的典型立體系統(tǒng)的隨機(jī)啟動(dòng)延遲大約為5個(gè)像素時(shí)鐘。含有HDMI發(fā)射器和接收器的系統(tǒng)(如圖10所示)的隨機(jī)啟動(dòng)延遲可能為40個(gè)像素時(shí)鐘左右。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖10 流水線延遲測(cè)量設(shè)置
     
    對(duì)齊誤差補(bǔ)償
     
    圖11所示系統(tǒng)中,一個(gè)視頻解碼器對(duì)來(lái)自各攝像機(jī)的模擬信號(hào)進(jìn)行數(shù)字化處理。各視頻路徑的數(shù)據(jù)和時(shí)鐘是獨(dú)立的。兩條視頻路徑都連接至FIFO,后者對(duì)輸入數(shù)據(jù)進(jìn)行緩沖,以補(bǔ)償數(shù)據(jù)對(duì)齊誤差。在輸出數(shù)據(jù)時(shí),F(xiàn)IFO使用來(lái)自其中一個(gè)解碼器的共用時(shí)鐘。在鎖定系統(tǒng)中,兩條數(shù)據(jù)路徑應(yīng)具有完全相同的時(shí)鐘頻率,以確保在攝像機(jī)行鎖定且視頻解碼器鎖定的情況下,不會(huì)出現(xiàn)FIFO溢出或下溢現(xiàn)象。
     
    通過(guò)啟用或禁用FIFO輸出,控制模塊可以維持FIFO電平以盡量減少像素對(duì)齊誤差。如果采取了正確的補(bǔ)償措施,則FPGA模塊的輸出應(yīng)為與第一個(gè)像素對(duì)齊的兩條數(shù)據(jù)路徑。然后該數(shù)據(jù)提供給FPGA后端,以生成3D格式。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖11 使用數(shù)字FIFO來(lái)重新對(duì)齊視頻圖像
     
    對(duì)齊誤差測(cè)量
     
    兩個(gè)數(shù)字化數(shù)據(jù)流之間的對(duì)齊誤差可以在視頻FIFO輸出端進(jìn)行測(cè)量,其方法是使用一個(gè)單一時(shí)鐘計(jì)數(shù)器,該計(jì)數(shù)器在輸入信號(hào)之一的垂直同步(VS)脈沖上復(fù)位。圖12所示兩個(gè)視頻流(vs_a_in和vs_b_in)的對(duì)齊誤差為4個(gè)像素。計(jì)數(shù)器使用列表1中所示方法測(cè)量對(duì)齊誤差。計(jì)數(shù)從VS1的上升沿開(kāi)始,并在VS2的上升沿終止。
     
    如果一個(gè)幀的總像素長(zhǎng)度是已知的,則可以通過(guò)從幀長(zhǎng)中減去計(jì)數(shù)值,從而算出負(fù)偏斜(VS2位于VS1之前)。該負(fù)值應(yīng)在偏斜超過(guò)像素幀長(zhǎng)的一半時(shí)計(jì)算。結(jié)果應(yīng)用來(lái)重新對(duì)齊FIFO中存儲(chǔ)的數(shù)據(jù)。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖12 對(duì)齊誤差測(cè)量
     
    列表1 簡(jiǎn)單對(duì)齊誤差測(cè)量(Verilog®).
     
    module misalign_measurement(
     input wire reset,
     input wire clk_in,
     input wire vs_a_in,
     input wire vs_b_in,
     output reg [15:0] misalign,
     output reg ready);
     
    reg [15:0] cnt;
    reg cnt_en, cnt_reset;
    reg vs_a_in_r, vs_b_in_r;
    assign vs_a_rising = vs_a_in > vs_a_in_r;
    assign vs_b_rising = vs_b_in > vs_b_in_r;
     
    always @(posedge clk_in)
    begin
     vs_a_in_r <= vs_a_in;
     vs_b_in_r <= vs_b_in;
    end
     
    always @(posedge clk_in)
     if (reset)
     begin
     { ready, cnt_en } <= 2''''b00;
     misalign <= 0;
     end else begin
     if ((vs_a_in == 1''''b0) && (vs_b_in == 1''''b0))
     { ready, cnt_reset } <= 2''''b01;
     else
     cnt_reset <= 1''''b0;
     
     /* beginning */
     if (vs_a_rising && vs_b_rising)
     begin
     misalign <= 0;
     { ready, cnt_en } <= 2''''b10;
     end
     else if ((vs_a_rising > vs_b_in) || (vs_b_rising > vs_a_in))
     { ready, cnt_en } <= 2''''b01;
     
      /* ending */
     if ((cnt_en == 1''''b1) && (vs_a_rising || vs_b_rising))
     begin
     { ready, cnt_en } <= 2''''b10; 
     misalign <= vs_a_rising ? (-(cnt + 1)) : (cnt + 1);
     end
     end
     
    always @(posedge clk_in) /* counter */
     if ((cnt_reset) || (reset))
     cnt <= 0;
     else if (cnt_en)
     cnt <= cnt + 1;
     
    endmodule
    從兩個(gè)對(duì)齊視頻流生成3D視頻
     
    一旦像素、行和幀數(shù)據(jù)都真正同步,F(xiàn)PGA可以將視頻數(shù)據(jù)轉(zhuǎn)換成3D視頻流,如圖13所示。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖13 用于實(shí)現(xiàn)3D格式的簡(jiǎn)化架構(gòu)
     
    輸入數(shù)據(jù)由共用時(shí)鐘讀入存儲(chǔ)器。同步時(shí)序分析儀檢查輸入的同步信號(hào),并抽取視頻時(shí)序,包括水平前后沿長(zhǎng)度、垂直前后沿、水平和垂直同步長(zhǎng)度、水平有效行長(zhǎng)、垂直有效行數(shù)和同步信號(hào)極化。將該信息與當(dāng)前水平和垂直像素位置一起傳給同步時(shí)序再發(fā)生器,這樣可以生成經(jīng)修改的時(shí)序,以便支持所需3D視頻結(jié)構(gòu)。新生成的時(shí)序應(yīng)延遲,以確保FIFO含有所需數(shù)據(jù)量。
     
    并排3D視頻
     
    對(duì)存儲(chǔ)器要求最低的架構(gòu)是并排格式,只需要一個(gè)兩行緩沖器(FIFO)即可存儲(chǔ)來(lái)自兩個(gè)視頻源的行內(nèi)容。并排格式的寬度應(yīng)為原始輸入模式的兩倍。為此,應(yīng)使用一個(gè)雙倍時(shí)鐘來(lái)為擁有雙倍水平行長(zhǎng)度的再生同步時(shí)序提供時(shí)鐘。用于為后端提供時(shí)鐘的雙倍時(shí)鐘將以雙倍速率清空第一個(gè)FIFO和第二個(gè)FIFO,這樣即可并排顯示圖像,如圖14所示。并排圖像如圖15所示。
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖14 使用簡(jiǎn)單的FPGA行緩沖器來(lái)并排合并兩幅圖像
     
    基于FPGA的系統(tǒng)通過(guò)合成兩條視頻流來(lái)提供3D視頻
    圖15 視頻時(shí)序下的并排576p圖像
     
    結(jié)論
     
    ADI公司的解碼器和HDMI產(chǎn)品以及簡(jiǎn)單的后處理技術(shù)可以打造出真正的立體3D視頻,并為其傳輸提供條件。如本文所示,用簡(jiǎn)單的數(shù)字模塊,無(wú)需使用昂貴的存儲(chǔ)器,即可實(shí)現(xiàn)3D視頻。這種系統(tǒng)可用于需要3D視覺(jué)的任何類型的系統(tǒng)中,從簡(jiǎn)單的攝像機(jī),到基于ADSP-BF609 DSP的可以跟蹤物體及其距離的專業(yè)系統(tǒng)。
     
     
    推薦閱讀:
     
    適合空間受限應(yīng)用的最高功率密度、多軌電源解決方案
    輸入引腳的過(guò)電應(yīng)力保護(hù)
    消失的失調(diào)電壓調(diào)整引腳
    電子可變電阻器——AD5272
    建立FETching分立式放大器的一些提示
    特別推薦
    技術(shù)文章更多>>
    技術(shù)白皮書(shū)下載更多>>
    熱門(mén)搜索
    ?

    關(guān)閉

    ?

    關(guān)閉

    中文字幕VA一区二区三区| 国产精品午夜福利在线无码| 无码国产福利av私拍| 亚洲Aⅴ无码一区二区二三区软件 亚洲?V无码乱码国产精品 | 无码精品国产一区二区三区免费| 无码国模国产在线无码精品国产自在久国产 | 国产乱码精品一区二区三区中文 | 最近最新中文字幕| 免费无码VA一区二区三区| 亚洲中文字幕无码一区二区三区| 中文无码久久精品| 麻豆国产原创中文AV网站| 中文字幕av无码一区二区三区电影 | 精品人妻系列无码天堂| 惠民福利中文字幕人妻无码乱精品 | 亚洲AV无码无限在线观看不卡| av无码播放一级毛片免费野外| 亚洲欧美精品一区久久中文字幕| 国产精品无码一区二区三级| 中文字幕精品一区影音先锋 | 日韩AV无码一区二区三区不卡毛片 | 中文字幕在线一区二区在线| 久久亚洲AV成人无码国产| 炫硕日本一区二区三区综合区在线中文字幕 | 伊人久久精品无码二区麻豆| 无码中文字幕av免费放dvd| 国产做无码视频在线观看浪潮| 人妻丰满熟妇aⅴ无码| 国产精品中文字幕在线观看| 国产精品一区二区久久精品无码| 久久久久亚洲AV无码观看| 国产成人三级经典中文| 亚洲中文字幕伊人久久无码| 无码国内精品人妻少妇蜜桃视频| 欧美日韩国产中文精品字幕自在自线 | 中文字幕无码第1页| 中文字幕在线视频网| 中文字幕有码无码AV| av无码专区| 精品一区二区三区无码免费视频| av无码人妻一区二区三区牛牛|