亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DirectShow的視頻實時校正系統(tǒng)設(shè)計

        2014-02-13 09:58:26可,周
        電視技術(shù) 2014年15期
        關(guān)鍵詞:輸出模塊極線過濾器

        馮 可,周 軍

        (上海交通大學(xué)上海市數(shù)字媒體處理與傳輸重點實驗室,上海200240)

        責(zé)任編輯:任健男

        自2010年3D電影《阿凡達》上市以來,3D技術(shù)得到了極大的關(guān)注,對于3D技術(shù)相關(guān)的研究日益深入,3D節(jié)目的受眾群體也日益廣泛。隨著3D技術(shù)的研究深入,觀測的舒適度成為了一個非常重要的問題,它不僅影響著人們觀看3D節(jié)目時的感受,更影響著觀測者的身體健康。研究表明,有很多因素影響著3D視頻的觀測舒適度,其中雙路視頻中的垂直視差是極其重要的一項指標(biāo)。

        在實際的拍攝過程中,由于雙視點相機擺放位置的不精確,拍攝得到的雙路視頻中存在垂直視差這類幾何失真是無法避免的。為了消除立體視頻中的幾何失真導(dǎo)致的垂直視差,人們提出了各種攝像機標(biāo)定和圖像極線校正算法,不過這些算法多用于圖像或者視頻的后期處理,難以做到在拍攝的同時得到較好的結(jié)果。如果能夠在拍攝的同時對所得到的視頻序列進行處理,消除其垂直視差,不僅可以大大降低后期處理的難度和工作量,也將因校正后3D視頻的舒適性質(zhì)量提高而有效降低3D節(jié)目的制作門檻,從而促進3D產(chǎn)業(yè)的發(fā)展。

        但隨著1 080高清視頻甚至4K視頻的應(yīng)用范圍越來越廣,圖像極線校正算法的運算量越來越大,具體來講,對于雙路高清1 080 50i格式的輸入,系統(tǒng)的處理速度要達到50 f/s(幀/秒),相應(yīng)的吞吐量要達到3 Gbit/s,對于每一幀圖像的極線校正時間需要控制在20 ms以內(nèi)。另外在實時進行極線校正處理的同時,還應(yīng)當(dāng)能夠?qū)崟r地使拍攝人員觀測到處理的結(jié)果,以進行及時的調(diào)整,包括更改校正的參數(shù)甚至直接調(diào)整相機的位置,這樣才能提供更大的可操作性。

        針對以上的研究需求和難點,使用傳統(tǒng)的CPU架構(gòu)尚無法完成實時校正處理。本文使用GPU并行架構(gòu)完成了極線校正的過程,每幀的處理時間達到10 ms,實現(xiàn)了處理速度上的實時性;另外為了能夠?qū)崟r采集并輸出處理結(jié)果,使用了DirectShow技術(shù)開發(fā)了用于3D高清視頻極線校正的過濾器,從而達到了3D高清視頻的實時采集、極線校正和輸出。

        1 系統(tǒng)的方案設(shè)計

        1.1 系統(tǒng)的總體框圖

        根據(jù)引言所述,系統(tǒng)所需完成的三大需求為:實時獲取雙目視頻流,根據(jù)預(yù)先設(shè)定好的參數(shù)對雙目視頻流進行高速的極線校正,將校正結(jié)果送至屏幕或采取其他的輸出方式實時提供給用戶觀測。按照這三大需求,本文的高清視頻實時極線校正系統(tǒng)的設(shè)計框圖如圖1所示,最終使用這個框圖設(shè)計得到的系統(tǒng)將為這一整套流程提供一個完整的解決方案。

        圖1 高清視頻實時極線校正系統(tǒng)框圖

        在該系統(tǒng)中,數(shù)據(jù)的整體流向為從左至右。首先由輸入模塊根據(jù)輸入的設(shè)置,負責(zé)完成雙目視頻序列的實時采集獲得雙目序列,并將所得到的數(shù)據(jù)流向下游傳輸至校正模塊;接下來由校正模塊根據(jù)設(shè)置好的一對單應(yīng)矩陣完成實時的極線校正功能,并將得到的結(jié)果數(shù)據(jù)流向下游傳輸至輸出模塊;輸出模塊根據(jù)輸出的設(shè)置,將最終的結(jié)果展示到計算機屏幕、儲存為相關(guān)文件或者通過SDI接口進行輸出。

        1.2 DirectShow簡介

        本系統(tǒng)涉及到了高帶寬的多媒體流的采集、傳輸和處理,采用微軟公司提供的DirectX軟件開發(fā)包,可以大大降低開發(fā)難度,而且使程序在未來也可以得到兼容和支持。

        DirectShow是DirectX家族的一個成員,是專門為在Windows平臺上處理各種格式媒體文件的回放、音視頻采集等高性能要求的多媒體應(yīng)用的一種實現(xiàn)方案。Direct-Show系統(tǒng)的結(jié)構(gòu)如圖2所示,圖中最大的一塊就是DirectShow系統(tǒng)。虛線以下是Ring 0特權(quán)級別的硬件設(shè)備,虛線以上是Ring 3特權(quán)級別的應(yīng)用層。DirectShow系統(tǒng)位于應(yīng)用層,使用過濾器圖表管理器來管理整個數(shù)據(jù)流的處理過程。參與數(shù)據(jù)處理的各個功能模塊叫作過濾器(filter),各個過濾器在圖表管理器中按一定的順序連接成“流水線”協(xié)同工作。

        1.3 數(shù)據(jù)的傳輸

        在DirectShow中,模塊將被實現(xiàn)為過濾器。每個過濾器都有自己的Pin,各個過濾器之間就是通過這些輸入/輸出Pin來連接。Pin的連接其實是雙方使用的媒體類型的一個協(xié)商過程,而真實的數(shù)據(jù)傳輸單元叫作Media Sample。它也是一個COM組件,管理一塊數(shù)據(jù)內(nèi)存,由分配器來管理。

        圖2 DirectShow系統(tǒng)結(jié)構(gòu)圖[1]

        數(shù)據(jù)傳送的模式有兩種,一種是推模式,另一種是拉模式。推模式常用于實時源的數(shù)據(jù)處理,每采集到一個Media Sample就將其向下游傳輸,而拉模式常用于文件源的數(shù)據(jù)處理,每當(dāng)下游處理完一個Media Sample就從文件源獲取數(shù)據(jù)。

        2 輸入/輸出模塊實現(xiàn)

        2.1 輸入模塊流程

        輸入模塊流程圖如圖3所示。在輸入流程開始時,首先遍歷所有的硬件輸入設(shè)備;接下來由用戶指定從哪個設(shè)備獲得,并將指定源過濾器加入圖表管理器;然后獲得其支持的視頻和音頻輸入格式,當(dāng)用戶選擇了一個相應(yīng)的視頻格式之后,將這個源過濾器與AVI Decompressor過濾器相連,并從其X Form Out PIN獲得向下游傳輸?shù)囊曨l數(shù)據(jù);當(dāng)用戶選擇了一個相應(yīng)的音頻格式之后,便可以直接從源過濾器的audio capture PIN獲得向下游傳輸?shù)囊纛l數(shù)據(jù)。

        圖3 輸入模塊流程圖

        2.2 輸出模塊流程

        輸出模塊流程圖如圖4所示,輸出模塊根據(jù)用戶所選擇的輸出位置,相應(yīng)地向過濾器圖表中加入文件寫入過濾器、視頻渲染過濾器(一般默認為VMR9)和設(shè)備渲染過濾器。在過濾器添加好之后,將上游校正模塊處理過的視頻流和由輸入模塊直接傳出的音頻流接入即可將最終的數(shù)據(jù)傳送至用戶所期望的輸出位置。

        圖4 輸出模塊流程圖

        2.3 實現(xiàn)中的細節(jié)

        需要把設(shè)備輸入的YUV格式數(shù)據(jù)高速轉(zhuǎn)換為易于處理的RGB格式,DirectShow已經(jīng)提供了一個具有該功能的過濾器AVI Decompressor,該過濾器可以向下游的過濾器提供RGB格式的Sample數(shù)據(jù),利于進行處理。

        在枚舉設(shè)備接口時調(diào)用的PopulateDeviceControl()函數(shù)中,可以得到計算機所提供的所有連接設(shè)備的接口,每一個接口都可以獲得其連接設(shè)備的名字,默認情況的名字是以16進制的代碼顯示,例如{Device-17CCA71BECD7-11D0-B908-00A0C9223196},這樣的名字對用戶并不友好,可以通過pPropBag->Read(L"FriendlyName",&varName,0)語句,來使顯示的名字為用戶友好的名字,例如顯示為WDM Capture Device。

        除了按照流程編寫程序,還應(yīng)加入組件初始化,注冊到活動對象表,以及相應(yīng)的對象銷毀和內(nèi)存釋放過程。注冊到活動對象表可通過AddGraphToRot(m_pGraph,&m_ROTRegister)語句來實現(xiàn),注冊之后才可以在微軟提供的Graphedit軟件中使用Connect to Remote Graph來觀測當(dāng)前的鏈路狀況,方便進行調(diào)試。

        2.4 同步性保證

        既然涉及到了多媒體視頻的處理,就一定要解決同步問題,在本系統(tǒng)中涉及到兩種同步問題:一是單路序列的音視頻同步,二是雙目序列之間的視頻同步。如果雙路序列不同步,校正的結(jié)果也就失去了意義。

        DirectShow系統(tǒng)已經(jīng)提供了解決方案,就是利用過濾器圖表的參考時鐘,可以直接把單路序列的音視頻同步,讓雙目序列所在的兩條鏈路使用同一個參考時鐘便可以解決雙目序列之間的視頻同步。

        3 校正模塊實現(xiàn)

        3.1 極線校正的相關(guān)原理

        3D視頻極線校正的目的是消除左右視頻中的垂直視差,從而消除垂直視差引起的不舒適感,傳統(tǒng)的視頻極線校正過程可以分為有相機標(biāo)定的方法和無相機標(biāo)定的方法。

        在無相機標(biāo)定方法中使用文獻[2-3]中的誤匹配剔除算法,再利用LM優(yōu)化獲得左右視頻分別的單應(yīng)矩陣,并利用這一對矩陣分別對左視頻和右視頻的每一幀進行投影變換,從而得到極線校正后的圖像。

        校正的基本公式為

        利用式(1)進行校正需要反向填充,首先求校正矩陣H的逆,然后利用公式

        3.2 校正流程

        校正處理模塊接受上游傳送而來的視頻流,并對每一幀圖像進行校正處理,再將其向下游傳輸,其內(nèi)部的算法流程圖如圖5所示。首先檢查輸入PIN傳入的數(shù)據(jù)格式是否符合要求,如果不符合將給出提示,否則解析幀頭信息獲得圖像的大小和色度信息,從而選擇適當(dāng)?shù)男U瘮?shù)進行調(diào)用。

        圖5 校正模塊流程圖

        校正函數(shù)由GPU實現(xiàn),調(diào)用函數(shù)時將數(shù)據(jù)傳輸至GPU,進行并行處理,再將處理好的結(jié)果傳輸回主機端。最后加入相應(yīng)的幀頭信息,向下游傳輸。

        3.3 GPU算法的實現(xiàn)細節(jié)

        GPU有著良好的并行計算能力,已經(jīng)在很多領(lǐng)域有應(yīng)用[4-5],例如全息影像、語音識別等。對于高清視頻的極線校正過程,GPU的架構(gòu)尤其適用,因為每個坐標(biāo)映射及插值計算過程完全相同且與其他過程無關(guān),非常利于通過并行來獲得巨大的加速比。本文采用的是NVIDIA公司的CUDA架構(gòu),它利用多個流處理器分塊(block)執(zhí)行運算任務(wù),每個塊中也可以同時開啟多個線程(thread)。通過Host主機端調(diào)用在Device上運行的Kernel函數(shù),程序會按照設(shè)置好的Grid,Block,Thread數(shù)目進行并行運算。

        用GPU實現(xiàn)實時極線校正算法,其核心函數(shù)的實現(xiàn)形式和調(diào)用形式分別為:

        __global__void warpKernel(uchar*src,uchar*dest,double*parameter)

        dim3 blocks(60,34),threads(32,32);

        warpKernel<<<blocks,threads>>>(dev_imgL,dev_resultL,dev_leftM);

        在實現(xiàn)過程中,要注意以下幾個細節(jié):

        1)為了使GPU的運算效率達到最高,在核函數(shù)內(nèi)部盡量減少分支判斷的次數(shù)。

        2)因為要處理的src和dest均是圖像,可以視為二維的數(shù)組,于是使用cudaMallocPitch()代替cudaMalloc()來執(zhí)行間距分配。由于硬件中的間距對齊限制,在顯存和內(nèi)存之間復(fù)制這塊內(nèi)存區(qū)域?qū)晕⑻岣咝省?/p>

        3)因為CUDA模型中每個流處理器可以同時處理8個線程,為了充分利用資源,創(chuàng)建32的倍數(shù)個線程。

        3.4 過濾器實現(xiàn)細節(jié)

        要想在過濾器中使用GPU,需要先編寫好Kernel函數(shù)并編譯,并在過濾器的實現(xiàn)文件中用extern C聲明,之后便可以直接在Transform核心函數(shù)中,調(diào)用聲明好的cudaTest函數(shù):

        extern"C"void cudaTest(uchar*src,uchar*dst,uchar*dev_imgL,int rows,int cols,uchar*dev_resultL,double*dev_leftM);

        要想使用自己編寫的過濾器,可以通過將該過濾器導(dǎo)出成dll形式的方式來實現(xiàn)。但在實現(xiàn)中,沒有必要非要以COM組件的形式使用過濾器,可以直接實例化一個過濾器,并手工添加引用計數(shù),然后獲取IBaseFilter接口并通過該接口對編寫的過濾器進行操作,部分代碼如下:

        CRectFilter*pFLeft=new CRectFilter();

        pFLeft->AddRef();

        pFLeft->SetParameters(RectHomoL,1080,1920,1);

        hr=pFLeft->QueryInterface(IID_IBaseFilter,reinterpret_cast<void**>(&pRectLeft));

        hr=m_pGraph->AddFilter(pRectLeft,L"My Rectification Left");

        4 實驗結(jié)果

        首先,利用GPU并行進行實時校正的結(jié)果如圖6所示,從上方牌匾處的“交通”二字以及石獅子的頭部可以看出,垂直視差得到了有效的消除。

        圖6 校正前后的紅青立體圖對比

        極線校正所需的時間數(shù)據(jù)如圖7所示,多核CPU的效率遠遠落后于GPU,NVIDIA Quadro K4000顯卡對于1 080視頻幀的處理時間(包括內(nèi)存與顯存之間傳輸圖像數(shù)據(jù)的時間)為7 ms,處理幀的速度為140幀/秒(f/s),比CPU提速了20倍,達到了實時的速度要求。但在顯存和內(nèi)存各緩存一幀的數(shù)據(jù),所以實際上的處理和播放延時為2幀。

        最終利用編寫好的極線校正過濾器來實現(xiàn)高清視頻的實時校正和播放的過濾器圖表如圖8所示,其中視頻數(shù)據(jù)流由采集卡傳入,經(jīng)過AVI Decompressor后由YUV422格式轉(zhuǎn)變?yōu)镽GB24格式,再經(jīng)由實現(xiàn)的Rectification過濾器最終提供給屏幕進行輸出顯示,最終的播放丟幀數(shù)為0,達到了預(yù)期效果,開發(fā)用于3D高清視頻極線校正的過濾器,從而實現(xiàn)了3D高清視頻的實時采集、極線校正和輸出。

        圖7 極線校正所需時間圖

        圖8 利用實時極線校正過濾器播放視頻的過濾器圖表

        [1]陸其明.DirectShow開發(fā)指南[M].北京:清華大學(xué)出版社,2003.

        [2]YAO D,ZHOU J,XUE Z.Homography matrix genetic consensus estimation algorithm[C]//Proc.IEEE ICALIP.[S.l.]:IEEE Press,2011:1139-1143.

        [3]姚達,周軍,薛質(zhì).計算機視覺中強魯棒性的遺傳一致性估計[J].計算機工程,2011,37(20):183-185.

        [4]鄭專,安平,張秋聞,等.基于GPU加速的深度圖像繪制[J].電視技術(shù),2012,36(11):11-14.

        [5]仇德元.GPGPU編程技術(shù)——從GLSL、CUDA到OpenCL[M].北京:機械工藝出版社,2011.

        猜你喜歡
        輸出模塊極線過濾器
        破解定值有妙法,極點極線顯神威
        一道高考試題的背景簡介
        基于MSP430的輸入輸出模塊設(shè)計與實現(xiàn)
        支持過濾器的REST模型研究與實現(xiàn)
        電子測試(2018年9期)2018-06-26 06:45:56
        聲音過濾器
        趣味(語文)(2018年2期)2018-05-26 09:17:55
        微信控制6路輸出開關(guān)
        泓格科技繼電器輸出模塊-87061PW
        基于LOGO!的空氣過濾器自潔控制系統(tǒng)
        自動化博覽(2014年6期)2014-02-28 22:32:20
        CTCS3-300T列控車載設(shè)備安全數(shù)字輸入輸出模塊可靠性研究
        HVM膜過濾器管板改造總結(jié)
        中國氯堿(2014年11期)2014-02-28 01:05:07
        久久综合狠狠综合久久综合88| jiZZ国产在线女人水多| 国产真实二区一区在线亚洲| 亚洲国产精品成人一区二区在线| 开心五月天第四色婷婷| 亚洲精品无码高潮喷水a片软| 国产av精国产传媒| 国产精品中文第一字幕| 给我播放的视频在线观看| 人妻少妇猛烈井进入中文字幕| 麻豆md0077饥渴少妇| 怡红院免费的全部视频| 欧美日韩国产成人综合在线影院| 日本看片一区二区三区| 国产精品日韩av一区二区| 无码人妻一区二区三区在线| 亚洲国产美女精品久久久| 欧美xxxx新一区二区三区| 少妇激情一区二区三区| 国产精品一区二区av不卡 | 亚洲香蕉成人av网站在线观看| 国产96在线 | 欧美| 亚洲Av无码专区尤物| 国产伦精品一区二区三区| 国产成人av无码精品| 亚洲v欧美v国产v在线观看| 久久精品国产免费观看99| 日韩一区二区三区天堂| 国产手机在线观看一区二区三区| 国产精品v片在线观看不卡| 亚洲熟妇无码av不卡在线播放| 亚洲国产色图在线视频| 中文字幕久久久人妻人区| 狠狠色噜噜狠狠狠777米奇小说 | 久久精品熟女不卡av高清| 日本91一区二区不卡| 极品少妇被黑人白浆直流| 亚洲av无码av男人的天堂| 丰满人妻无套中出中文字幕| 日本不卡一区二区三区在线观看| 久久黄色视频|