本發(fā)明實(shí)施例涉及視頻處理技術(shù)領(lǐng)域,尤其涉及一種全景視頻拼接方法、及裝置。
背景技術(shù):
隨著視頻處理技術(shù)的快速發(fā)展,全景視頻的出現(xiàn)為人們帶來了全新的視覺體驗(yàn),滿足了人們獲取更廣視覺范圍的場景信息的需求。目前,全景成像系統(tǒng)主要分為單攝像機(jī)成像系統(tǒng)和多攝像機(jī)成像系統(tǒng)兩種。單攝像機(jī)成像系統(tǒng)中全景圖像不需要拼接,但分辨率和清晰度較低,適用范圍受限。多攝像機(jī)成像系統(tǒng)一般通過拼接多個(gè)攝像機(jī)拍攝的不同方位的視頻圖像來形成全景視頻,相比單攝像機(jī)成像系統(tǒng)來說分辨率和清晰度較高,應(yīng)用范圍更廣。
目前,全景視頻多應(yīng)用于監(jiān)控及直播等場景中,這些應(yīng)用場景對全景視頻的實(shí)時(shí)性和清晰度的要求較高。然而,現(xiàn)有的全景視頻拼接方案中,由于需要處理的數(shù)據(jù)量較大,且算法復(fù)雜,為了保證較好的實(shí)時(shí)性,清晰度往往不高,全景視頻的圖像質(zhì)量較差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的是提供一種全景視頻拼接方法及裝置,以兼顧全景視頻的拼接效率及圖像質(zhì)量。
一方面,本發(fā)明實(shí)施例提供了一種全景視頻拼接方法,包括:
獲取待拼接的多路視頻源數(shù)據(jù);
采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像,其中,每個(gè)圖塊對應(yīng)一個(gè)視頻源圖像,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū);
采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理,并輸出融合后的全景視頻圖像。
另一方面,本發(fā)明實(shí)施例提供了全景視頻拼接裝置,包括:
視頻源數(shù)據(jù)獲取模塊,用于獲取待拼接的多路視頻源數(shù)據(jù);
投影模塊,用于采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像,其中,每個(gè)圖塊對應(yīng)一個(gè)視頻源圖像,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū);
融合模塊,用于采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理;
全景視頻輸出模塊,用于輸出融合后的全景視頻圖像。
本發(fā)明實(shí)施例中提供的全景視頻拼接方案,在獲取到待拼接的多路視頻源數(shù)據(jù)之后,采用并行方式對用于拼接全景視頻圖像的視頻源圖像進(jìn)行投影及融合等處理,保證拼接效率,可增強(qiáng)全景視頻輸出的實(shí)時(shí)性;此外,采用預(yù)先計(jì)算好的投影參數(shù)、全景投影面、融合參數(shù)以及縫合線來進(jìn)行相關(guān)處理,可減少視頻拼接時(shí)的運(yùn)算量,進(jìn)一步提高拼接效率,同時(shí)由于上述參數(shù)等內(nèi)容是預(yù)先計(jì)算好的,能夠保證圖像的高清晰度。因此,本發(fā)明實(shí)施例提供的技術(shù)方案能夠兼顧全景視頻的拼接效率及圖像質(zhì)量,保證所輸出的全景視頻具備較高的時(shí)效性和較佳的圖像質(zhì)量,可適用于廣電級直播。
附圖說明
圖1為本發(fā)明實(shí)施例一提供的一種全景視頻拼接方法的流程示意圖;
圖2為本發(fā)明實(shí)施例二提供的一種全景視頻拼接方法的流程示意圖;
圖3為本發(fā)明實(shí)施例二提供的一種最佳縫合線示意圖;
圖4為本發(fā)明實(shí)施例二提供的一種縫合線條帶示意圖;
圖5為本發(fā)明實(shí)施例二提供的一種縫合線處理效果示意圖;
圖6為本發(fā)明實(shí)施例三提供的一種全景視頻拼接方法的流程示意圖;
圖7為本發(fā)明實(shí)施例三提供的平移參數(shù)對應(yīng)的曲線示意圖;
圖8為本發(fā)明實(shí)施例四提供的一種全景視頻拼接裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖并通過具體實(shí)施方式來進(jìn)一步說明本發(fā)明的技術(shù)方案??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各步驟描述成順序的處理,但是其中的許多步驟可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各步驟的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
實(shí)施例一
圖1為本發(fā)明實(shí)施例一提供的一種全景視頻拼接方法的流程示意圖,該方法可以由全景視頻拼接裝置執(zhí)行,其中該裝置可由軟件和/或硬件實(shí)現(xiàn),一般可集成在視頻拼接設(shè)備中。如圖1所示,該方法包括:
步驟110、獲取待拼接的多路視頻源數(shù)據(jù)。
示例性的,本實(shí)施例中的視頻拼接設(shè)備具體可為計(jì)算機(jī)等終端,視頻拼接設(shè)備中包含中央處理器(Central Processing Unit,CPU)和圖形處理器(Graphics Processing Unit,GPU)(又稱顯卡)。在CPU端和GPU端均設(shè)置有多個(gè)緩沖區(qū),用以支持本發(fā)明實(shí)施例中涉及到的并行處理方式。此外,在CPU端和GPU端可均設(shè)置一個(gè)結(jié)果緩沖區(qū),用于存放全景視頻圖像。
優(yōu)選的,本發(fā)明實(shí)施例基于CUDA(Compute Unified Device Architecture)或OpenCL(Intel/AMD顯卡上實(shí)現(xiàn))來實(shí)現(xiàn)。CUDA是由英偉達(dá)公司提出的一個(gè)并行計(jì)算架構(gòu),它是基于GPU的,在GPU上高速并發(fā)執(zhí)行,極大的提高了程序算法的運(yùn)行速度。在CUDA或OpenCL編程環(huán)境中,主要包括CPU和GPU兩個(gè)部分。CPU作為主機(jī),即Host端,GPU作為設(shè)備,即Device端。CPU和GPU有專用的通道進(jìn)行數(shù)據(jù)通信,CPU負(fù)責(zé)對邏輯性實(shí)務(wù)進(jìn)行處理,以及對串行化運(yùn)算的控制;GPU負(fù)責(zé)執(zhí)行大規(guī)模的并行化處理任務(wù)??梢岳斫獾氖?,本發(fā)明實(shí)施例也可基于其他類型的并行計(jì)算架構(gòu)來實(shí)現(xiàn),并不受限于基于CUDA或OpenCL來實(shí)現(xiàn)。
以下描述使用CUDA的函數(shù)和概念。簡單說明一下二者的對應(yīng)關(guān)系,CUDA的流(stream)對應(yīng)于OpenCL的命令隊(duì)列(command_queue),CUDA的網(wǎng)格(grid)和塊(block)分別對應(yīng)于OpenCL的工作組(work group)和工作項(xiàng)(work item)。CUDA的拷貝函數(shù)分同步的cudaMemcpy和異步的cudaMemcpyAsync,OpenCL的拷貝函數(shù)clEnqueueWriteBuffer和clEnqueueReadBuffer只需要一個(gè)bool值參數(shù)決定是否阻塞,阻塞即是同步,不阻塞即是異步。本發(fā)明的算法不依賴于CUDA或OpenCL的特殊函數(shù)。
示例性的,多路視頻源數(shù)據(jù)可由多個(gè)視頻采集設(shè)備(如包括攝像頭和采集卡的相機(jī))進(jìn)行視頻采集而得到,視頻采集設(shè)備可實(shí)時(shí)將所采集的視頻源數(shù)據(jù)發(fā)送至視頻拼接設(shè)備。為了保證全景視頻的清晰度,優(yōu)選的,視頻源數(shù)據(jù)為高清視頻源數(shù)據(jù),如至少2k(2048x1536)高清視頻源。一般的,每個(gè)視頻采集設(shè)備對應(yīng)一路視頻源,視頻采集設(shè)備的數(shù)量一般為3~10個(gè)。
進(jìn)一步的,在視頻采集設(shè)備所采集的對應(yīng)于同一時(shí)刻的各視頻源圖像中,可能存在部分視頻幀圖像相比上一時(shí)刻來說并未發(fā)生變化,為了減少數(shù)據(jù)傳輸量,優(yōu)選的,本步驟可包括:獲取預(yù)設(shè)時(shí)間間隔內(nèi)的相比上一時(shí)刻存在畫面更新的多路視頻源數(shù)據(jù)。預(yù)設(shè)時(shí)間間隔可根據(jù)實(shí)際需求來確定,例如可利用定時(shí)器Timer來實(shí)現(xiàn),預(yù)設(shè)時(shí)間間隔對應(yīng)于定時(shí)器的時(shí)間間隔。在Timer到期時(shí),將過去一個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)更新的數(shù)據(jù)幀傳遞給GPU,啟動各幀的投影操作和縫合線處理。這里調(diào)用GPU的異步拷貝操作函數(shù)向GPU發(fā)起的操作被放進(jìn)GPU的操作隊(duì)列,放入隊(duì)列的時(shí)間T被記錄下來,同時(shí)向拼接結(jié)果隊(duì)列Q添加一個(gè)元素,表示有新的數(shù)據(jù)幀可用。
步驟120、采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像。
其中,每個(gè)圖塊對應(yīng)一個(gè)視頻源圖像,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū)。
示例性的,本實(shí)施例中的并行方式具體可包括多個(gè)視頻源圖像被并行處理,如采用不同的函數(shù)分別處理多個(gè)視頻源圖像,每個(gè)函數(shù)處理至少一個(gè)視頻源圖像;還可包括同一視頻源圖像中的多個(gè)像素可被并行處理,如采用不同的線程分別處理多個(gè)像素,每個(gè)線程處理至少一個(gè)像素。優(yōu)選的,為了提高拼接效率,本實(shí)施例中的并行方式包括:不同視頻源圖像采用不同的函數(shù)并行處理,同一視頻源圖像中的不同像素采用不同的線程并行處理。具體的,可使用GPU的異步操作特性來實(shí)現(xiàn)。更具體的,由于數(shù)據(jù)傳輸和投影操作采用CUDA的異步函數(shù)執(zhí)行,這樣就可以在GPU中為每路視頻開辟多個(gè)緩沖區(qū),每路視頻對應(yīng)一個(gè)流stream,在stream上使用cudaMemcpyAsync將視頻源數(shù)據(jù)從主機(jī)內(nèi)存拷貝到GPU內(nèi)存,并啟動GPU函數(shù)reproj<<<grids,blks,0,stream>>>(參數(shù))。同時(shí)記錄下此操作為一個(gè)事件ev_stream=cudaEventRecord(stream)。此事件在使用者調(diào)用全景視頻幀的函數(shù)中使用,簡單地說,就是等待這個(gè)事件ev_stream時(shí)間點(diǎn)上的操作完成,這樣就實(shí)現(xiàn)了同步。本質(zhì)上,外設(shè)組件互連標(biāo)準(zhǔn)(Peripheral Component Interconnect,PCI)總線傳輸數(shù)據(jù)是串行的,但是由于不同流可以并行執(zhí)行,流里面的函數(shù)對每個(gè)像素也是并行執(zhí)行,使用這種異步方式,可以在數(shù)據(jù)傳輸完成就執(zhí)行投影操作,因?yàn)橥队安僮饕呀?jīng)在隊(duì)列中,不需要使用者調(diào)用CUDA的函數(shù)發(fā)起此操作,這個(gè)時(shí)間差在長時(shí)間使用時(shí)不可忽視。待每路視頻源圖像執(zhí)行完投影操作后,便可將結(jié)果寫入GPU端拼接緩沖區(qū)G_S_BUF。同時(shí),當(dāng)待拼接的多路視頻源數(shù)據(jù)僅包含預(yù)設(shè)時(shí)間間隔內(nèi)的相比上一時(shí)刻存在畫面更新的多路視頻源數(shù)據(jù)時(shí),即僅處理有數(shù)據(jù)更新的視頻幀,多個(gè)視頻幀緩沖區(qū)與單個(gè)投影緩沖區(qū)(也即全景視頻幀緩沖區(qū))的組合方式可以做到最少的數(shù)據(jù)處理。
示例性的,在具體實(shí)施過程中,視頻采集設(shè)備的配置(如焦距)、數(shù)量以及相對位置是確定的,可預(yù)先根據(jù)上述信息及所采集的視頻截圖來拼接全景圖像,并記錄拼接過程對應(yīng)的投影平面、投影參數(shù)、最佳縫合線和融合參數(shù),得到預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù),在進(jìn)行視頻拼接時(shí),直接利用這些預(yù)設(shè)參數(shù)來進(jìn)行拼接處理,可有效降低運(yùn)算量,進(jìn)一步提高拼接效率,同時(shí)由于上述參數(shù)等內(nèi)容是預(yù)先計(jì)算好的,能夠保證圖像的高清晰度??梢岳斫獾氖?,將多副圖像拼接成全景圖像的方法有很多,例如,在PC(personal computer,個(gè)人計(jì)算機(jī))機(jī)上可以做到無縫拼接的收費(fèi)軟件PTGUI或開源的Hugin等,本實(shí)施例對具體的拼接方式不做限定,僅通過某種拼接方式獲得預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)即可。需要說明的是,為了保證拼接處能夠?qū)崿F(xiàn)較好的過渡效果,本實(shí)施例中對縫合線進(jìn)行條帶式融合處理。
本步驟中,根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像。全景投影視頻圖像中的每個(gè)像素點(diǎn)的來源是確定的某個(gè)視頻采集設(shè)備所采集的視頻源圖像的某個(gè)像素點(diǎn)附近的值(如插值),也可以理解為,全景投影視頻圖像上的每一個(gè)像素點(diǎn)(dx,dy)對應(yīng)于視頻源圖像的位置(sx,sy),該對應(yīng)關(guān)系包含于預(yù)設(shè)投影參數(shù)中,(dx,dy)是整數(shù)坐標(biāo),(sx,sy)是浮點(diǎn)坐標(biāo),用于雙線性插值。用GPU的并行計(jì)算能力為全景投影視頻圖像上每個(gè)像素點(diǎn)從確定的視頻源圖像的確定位置插值計(jì)算得到像素值,是GPU能夠做到較高的實(shí)時(shí)幀率(如25fps以上)的關(guān)鍵因素。
步驟130、采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理,并輸出融合后的全景視頻圖像。
示例性的,本步驟中仍然采用并行方式及預(yù)設(shè)參數(shù)進(jìn)行融合處理,以進(jìn)一步保證拼接效率及拼接質(zhì)量。
優(yōu)選的,對縫合線的融合處理需要等待當(dāng)前全景投影視頻圖像完成,且融合處理所涉及的像素?cái)?shù)量較少,故可放在R_Thread線程調(diào)用的輸出函數(shù)中執(zhí)行,即在讀取數(shù)據(jù)之前啟動縫合線的處理。R_Thread線程嘗試從隊(duì)列Q獲取可用數(shù)據(jù)幀(即全景投影視頻圖像),然后等待該數(shù)據(jù)幀被GPU處理完成,調(diào)用GPU提供的函數(shù)F等待時(shí)間T之前的操作全部完成,然后調(diào)用GPU的非異步拷貝函數(shù)從G_S_BUF拷貝到CPU端的拼接結(jié)果緩沖區(qū)C_S_BUF。一般情況下,在沒有可用數(shù)據(jù)幀時(shí),R_Thread是被阻塞的。待融合處理完成后,即可輸出全景視頻圖像。
本發(fā)明實(shí)施例中提供的全景視頻拼接方法,在獲取到待拼接的多路視頻源數(shù)據(jù)之后,采用并行方式對用于拼接全景視頻圖像的視頻源圖像進(jìn)行投影及融合等處理,保證拼接效率,可增強(qiáng)全景視頻輸出的實(shí)時(shí)性;此外,采用預(yù)先計(jì)算好的投影參數(shù)、全景投影面、融合參數(shù)以及縫合線來進(jìn)行相關(guān)處理,可減少視頻拼接時(shí)的運(yùn)算量,進(jìn)一步提高拼接效率,同時(shí)由于上述參數(shù)等內(nèi)容是預(yù)先計(jì)算好的,能夠保證圖像的高清晰度。因此,本發(fā)明實(shí)施例提供的技術(shù)方案能夠兼顧全景視頻的拼接效率及圖像質(zhì)量,保證所輸出的全景視頻具備較高的時(shí)效性和較佳的圖像質(zhì)量,可適用于廣電級直播。
實(shí)施例二
圖2為本發(fā)明實(shí)施例二提供的一種全景視頻拼接方法的流程示意圖,本實(shí)施例以上述實(shí)施例為基礎(chǔ)進(jìn)行優(yōu)化,在本實(shí)施例中,在步驟“獲取待拼接的多路視頻源數(shù)據(jù)”之前,還包括:獲取多個(gè)視頻采集設(shè)備的設(shè)備信息和多個(gè)視頻采集設(shè)備所采集的對應(yīng)于同一時(shí)刻的視頻截圖;根據(jù)設(shè)備信息將所獲取的視頻截圖拼接成全景圖像,并記錄拼接過程對應(yīng)的投影平面、投影參數(shù)、最佳縫合線和融合參數(shù),得到預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)。
進(jìn)一步的,對根據(jù)設(shè)備信息將所獲取的視頻截圖拼接成全景圖像的步驟進(jìn)行了進(jìn)一步的優(yōu)化。
相應(yīng)的,本實(shí)施例的方法包括如下步驟:
步驟210、獲取多個(gè)視頻采集設(shè)備的設(shè)備信息和多個(gè)視頻采集設(shè)備所采集的對應(yīng)于同一時(shí)刻的視頻截圖。
其中,所述設(shè)備信息包括焦距和設(shè)備所在位置。
步驟220、根據(jù)設(shè)備信息將所獲取的視頻截圖拼接成全景圖像,并記錄拼接過程對應(yīng)的投影平面、投影參數(shù)、最佳縫合線和融合參數(shù),得到預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)。
優(yōu)選的,本步驟具體可包括:對所獲取的視頻截圖進(jìn)行特征點(diǎn)匹配;根據(jù)所述設(shè)備信息和特征點(diǎn)匹配結(jié)果將所獲取的視頻截圖投影至同一坐標(biāo)系下并展開,得到由多個(gè)圖塊構(gòu)成的全景投影圖像,其中,每個(gè)圖塊對應(yīng)一個(gè)視頻截圖,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū);利用最大流最小割定理計(jì)算每兩個(gè)圖塊之間的最佳縫合線,其中,以圖塊重疊區(qū)的梯度值作為圖塊重疊區(qū)內(nèi)像素的權(quán)重值;對所述最佳縫合線進(jìn)行條帶式融合處理。
示例性的,特征點(diǎn)匹配可采用sift/surf等算法與ransac算法相結(jié)合的方式去掉錯(cuò)配點(diǎn),計(jì)算各個(gè)相機(jī)之間的單應(yīng)性矩陣,也就是各個(gè)相機(jī)為中心的三維坐標(biāo)系之間的轉(zhuǎn)換參數(shù),將各個(gè)相機(jī)的視頻截圖投影到某一個(gè)相機(jī)的坐標(biāo)系下,再按照圓柱投影展開成一張圖,即全景投影圖,這個(gè)全景投影圖不是唯一的,可以以某個(gè)相機(jī)為準(zhǔn),還可上下左右偏移,一旦這張全景投影圖確定了,各相機(jī)上像素點(diǎn)要投影到全景圖上的什么位置(fx,fy)就確定了,用這對浮點(diǎn)坐標(biāo)插值即可。全景視頻圖像4096x2048的輸出有800多萬像素,GPU的并行計(jì)算能力才能做到25fps以上的幀率。雖然各視頻幀的數(shù)據(jù)量不小,以yuyv為例,2048x 1536x 2byte=6MB,4個(gè)相機(jī)就是24MB。最壞的情況下,每次傳遞給GPU的數(shù)據(jù)就是24MB。但是這不是問題,因?yàn)槟壳爸袡n臺式機(jī)的PCI-X總線在最低時(shí)鐘頻率66MHz下的總線數(shù)據(jù)吞吐能力就達(dá)到533Mb/s,也就是66.625MB/s。數(shù)據(jù)傳輸不成問題。況且,多數(shù)情況下,直播場景中畫面持續(xù)更新的視頻幀不會是全部,也就是每一個(gè)全景視頻幀只需要傳輸數(shù)據(jù)有更新的視頻幀做計(jì)算即可。
在將各視頻截圖投影到全景圖的坐標(biāo)系下之后,由于各相機(jī)之間有重疊區(qū)(特征點(diǎn)匹配所必要的),使得各視頻截圖投影后得到的圖塊也會有重疊區(qū)。在對重疊區(qū)進(jìn)行取舍時(shí)需要使用圖切割的辦法繞開大的物體,避免視覺上明顯的錯(cuò)位問題。此處的錯(cuò)位問題是計(jì)算誤差造成的,誤差來源于焦距、攝像頭畸變參數(shù)的估計(jì)及攝像頭本身器件的光學(xué)精度等,是無法完全消除的。本實(shí)施例中使用復(fù)雜的圖切割算法搜索最佳縫合線,并對縫合線進(jìn)行分層融合,以解決該問題。
本實(shí)施例中,用圖塊重疊區(qū)的梯度值作為像素點(diǎn)的權(quán)重值,利用圖論中的最大流最小割定理將最佳縫合線轉(zhuǎn)換成圖中的最小割問題,也就是使得找到的縫合線是圖的最小分割線,其中,梯度值作為權(quán)重的意義在于,大的物體邊緣梯度值較大,這樣就等于標(biāo)記了物體邊緣位置。算法就能依此避免穿過大的物體,縫合位置就會在地面、草坪、墻壁等平坦的區(qū)域,這寫位置存在的錯(cuò)位是不容易看出的。圖3為本發(fā)明實(shí)施例二提供的一種最佳縫合線示意圖,如圖8所示,最佳縫合線31繞開了綠色指示牌32(圖中未示出顏色),具體的縫合位置在灰度平坦區(qū)域。
優(yōu)選的,本實(shí)施例中對最佳縫合線進(jìn)行條帶式融合處理,可包括:按照預(yù)設(shè)像素寬度對最佳縫合線進(jìn)行拓寬,得到縫合線條帶;利用多層拉普拉斯金字塔對縫合線條帶進(jìn)行融合。其中,預(yù)設(shè)像素寬度可根據(jù)實(shí)際需求進(jìn)行設(shè)置。對縫合線按照指定像素寬度拓寬,得到一個(gè)條帶,在此區(qū)域內(nèi)做融合操作。這個(gè)條帶中的像素要從投影操作中去掉,也即僅利用預(yù)設(shè)投影參數(shù)計(jì)算這些像素的值,但不加入到全景投影視頻圖像中,避免并行帶來的條帶的閃爍。
圖4為本發(fā)明實(shí)施例二提供的一種縫合線條帶示意圖,圖4中示出了由7個(gè)視頻采集設(shè)備所采集的圖像進(jìn)行拼接的示意圖,圖中的灰度值表示距離縫合線的距離,值越小越接近縫合線?,F(xiàn)有方案中一般的處理方式就是采用此像素值作為權(quán)重P=P1*wei/255.0+P2*(1.0-wei/255)進(jìn)行融合處理,這樣加權(quán)是低通性質(zhì)的濾波,丟失了高頻信息就會造成條帶的模糊。
本實(shí)施例中,采用改進(jìn)的拉普拉斯金字塔融合縫合線條帶,保證GPU的實(shí)時(shí)性。金字塔融合的本質(zhì)是先經(jīng)過帶通濾波(讓某一范圍的頻率通過,濾除其它頻率)將兩幅圖像分解到不同頻帶上去,在不同的頻帶上采用適當(dāng)?shù)乃阕幼鋈诤喜僮鳎缓蠼鹱炙貥?gòu)操作還原圖像??紤]到要保證較高的幀率,所以不適合使用常規(guī)的拉普拉斯金字塔的處理辦法對整幅圖像進(jìn)行分解,并在各層采用各像素點(diǎn)的梯度大小(指定鄰域范圍梯度加權(quán)值)作為融合依據(jù)(對于同名點(diǎn)像素P1和P2,梯度G1>G 2則保留P1的值,否則保留P2的值)。因此本實(shí)施例中對現(xiàn)有的拉普拉斯金字塔融合方案進(jìn)行了如下優(yōu)化:
僅融合縫合線附近若干像素。采用多層(下面以優(yōu)選的4層為例)拉普拉斯金字塔,第一層縫合線兩邊就是0和255,沒有融合。第二層縫合線位置有1-3個(gè)像素(寬度)的值不為0或255,這個(gè)值就是加權(quán)權(quán)重。第三層縫合線位置有3-5個(gè)像素(寬度)的值不為0或255,這個(gè)值作為加權(quán)權(quán)重。第四層縫合線位置4-6個(gè)像素(寬度)的值不為0或255,這個(gè)值為加權(quán)權(quán)重。
由于拉普拉斯金字塔的構(gòu)造特點(diǎn)是上一層寬和高的1/2,所以第四層拉普拉斯金字塔融合像素寬度為4-6,影響到結(jié)果圖的是縫合線位置的(3~7)x 2^3=32~56像素,考慮到5x5的高斯模版的影響,最終影響到的像素寬度最大可達(dá)60像素左右。由于縫合線比較彎曲,縫合線位置的加權(quán)像素寬度均值在5左右,可以取縫合線寬度為40像素。這就意味著融合操作只需要處理縫合線位置40-60像素的寬度,大大減少了計(jì)算量,使得GPU并行處理成為可能。
示例性的,上面描述的縫合線附近的加權(quán)權(quán)重采用如下計(jì)算方法:
第一層的權(quán)重是縫合線左邊0,右邊255。也就是左右兩幅圖(拉普拉斯金字塔第一層)沿著縫合線分開,不做融合。
第二層的權(quán)重是第一層的權(quán)重圖使用5x5的高斯核處理的結(jié)果。由于加權(quán)處理使得縫合線附近出現(xiàn)0-255之間的值,這個(gè)值作為左右兩幅圖的加權(quán)權(quán)重。
第三層的權(quán)重圖是第二層的權(quán)重圖使用5x5的高斯核處理的結(jié)果。
第四層的權(quán)重圖是第三層的權(quán)重圖使用5x5的高斯核處理的結(jié)果。
需要注意的是,僅保留縫合線附近位置的權(quán)重,其余位置需要丟掉(將縫合線按照10像素寬度拓寬即可得到掩碼,用來保留縫合線附近的權(quán)重值)。
圖5為本發(fā)明實(shí)施例二提供的一種縫合線處理效果示意圖,顯示了上述處理后的效果圖。圖5中分別示出了第2、3、4層縫合線附近的非0或255的值。圖中黑色深淺代表(0,255)之間的權(quán)重值,第1層邊界附近沒有0-255之間的值,2-4層邊界附近才會有。上面三個(gè)圖經(jīng)過縮放到差不多相同的區(qū)域便于查看。2-4層的像素寬度差別不大,在1-2個(gè)像素之間。
拉普拉斯金字塔的構(gòu)建具體如下:
高斯金字塔G0=原圖Y0,
高斯金字塔G1=高斯5x5模版對G0下采樣,寬高均為G0的一半。
高斯金字塔G2=高斯5x5模版對G1下采樣,寬高均為G1的一半。
高斯金字塔G3=高斯5x5模版對G2下采樣,寬高均為G2的一半。
拉普拉斯金字塔L3=G3
拉普拉斯金字塔L2=G2-高斯5x5模版上采樣G3(寬高等于G2的寬和高)
拉普拉斯金字塔L1=G1-高斯5x5模版上采樣G2(寬高等于G1的寬和高)
拉普拉斯金字塔L0=G 0-高斯5x5模版上采樣G1(寬高等于G0的寬和高)
對于左右兩幅圖P1和P2分別做上述操作,分別得到P1、P2的高斯及拉普拉斯金字塔。接下來,對拉普拉斯金字塔L0~L3按照上述的權(quán)重圖分別加權(quán)融合得到新的拉普拉斯金字塔Px_L0~Px_L3。
偽代碼如下,本質(zhì)上,是每個(gè)像素按照各層的權(quán)重圖加權(quán)。
Px_L0=P1_L0*(1.0-wei/255.0)+P2_L0*wei/255.0
Px_L1=P1_L1*(1.0-wei/255.0)+P2_L1*wei/255.0
Px_L2=P1_L2*(1.0-wei/255.0)+P2_L2*wei/255.0
Px_L3=P1_L3*(1.0-wei/255.0)+P2_L3*wei/255.0
隨后,再執(zhí)行拉普拉斯重建操作,得到最終融合的結(jié)果。重建操作具體如下:
Px_L2+=Px_L3按照高斯5x5模版上采樣結(jié)果(寬高等于Px_L2的寬高)。
Px_L1+=Px_L2按照高斯5x5模版上采樣結(jié)果(寬高等于Px_L1的寬高)。
Px_L0+=Px_L1按照高斯5x5模版上采樣結(jié)果(寬高等于Px_L0的寬高)。
其中的高斯5x5模版如下:
int pdKernel[25]=
{1,4,6,4,1,
4,16,24,16,4,
6,24,36,24,4,
4,16,24,16,4,
1,4,6,4,1};
上采樣操作,寬高為原來的一半,下采樣也很類似,最終的結(jié)果就是Px_L0,這個(gè)圖中的有效像素就是融合之后的條帶,拷貝到用于存放全景視頻圖像的緩沖區(qū)即可。
需要說明的是,縫合線的條帶中的像素(60萬)相對整個(gè)全景視頻幀像素(830萬)是很少的,不能夠?yàn)楹唵蔚貫槊總€(gè)像素開一個(gè)線程,若該像素是需要處理的像素就做處理,否則返回。因?yàn)橄袼財(cái)?shù)量龐大,開的線程多了,GPU需要為每個(gè)線程塊(一個(gè)線程塊有不超過1024個(gè)線程,因不同型號GPU而異)拷貝參數(shù),每個(gè)線程還需去GPU全局內(nèi)存讀取數(shù)據(jù),會造成不小的時(shí)間開銷,此時(shí)保證25幀的幀率就很困難了。實(shí)際操作上,需要記錄每個(gè)帶融合像素的位置、對應(yīng)的圖塊、每個(gè)像素通過上/下采樣得到時(shí)對應(yīng)的像素位置及使用的高斯模版位置。在GPU中僅僅為這些像素開辟線程。這些在上述參數(shù)計(jì)算過程中均可以確定。因此,優(yōu)選的,所述預(yù)設(shè)融合參數(shù)包括:每個(gè)待融合像素的位置及對應(yīng)的圖塊,每個(gè)待融合像素通過下采樣和上采樣分別得到的對應(yīng)的像素位置,以及所采用的高斯模板的位置。
需要說明的是,采用更多層拉普拉斯金字塔(比如8層,最高層加權(quán)4個(gè)像素寬度,則影響到最終的全景圖上縫合線位置約5x 2^7=640像素寬度)可以獲得更加理想的效果,但是由于分層處理步驟繁多,采用較多層數(shù)會直接導(dǎo)致計(jì)算量劇增,嚴(yán)重影響實(shí)時(shí)性。發(fā)明人經(jīng)過試驗(yàn),采用4層拉普拉斯金字塔,縫合線寬度40像素,涉及像素60萬,幀率從32掉到了27,所以采用更多層(就得更寬范圍)幀率就無法保持25fps以上了。此外,發(fā)明人還發(fā)現(xiàn),采用4層拉普拉斯金字塔的融合效果已經(jīng)足夠理想,能夠適用于廣電級直播需求,因此本發(fā)明實(shí)施例中優(yōu)選采用4層。
優(yōu)選的,本發(fā)明實(shí)施例中條帶式融合處理的相關(guān)操作是在YUV色彩空間下的Y分量進(jìn)行的。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V”表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。因?yàn)閁和V分量在縫合線兩側(cè)沒有差異。Y分量的差異低于3-5像素,人眼就已經(jīng)無法分辨,縫合線就不明顯了。在上述6的操作下,已經(jīng)實(shí)現(xiàn)了縫合線位置的無縫過渡,不會模糊也不會有亮度突變。
步驟230、獲取待拼接的多路視頻源數(shù)據(jù)。
步驟240、采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像。
步驟250、采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理,并輸出融合后的全景視頻圖像。
本實(shí)施例中,按照預(yù)設(shè)融合參數(shù)采用與步驟220相對應(yīng)的融合方式對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理。
本發(fā)明實(shí)施例對獲取預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)的具體方案進(jìn)行了詳述,利用最大流最小割定理計(jì)算每兩個(gè)圖塊之間的最佳縫合線,并進(jìn)一步采用了改進(jìn)的拉普拉斯金字塔對縫合線條帶進(jìn)行融合,可實(shí)現(xiàn)縫合線位置的無縫過渡,有效提高了全景視頻圖像的拼接質(zhì)量。
實(shí)施例三
圖6為本發(fā)明實(shí)施例三提供的一種全景視頻拼接方法的流程示意圖,本實(shí)施例以上述實(shí)施例為基礎(chǔ)進(jìn)行優(yōu)化,在本實(shí)施例中,在步驟“采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理”之前,還包括:以圖塊重疊區(qū)的像素差異最小化為原則對各圖塊的亮度直方圖進(jìn)行平移調(diào)節(jié)操作,以減少各圖塊之間的亮度差異。
相應(yīng)的,本實(shí)施例的方法包括如下步驟:
步驟610、獲取多個(gè)視頻采集設(shè)備的設(shè)備信息和多個(gè)視頻采集設(shè)備所采集的對應(yīng)于同一時(shí)刻的視頻截圖。
其中,所述設(shè)備信息包括焦距和設(shè)備所在位置。
步驟620、根據(jù)設(shè)備信息將所獲取的視頻截圖拼接成全景圖像,并記錄拼接過程對應(yīng)的投影平面、投影參數(shù)、最佳縫合線和融合參數(shù),得到預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)。
步驟630、獲取待拼接的多路視頻源數(shù)據(jù)。
步驟640、采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像。
步驟650、以圖塊重疊區(qū)的像素差異最小化為原則對各圖塊的亮度直方圖進(jìn)行平移調(diào)節(jié)操作,以減少各圖塊之間的亮度差異。
在上述實(shí)施例中采用多層拉普拉斯金字塔已經(jīng)實(shí)現(xiàn)了縫合線位置的無縫過渡,不會模糊也不會有亮度突變。但存在一個(gè)問題是圖塊整體亮度差異可能會比較明顯,36-48像素的過渡無法彌補(bǔ)太明顯的亮度差異,需要對各圖塊的整理亮度進(jìn)行調(diào)整,以減少各圖塊之間的亮度差異。
常用的亮度調(diào)整方法有直方圖匹配法及勻光處理等方法,但是這些方法一般只適用于大范圍場景,比如遙感圖像。對于直播類等小范圍場景,上述方法會造成灰度級丟失,結(jié)果造成圖片質(zhì)量欠佳。比如一張桌子看起來是一個(gè)顏色,其實(shí)有3-5個(gè)灰度,灰度級丟失就意味著可能只有1-2個(gè)灰度級,這時(shí)桌子就是一塊一塊的色塊,沒有過渡,很不自然。
本實(shí)施例中采用了全新的亮度調(diào)節(jié)方案,具體的,本步驟可包括:對于參考圖塊和待調(diào)節(jié)圖塊,分別計(jì)算圖塊重疊區(qū)的亮度直方圖;利用候選平移參數(shù)值調(diào)整所述待調(diào)節(jié)圖塊的顏色映射表,得到第一顏色映射表;根據(jù)所述第一顏色映射表更新所述待調(diào)節(jié)圖塊的圖塊重疊區(qū)的亮度直方圖;將對應(yīng)于同一圖塊重疊區(qū)的圖塊記為匹配對,對于每個(gè)匹配對,將第一圖塊對應(yīng)的圖塊重疊區(qū)的亮度直方圖的亮度總和與第二圖塊對應(yīng)的圖塊重疊區(qū)的亮度直方圖的亮度總和的差值的絕對值作為亮度差異評價(jià)函數(shù)值;以各匹配對的亮度差異評價(jià)函數(shù)值的和最小為原則,得到每個(gè)待調(diào)節(jié)圖塊對應(yīng)的目標(biāo)平移參數(shù)值;利用目標(biāo)平移參數(shù)值調(diào)整所述待調(diào)節(jié)圖塊的顏色映射表,得到第二顏色映射表;采用所述第二顏色映射表映射所述待調(diào)節(jié)圖塊中的每個(gè)像素,以實(shí)現(xiàn)對所述待調(diào)節(jié)圖塊的亮度直方圖平移調(diào)節(jié)操作。
其中,對于每次平移調(diào)節(jié)操作,參考圖塊的數(shù)量可以為一個(gè)也可以為多個(gè),待調(diào)節(jié)圖塊的數(shù)量可以為一個(gè)也可以為多個(gè),具體可參照各圖塊之間的相互位置關(guān)系來確定。多個(gè)圖塊的亮度調(diào)節(jié)需要綜合考慮差異,比如1-2,1-3,1-4,2-4,2-3,2-5,4-6以及5-6的圖塊重疊區(qū),數(shù)字表示圖塊編號,“-”表示兩個(gè)圖塊存在重疊。在以1為準(zhǔn)調(diào)節(jié)亮度時(shí),2、3、4要同時(shí)調(diào)整,以2-4和2-3作為約束,并計(jì)算總體亮度差異評價(jià)函數(shù)值,取此函數(shù)值最小時(shí),2、3、4的亮度調(diào)節(jié)值為亮度調(diào)節(jié)結(jié)果。再對照2和4調(diào)整6的亮度,以5-6為約束。具體參考哪一路調(diào)整亮度可以指定。
上述亮度調(diào)節(jié)方案中,平移參數(shù)的表達(dá)式為:
Y=1/(1-X/255)-1
其中,Y為平移參數(shù);X為亮度調(diào)節(jié)因子,其取值范圍為[-100,100]。
圖7為本發(fā)明實(shí)施例三提供的平移參數(shù)對應(yīng)的曲線示意圖,X用于表征亮度調(diào)節(jié)范圍,值越大越亮越小越暗。Y的值是[-0.2817,0.6452]范圍內(nèi)的單調(diào)增函數(shù),屬于雙曲線的一支。
對給定的亮度值X使用此公式計(jì)算得到一個(gè)Y值,利用平移參數(shù)值來調(diào)整顏色映射表的具體方式為用這個(gè)Y值乘以顏色映射表Z=[0:1:255],得到新的顏色映射表nZ=[0:1:255]+Y*[0:1:255]。使用nZ映射圖塊的任意像素點(diǎn)Px=nZ[Px],得到的圖塊亮度就會變量或變暗。這種曲線的特點(diǎn)是X=0位置亮度不變化,亮度調(diào)整在[-50,50]范圍內(nèi)亮度變化值受到抑制,屬于微調(diào),其余區(qū)間接近于線性變化。采用這種調(diào)節(jié)方式的好處在于,在光照并不復(fù)雜的場景,比如白天室外場景以及體育比賽場地等,攝像頭拍攝出來的視頻幀亮度差異并不大,只需要微調(diào)即可,能夠減少運(yùn)算量,保證全景視頻圖像輸出的實(shí)時(shí)性。
優(yōu)選的,在對于參考圖塊和待調(diào)節(jié)圖塊,分別計(jì)算圖塊重疊區(qū)的亮度直方圖之前,還包括:利用特征點(diǎn)匹配和/或顏色匹配對各圖塊重疊區(qū)進(jìn)行匹配操作,并按照預(yù)設(shè)條件篩選出有效的圖塊重疊區(qū)。
為了保證重疊區(qū)的有效,需要考慮到錯(cuò)位問題可能使得某些重疊區(qū)實(shí)際匹配的上的有效像素不多,此時(shí)使用特征點(diǎn)匹配和顏色匹配兩種方式評價(jià)重疊區(qū)的有效性??焖偬卣髌ヅ?比如harris或orb特征點(diǎn)匹配與ransac算法結(jié)合剔除錯(cuò)配點(diǎn))對重疊區(qū)操作,對匹配點(diǎn)數(shù)量進(jìn)行排序,取匹配點(diǎn)不低于中位數(shù)*0.9(不排除非常接近中位數(shù)的)的匹配對。使用顏色匹配是因?yàn)閔arris或orb特征點(diǎn)在梯度小的區(qū)域極少存在,而這樣的大塊區(qū)域往往是同名的像素點(diǎn)。具體做法是采用圖切割法分別對A、B的重疊部分劃分區(qū)域(每個(gè)區(qū)域稱為一個(gè)子圖塊),設(shè)定一個(gè)像素閾值,比如重疊區(qū)像素的5%,用以剔除太小的子圖塊。對其他子圖塊分別計(jì)算U、V分量的顏色直方圖,這樣的子圖塊并不多,數(shù)量一般均在100以內(nèi),使用巴氏距離兩兩計(jì)算直方圖距離,根據(jù)距離排序,取距離不大于中位數(shù)d_mid*0.9的匹配對,剔除像素?cái)?shù)量懸殊的匹配對。計(jì)算這些匹配對涉及的像素總和sum_pix。
對U或V分量的直方圖Ha和Hb,利用U、V分量計(jì)算出兩個(gè)巴氏距離batt_U和batt_V,兩個(gè)值相乘得到一個(gè)距離值batt=batt_U*batt_V。相乘的原因是兩個(gè)分量上的巴氏距離都要比較大才能說明匹配較好。
對所有的有重疊區(qū)計(jì)算得到一個(gè)特征點(diǎn)匹配對數(shù)N1和匹配的像素總和N2。由于N1表征梯度大的區(qū)域的匹配點(diǎn),N2表示的是梯度小的區(qū)域的匹配點(diǎn),二者相加作為評價(jià)函數(shù)值Nx=N1+N2。
所有重疊區(qū)得到的Nx值排序,取不低于中位數(shù)m_Nx*0.9的重疊區(qū)進(jìn)入下一步,調(diào)節(jié)圖塊亮度。
在進(jìn)行圖塊亮度調(diào)節(jié)的具體操作上,先找到兩個(gè)圖塊A、B之間的重疊像素(Pa和Pb,都在全景圖的(x,y)位置)。然后,計(jì)算各自的顏色直方圖(這里就是重疊區(qū)Y分量的直方圖Ha和Hb)??紤]到誤差存在導(dǎo)致錯(cuò)位,不宜直接使用Pa和Pb的值的差異作為亮度差異評價(jià)函數(shù),更合適的辦法是使用A、B在重疊區(qū)的亮度總和之差異,這樣做的好處在于,真正的同名點(diǎn)之間的亮度值做差計(jì)算得以實(shí)現(xiàn)。例如以圖塊A(參考圖塊)為參照,調(diào)整圖塊B(待調(diào)節(jié)圖塊)的亮度。使用X的值對B計(jì)算顏色映射表,依照此表計(jì)算新的顏色直方圖nHb。再將Ha和nHb的亮度總和之差的絕對值作為亮度差異評價(jià)函數(shù)值。
再比如以A為參照,調(diào)節(jié)B和C的亮度,同時(shí),B和C之間有重疊區(qū)作為約束。需要注意的是,A和B之間的重疊區(qū)、A和C之間的重疊區(qū)、B和C之間的重疊區(qū)是不同的,對應(yīng)的直方圖對也是不同的,記作Hab_A和Hab_B、Hac_A和Hac_C、Hbc_B和Hbc_C。分別計(jì)算上述三個(gè)匹配對的亮度總和之差的絕對值,將三個(gè)絕對值的和作為亮度差異評價(jià)函數(shù)值。
如果B、C、D同時(shí)對A調(diào)整亮度,B和C、C和D、B和D之間有重疊區(qū)作為約束,也是與上面類似的做法。
按照上面的邏輯,假設(shè)參照A調(diào)整好了B、C、D,此時(shí)E與B、C、D均有重疊區(qū),那么需要參照B、C、D調(diào)整E的亮度。在亮度可調(diào)節(jié)的范圍內(nèi),同時(shí)調(diào)整Heb_E、Hec_E和Hed_E,使得它們分別與Heb_B、Hec_C和Hed_D的評價(jià)函數(shù)值之和最小。
同理,如果E、F與B、C、D同時(shí)有重疊區(qū)時(shí),E和F對B、C、D同時(shí)調(diào)節(jié)亮度,亮度差異評價(jià)函數(shù)值之和取最小。若此時(shí)E和F還有重疊區(qū)作為約束,要在同時(shí)調(diào)節(jié)E和F的同時(shí),將E和F之間的重疊區(qū)亮度差異評價(jià)函數(shù)值考慮進(jìn)來,就像上述參照A調(diào)節(jié)B和C的亮度,有B和C之間的重疊區(qū)作為約束一樣處理。
可以理解的是,一般2K視頻輸出的高清相機(jī)最多能有8-10臺左右組成全景相機(jī),輸出4K到6K,更多的相機(jī)并不必要,因?yàn)?-10臺廣角相機(jī)足以覆蓋水平360度和垂直360度,同時(shí),GPU能處理到25幀以上幀率的的視頻幀大小基本在6K以內(nèi),主板PCI總線的數(shù)據(jù)吞吐也幾乎達(dá)到了極限。所以,雖然上述算法較為復(fù)雜,但由于上述硬件的限制,參照某一路相機(jī)調(diào)整其它相機(jī)視頻幀的亮度,基本上有2~3次調(diào)節(jié)層次就可以覆蓋全部相機(jī)。
比如第一層以0為準(zhǔn),調(diào)節(jié)1、2、3路,以1、2、3之間的重疊區(qū)作為約束。第二層,以1、2、3路為準(zhǔn),調(diào)節(jié)4、5、6、7路,以4~7路之間的重疊區(qū)作為約束。第二層可能會出現(xiàn)同時(shí)以1、2、3路為準(zhǔn),調(diào)節(jié)4、5路,以4、5的重疊區(qū)為約束,再以1、2、3中某1~2路為準(zhǔn),調(diào)節(jié)6、7路,以4、5與6、7之間的重疊區(qū)為約束。即以1~3路為準(zhǔn),與之有重疊區(qū)較多者優(yōu)先。第二層也可能沒有將4~7路調(diào)整完,僅調(diào)整了4~5路,這時(shí)出現(xiàn)第三層調(diào)整,以4~5為準(zhǔn),調(diào)節(jié)6~7路,同時(shí)以6~7路之間的重疊區(qū)為約束。
后續(xù)依次類推,如果圖塊已經(jīng)全部調(diào)節(jié)完畢,就退出。一般情況下,能夠拼成一個(gè)完整的全景圖,一個(gè)圖塊至少與一個(gè)圖塊相鄰,一個(gè)圖塊與之相鄰的圖塊數(shù)量多數(shù)都在兩個(gè)以上,即使經(jīng)過上述的特征點(diǎn)匹配、顏色匹配篩選都是如此,出現(xiàn)某個(gè)圖塊沒有調(diào)整的情況是不存在的。
簡言之,已經(jīng)調(diào)好亮度的圖塊,要么作為約束調(diào)整其它圖塊,要么調(diào)整其它圖塊時(shí)考慮與之的重疊區(qū)作為約束,力求總體亮度差異最小化。在此基礎(chǔ)上,縫合線條帶的金字塔融合才能將縫合線位置平滑過渡,實(shí)現(xiàn)實(shí)時(shí)的無縫拼接。
步驟660、采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理,并輸出融合后的全景視頻圖像。
本發(fā)明實(shí)施例提供的全景視頻拼接方法,在對預(yù)設(shè)縫合線進(jìn)行條帶式融合處理之前,以圖塊重疊區(qū)的像素差異最小化為原則對各圖塊的亮度直方圖進(jìn)行平移調(diào)節(jié)操作,減少了各圖塊之間的亮度差異,使整幀全景視頻圖像的亮度均勻一致,實(shí)現(xiàn)無縫拼接,進(jìn)一步保證了實(shí)時(shí)高質(zhì)量全景視頻的輸出,更好地滿足了廣電級應(yīng)用需求。
實(shí)施例四
圖8為本發(fā)明實(shí)施例四提供的一種全景視頻拼接裝置的結(jié)構(gòu)框圖,該裝置可由軟件和/或硬件實(shí)現(xiàn),一般集成在視頻拼接設(shè)備中,可通過執(zhí)行全景視頻拼接方法來進(jìn)行全景視頻的拼接。如圖8所示,該裝置包括視頻源數(shù)據(jù)獲取模塊81、投影模塊82、融合模塊83和全景視頻輸出模塊84。
其中,視頻源數(shù)據(jù)獲取模塊81,用于獲取待拼接的多路視頻源數(shù)據(jù);投影模塊82,用于采用并行方式根據(jù)預(yù)設(shè)投影參數(shù)將對應(yīng)于同一時(shí)刻的各視頻源圖像投影至預(yù)設(shè)全景投影面,得到由多個(gè)圖塊構(gòu)成的全景投影視頻圖像,其中,每個(gè)圖塊對應(yīng)一個(gè)視頻源圖像,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū);融合模塊83,用于采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理;全景視頻輸出模塊84,用于輸出融合后的全景視頻圖像。
本發(fā)明實(shí)施例提供的全景視頻拼接裝置,在獲取到待拼接的多路視頻源數(shù)據(jù)之后,采用并行方式對用于拼接全景視頻圖像的視頻源圖像進(jìn)行投影及融合等處理,保證拼接效率,可增強(qiáng)全景視頻輸出的實(shí)時(shí)性;此外,采用預(yù)先計(jì)算好的投影參數(shù)、全景投影面、融合參數(shù)以及縫合線來進(jìn)行相關(guān)處理,可減少視頻拼接時(shí)的運(yùn)算量,進(jìn)一步提高拼接效率,同時(shí)由于上述參數(shù)等內(nèi)容是預(yù)先計(jì)算好的,能夠保證圖像的高清晰度。因此,本發(fā)明實(shí)施例提供的技術(shù)方案能夠兼顧全景視頻的拼接效率及圖像質(zhì)量,保證所輸出的全景視頻具備較高的時(shí)效性和較佳的圖像質(zhì)量,可適用于廣電級直播。
在上述實(shí)施例的基礎(chǔ)上,該裝置還包括:
數(shù)據(jù)獲取模塊,用于在所述獲取待拼接的多路視頻源數(shù)據(jù)之前,獲取多個(gè)視頻采集設(shè)備的設(shè)備信息和所述多個(gè)視頻采集設(shè)備所采集的對應(yīng)于同一時(shí)刻的視頻截圖,其中,所述設(shè)備信息包括焦距和設(shè)備所在位置;
圖像拼接模塊,用于根據(jù)所述設(shè)備信息將所獲取的視頻截圖拼接成全景圖像,并記錄拼接過程對應(yīng)的投影平面、投影參數(shù)、最佳縫合線和融合參數(shù),得到預(yù)設(shè)全景投影面、預(yù)設(shè)投影參數(shù)、預(yù)設(shè)縫合線和預(yù)設(shè)融合參數(shù)。
在上述實(shí)施例的基礎(chǔ)上,所述獲取待拼接的多路視頻源數(shù)據(jù),包括:獲取預(yù)設(shè)時(shí)間間隔內(nèi)的相比上一時(shí)刻存在畫面更新的多路視頻源數(shù)據(jù)。
在上述實(shí)施例的基礎(chǔ)上,所述并行方式包括:不同視頻源圖像采用不同的函數(shù)并行處理,同一視頻源圖像中的不同像素采用不同的線程并行處理。
在上述實(shí)施例的基礎(chǔ)上,所述根據(jù)所述設(shè)備信息將所獲取的視頻截圖拼接成全景圖像,包括:對所獲取的視頻截圖進(jìn)行特征點(diǎn)匹配;根據(jù)所述設(shè)備信息和特征點(diǎn)匹配結(jié)果將所獲取的視頻截圖投影至同一坐標(biāo)系下并展開,得到由多個(gè)圖塊構(gòu)成的全景投影圖像,其中,每個(gè)圖塊對應(yīng)一個(gè)視頻截圖,每兩個(gè)圖塊之間的重疊部分構(gòu)成圖塊重疊區(qū);利用最大流最小割定理計(jì)算每兩個(gè)圖塊之間的最佳縫合線,其中,以圖塊重疊區(qū)的梯度值作為圖塊重疊區(qū)內(nèi)像素的權(quán)重值;對所述最佳縫合線進(jìn)行條帶式融合處理。
在上述實(shí)施例的基礎(chǔ)上,所述對所述最佳縫合線進(jìn)行條帶式融合處理,包括:按照預(yù)設(shè)像素寬度對所述最佳縫合線進(jìn)行拓寬,得到縫合線條帶;利用多層拉普拉斯金字塔對所述縫合線條帶進(jìn)行融合。
在上述實(shí)施例的基礎(chǔ)上,所述預(yù)設(shè)融合參數(shù)包括:每個(gè)待融合像素的位置及對應(yīng)的圖塊,每個(gè)待融合像素通過下采樣和上采樣分別得到的對應(yīng)的像素位置,以及所采用的高斯模板的位置。
在上述實(shí)施例的基礎(chǔ)上,該裝置還包括:
亮度調(diào)節(jié)模塊,用于在采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理之前,以圖塊重疊區(qū)的像素差異最小化為原則對各圖塊的亮度直方圖進(jìn)行平移調(diào)節(jié)操作,以減少各圖塊之間的亮度差異。
在上述實(shí)施例的基礎(chǔ)上,所述亮度調(diào)節(jié)模塊具體用于:在采用并行方式根據(jù)預(yù)設(shè)融合參數(shù)對位于圖塊重疊區(qū)內(nèi)的預(yù)設(shè)縫合線進(jìn)行條帶式融合處理之前,對于參考圖塊和待調(diào)節(jié)圖塊,分別計(jì)算圖塊重疊區(qū)的亮度直方圖;利用候選平移參數(shù)值調(diào)整所述待調(diào)節(jié)圖塊的顏色映射表,得到第一顏色映射表;根據(jù)所述第一顏色映射表更新所述待調(diào)節(jié)圖塊的圖塊重疊區(qū)的亮度直方圖;將對應(yīng)于同一圖塊重疊區(qū)的圖塊記為匹配對,對于每個(gè)匹配對,將第一圖塊對應(yīng)的圖塊重疊區(qū)的亮度直方圖的亮度總和與第二圖塊對應(yīng)的圖塊重疊區(qū)的亮度直方圖的亮度總和的差值的絕對值作為亮度差異評價(jià)函數(shù)值;以各匹配對的亮度差異評價(jià)函數(shù)值的和最小為原則,得到每個(gè)待調(diào)節(jié)圖塊對應(yīng)的目標(biāo)平移參數(shù)值;利用目標(biāo)平移參數(shù)值調(diào)整所述待調(diào)節(jié)圖塊的顏色映射表,得到第二顏色映射表;采用所述第二顏色映射表映射所述待調(diào)節(jié)圖塊中的每個(gè)像素,以實(shí)現(xiàn)對所述待調(diào)節(jié)圖塊的亮度直方圖平移調(diào)節(jié)操作。
在上述實(shí)施例的基礎(chǔ)上,平移參數(shù)的表達(dá)式為:
Y=1/(1-X/255)-1
其中,Y為平移參數(shù);X為亮度調(diào)節(jié)因子,其取值范圍為[-100,100]。
在上述實(shí)施例的基礎(chǔ)上,所述亮度調(diào)節(jié)模塊還用于:
在對于參考圖塊和待調(diào)節(jié)圖塊,分別計(jì)算圖塊重疊區(qū)的亮度直方圖之前,利用特征點(diǎn)匹配和/或顏色匹配對各圖塊重疊區(qū)進(jìn)行匹配操作,并按照預(yù)設(shè)條件篩選出圖塊重疊區(qū)的有效部分。
上述實(shí)施例中提供的全景視頻拼接裝置可執(zhí)行本發(fā)明任意實(shí)施例所提供的全景視頻拼接方法,具備執(zhí)行該方法相應(yīng)的功能模塊和有益效果。未在上述實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見本發(fā)明任意實(shí)施例所提供的全景視頻拼接方法。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實(shí)施例,對本領(lǐng)域技術(shù)人員來說能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護(hù)范圍。因此,雖然通過以上實(shí)施例對本發(fā)明進(jìn)行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。