本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別涉及一種球形全景視頻的拼接方法及系統(tǒng)。
背景技術(shù):
全景視頻是一種新型的視頻。傳統(tǒng)視頻只能看到空間中某個方向和范圍的信息,與此相比,全景視頻記錄了空間360度全方位信息,并且可以與用戶進行一定的交互,例如改變觀察方向和切換場景等。它是由多個不同方向拍攝的普通視頻拼合而成的。視頻拼接在軍事、醫(yī)學(xué)、計算機視覺、視頻會議、安防等領(lǐng)域中都有重要應(yīng)用。全景視頻由全景圖發(fā)展而來。全景圖的拼接已研究得比較多。
按技術(shù)方法的不同,最常用的方法可分為三類:基于頻域的方法、基于特征的方法和基于灰度梯度的方法。其中,基于頻域的方法以分數(shù)傅里葉變換的改進方法為代表,該類方法能很好地解決平移、旋轉(zhuǎn)和均勻縮放的配準問題,但卻無法很好地解決透視投影變換的配準?;谔卣鞯姆椒ㄒ猿叨炔蛔兲卣髯儞Q算法(sift)代表,該方法能很好的解決包括透視變換的各種變換的配準問題,但該方法時間復(fù)雜度非常高,而且對于紋理圖像的配準結(jié)果也不夠理想?;诨叶忍荻鹊姆椒ㄊ峭ㄟ^圖像灰度差最小化來求解投影變換參數(shù),使用lm優(yōu)化技術(shù)求取透視投影參數(shù),但這些方法易受光照變化的影響。
按構(gòu)造方式不同,全景圖可分為柱型、方型和球型三種(全景視頻亦然)。其中柱型全景研究得較多,各種全景相關(guān)技術(shù)也由其率先推進。但柱型全景有個固有的缺點,不能完整的包含空間信息,頂部和底部的空間信息是沒有的。球型全景空間信息完全,但比柱型全景困難,研究報道則少很多。一方面,其拍攝方案比較麻煩,需拍攝十幾甚至幾十照片;另一方面,如此多的照片誤差會累積得太多,以至于自動拼接最后無法進行,因此它是一種半自動的方法,經(jīng)常需要手動調(diào)整。因此,如何提供拍攝數(shù)量少、全自動、拼接圖像質(zhì)量高的球形全景視頻拼接方法,以使全景視頻的拍攝變得簡易,并且拍攝質(zhì)量也得到提高,是本領(lǐng)域技術(shù)人員需要解決的技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種球形全景視頻的拼接方法及系統(tǒng),可使全景視頻的拼接變得簡易和高效,并且圖像質(zhì)量可以得到提高。
為解決上述技術(shù)問題,本發(fā)明提供一種球形全景視頻的拼接方法,所述方法包括:
獲取魚眼鏡頭拍攝的視頻對;其中,所述視頻對包括具有n幀第一圖像的第一視頻和具有n幀第二圖像的第二視頻;且n幀第一圖像與n幀第二圖像具有一一對應(yīng)關(guān)系;
分別將具有所述一一對應(yīng)關(guān)系的第一圖像與第二圖像作為圖像對執(zhí)行拼接操作,形成拼接視頻;其中,所述拼接操作的過程包括:
確定所述圖像對中第一圖像對應(yīng)的角點;
在所述圖像對中第二圖像中與各所述角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,并利用hsv算法對搜索結(jié)果進行檢驗確定各所述角點對應(yīng)的匹配點;
根據(jù)選定的角點以及對應(yīng)的匹配點計算所述圖像對的轉(zhuǎn)換矩陣;
利用所述轉(zhuǎn)換矩陣確定所述圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值;
將全部所述顏色值填充到所述拼接視頻中的對應(yīng)位置。
可選的,確定所述圖像對中第一圖像對應(yīng)的角點,包括:
判斷所述圖像對中的第一圖像是否為所述第一視頻的第一幀圖像;
若是第一幀圖像,則對所述第一幀圖像進行角點檢測,確定所述第一幀圖像對應(yīng)的角點;
若不是第一幀圖像,則判斷所述圖像對是否為間隔預(yù)定幀數(shù)量的圖像對;
若不是間隔預(yù)定幀數(shù)量的圖像對,則將前一幀圖像對中的第一圖像的角點作為所述圖像對中的第一圖像對應(yīng)的角點;
若是間隔預(yù)定幀數(shù)量的圖像對,則對所述圖像對中的第一圖像的選定重疊區(qū)進行角點檢測得到陰影角點,并判斷所述陰影角點的數(shù)量與經(jīng)緯圖像重疊區(qū)中的角點之差是否大于閾值;若是,則對所述圖像對中的第一圖像進行角點檢測,確定所述圖像對中的第一圖像對應(yīng)的角點。
可選的,所述角點檢測的過程,包括:
利用公式
利用公式r=det(m)-k(trace(m))2計算所述預(yù)選角點m的響應(yīng)函數(shù)值r;
將所述響應(yīng)函數(shù)值r按照從高到底的順序進行排列,并選取前預(yù)定數(shù)量的響應(yīng)函數(shù)值r對應(yīng)的預(yù)選角點m作為角點檢測選定的角點;
其中,i為第一視頻,ix、iy為通過水平和豎直方向差分算子對圖像濾波得到的梯度圖像,w(x,y)取二維高斯函數(shù),det為求矩陣行列式,trace為矩陣的跡,k為一個常數(shù)。
可選的,在所述圖像對中第二圖像中與各所述角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,包括:
確定所述角點檢測選定的角點在所述圖像對中第二圖像中對應(yīng)的理論位置,并以各所述理論位置為中心向外擴展預(yù)定范圍作為經(jīng)驗區(qū)域搜索對應(yīng)的匹配點。
可選的,利用hsv算法對搜索結(jié)果進行檢驗確定各所述角點對應(yīng)的匹配點,包括:
分別利用公式
選取最小的加權(quán)顏色差總和ex,y對應(yīng)的像素點作為角點的匹配點;
其中,ex,y為第二圖像在(x,y)對于第一圖像中角點的顏色差總和,h′s+u,t+v和s′s+u,t+v為第一圖像中在(s+u,t+v)處的色調(diào)和飽和度,h″x+u,y+v和s″x+u,y+v為第二圖像中在(s+u,t+v)處的色調(diào)和飽和度,kh和ks為兩個系數(shù),w(u,v)為窗口像素位置的權(quán)重函數(shù),u,v分別為窗口內(nèi)像素的位置,l為正方形窗口的尺寸。
可選的,根據(jù)選定的角點以及對應(yīng)的匹配點計算所述圖像對的轉(zhuǎn)換矩陣,包括:
從所述角點檢測選定的角點中按照距離閾值選擇5個角點作為選定的角點;
利用公式
其中,a11、a12…a43共為15個未知數(shù),φl、θl、φr、θr分別是第一圖像和第二圖像的拍攝坐標(biāo)系轉(zhuǎn)換成球坐標(biāo)系后的經(jīng)緯度。
可選的,所述距離閾值rt具體為:rt=ktr0;其中,r0為轉(zhuǎn)向半徑,kt為一個系數(shù)。
可選的,利用所述轉(zhuǎn)換矩陣確定所述圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值,包括:
遍歷所述轉(zhuǎn)換矩陣中經(jīng)度和緯度,確定第一圖像中各位置的顏色值c1和第二圖像中各位置的顏色值c2;
利用顏色值確定公式
其中,c為所述圖像對拼接后的圖像中各位置的顏色值,k1、k2是權(quán)值系數(shù)。
本發(fā)明還提供一種球形全景視頻的拼接系統(tǒng),所述系統(tǒng)包括:
視頻獲取模塊,用于獲取魚眼鏡頭拍攝的視頻對;其中,所述視頻對包括具有n幀第一圖像的第一視頻和具有n幀第二圖像的第二視頻;且n幀第一圖像與n幀第二圖像具有一一對應(yīng)關(guān)系;
拼接模塊,用于分別將具有所述一一對應(yīng)關(guān)系的第一圖像與第二圖像作為圖像對執(zhí)行拼接操作,形成拼接視頻;
拼接操作模塊,用于確定所述圖像對中第一圖像對應(yīng)的角點;在所述圖像對中第二圖像中與各所述角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,并利用hsv算法對搜索結(jié)果進行檢驗確定各所述角點對應(yīng)的匹配點;根據(jù)選定的角點以及對應(yīng)的匹配點計算所述圖像對的轉(zhuǎn)換矩陣;利用所述轉(zhuǎn)換矩陣確定所述圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值;將全部所述顏色值填充到所述拼接視頻中的對應(yīng)位置。
本發(fā)明所提供的一種球形全景視頻的拼接方法,包括:獲取魚眼鏡頭拍攝的視頻對;分別將具有所述一一對應(yīng)關(guān)系的第一圖像與第二圖像作為圖像對執(zhí)行拼接操作,形成拼接視頻;其中,所述拼接操作的過程包括:確定所述圖像對中第一圖像對應(yīng)的角點;在所述圖像對中第二圖像中與各所述角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,并利用hsv算法對搜索結(jié)果進行檢驗確定各所述角點對應(yīng)的匹配點;根據(jù)選定的角點以及對應(yīng)的匹配點計算所述圖像對的轉(zhuǎn)換矩陣;利用所述轉(zhuǎn)換矩陣確定所述圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值;將全部所述顏色值填充到所述拼接視頻中的對應(yīng)位置。
可見,通過對魚眼鏡頭拍攝的視頻對進行合適的坐標(biāo)變換實現(xiàn)全景視頻自動拼接。其中轉(zhuǎn)換矩陣的求解過程中需要進行角點檢測、經(jīng)驗區(qū)域搜索和hsv顏色空間匹配來實現(xiàn)匹配點的自動檢測;該方法拍攝數(shù)量少,拼接速度快,拼接過程啟動后無需人工調(diào)整和干預(yù)。生成視頻拼接效果好,中間接縫位置拼接準確,過渡自然。從整個視頻播放看,沒有圖像抖動和錯位。本發(fā)明還提供了一種球形全景視頻的拼接系統(tǒng),具有上述有益效果,在此不再贅述。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例所提供的球形全景視頻的拼接方法的流程圖;
圖2為本發(fā)明實施例所提供的魚眼圖像中經(jīng)緯度及轉(zhuǎn)向半徑的計算原理示意圖;
圖3為本發(fā)明實施例所提供的球形全景視頻的拍攝方向及坐標(biāo)系示意圖;
圖4為本發(fā)明實施例所提供的直角坐標(biāo)對經(jīng)緯度的轉(zhuǎn)換示意圖;
圖5為本發(fā)明實施例所提供的全景展開圖像的經(jīng)緯度與像素坐標(biāo)的換算示意圖;
圖6為本發(fā)明實施例所提供的顏色融合權(quán)值的計算示意圖;
圖7為本發(fā)明實施例所提供的拼接重合區(qū)域示意圖;
圖8為本發(fā)明實施例所提供的一種具體拼接視頻截圖;
圖9為本發(fā)明實施例所提供的一種具體的球形全景視頻的拼接方法的流程示意圖;
圖10為本發(fā)明實施例所提供的球形全景視頻的拼接系統(tǒng)的結(jié)構(gòu)框圖。
具體實施方式
本發(fā)明的核心是提供一種球形全景視頻的拼接方法及系統(tǒng),可使全景視頻的拼接變得簡易和高效,并且圖像質(zhì)量可以得到提高。
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1,圖1為本發(fā)明實施例所提供的球形全景視頻的拼接方法的流程圖;該方法可以包括:
s100、獲取魚眼鏡頭拍攝的視頻對;其中,視頻對包括具有n幀第一圖像的第一視頻和具有n幀第二圖像的第二視頻;且n幀第一圖像與n幀第二圖像具有一一對應(yīng)關(guān)系。
具體的,本實施例對魚眼鏡頭拍攝的視頻對中的每一幀圖像對進行拼接,進而可以完成對整個視頻對的拼接。即本實施例并不對魚眼鏡頭本身進行限定,只要是可以完成拍攝的視頻對拼接在一起是全景視頻即可。這里的第一視頻和第二視頻僅僅是為了區(qū)分視頻對中的兩個視頻而已,并不對它們進行限定,即視頻對中的人一個視頻都可以是第一視頻,對應(yīng)的另一個即為第二視頻。相應(yīng)的第一圖像和第二圖像也僅僅是為了區(qū)分兩個視頻中的幀圖像而已。本實施例并不限定n的數(shù)值,其可以是大于0的任意整數(shù),兩個視頻對中的視頻的幀數(shù)是相同的且具有一一對應(yīng)的關(guān)系,即按照拍攝行程的視頻的幀順序?qū)?yīng)。例如,第一視頻有5幀第一圖像(a1,a2,a3,a4,a5),第二視頻有5幀第二圖像(b1,b2,b3,b4,b5),則a1與b1為具有一一對應(yīng)關(guān)系的圖像對,a2與b2為具有一一對應(yīng)關(guān)系的圖像對。
s110、分別將具有一一對應(yīng)關(guān)系的第一圖像與第二圖像作為圖像對執(zhí)行拼接操作,形成拼接視頻。
具體的,對視頻對中每一幀圖像對都進行拼接操作后,即完成了對整個視頻對的拼接工作。即對視頻的每幀進行操作并進行適當(dāng)?shù)膬?yōu)化處理,最終生成拼接視頻。本實施例中并不限定每對圖像對進行拼接操作的處理形式,可以是同時對每一幀圖像對進行拼接,也可以是按照幀順序依次對各幀圖像對進行拼接操作。用戶可以根據(jù)實際情況進行選擇。其中,每一幀圖像對對應(yīng)的拼接操作的過程如下:
其中,拼接操作的過程包括:
步驟1、確定圖像對中第一圖像對應(yīng)的角點;
具體的,為了得到后續(xù)的轉(zhuǎn)換矩陣,需要確定圖像角點。本實施例首先確定第一圖像的角點,然后通過匹配確定各角點對應(yīng)的匹配點。
本實施例并不限定每一幀圖像對中第一圖像角點確定的方式,只要可以確定每一個第一圖像的角點即可。例如每一幀圖像對中的第一圖像都利用角點檢測的方法計算對應(yīng)的角點,或者是在當(dāng)前幀之前幀對應(yīng)的角點都比較準確的話可以沿用之前幀的第一圖像的角點作為當(dāng)前幀的圖像對中第一圖像對應(yīng)的角點。優(yōu)選的,為了節(jié)省計算資源,加快拼接速度;確定圖像對中第一圖像對應(yīng)的角點可以包括:
判斷圖像對中的第一圖像是否為第一視頻的第一幀圖像;
若是第一幀圖像,則對第一幀圖像進行角點檢測,確定第一幀圖像對應(yīng)的角點;
若不是第一幀圖像,則判斷圖像對是否為間隔預(yù)定幀數(shù)量的圖像對;
若不是間隔預(yù)定幀數(shù)量的圖像對,則將前一幀圖像對中的第一圖像的角點作為圖像對中的第一圖像對應(yīng)的角點;
若是間隔預(yù)定幀數(shù)量的圖像對,則對圖像對中的第一圖像的選定重疊區(qū)進行角點檢測得到陰影角點,并判斷陰影角點的數(shù)量與經(jīng)緯圖像重疊區(qū)中的角點之差是否大于閾值;若是,則對圖像對中的第一圖像進行角點檢測,確定圖像對中的第一圖像對應(yīng)的角點;若不是,則將前一幀圖像對中的第一圖像的角點作為圖像對中的第一圖像對應(yīng)的角點。
具體的,通過上述角點確定的方法可以僅對第一幀視頻的圖像對中的第一圖像(即第一幀圖像)進行角點檢測。之后可以僅對間隔預(yù)定幀數(shù)量的圖像對中的第一圖像進行角點校正過程。例如每隔10幀執(zhí)行一次角點校正。這樣的處理過程可以在保證角點準確性的情況下,提高計算效率。
進一步本實施例并不限定選定重疊區(qū)的大小,即可以在全部的重疊區(qū)計算陰影角點,也可以是在重疊區(qū)中的一部分計算陰影角點。但是后者的效率更高,因為檢索的區(qū)域較小。本實施例并不限定選定重疊區(qū)的選擇方式。
可選的,角點檢測的過程可以是:利用公式
其中,i為第一視頻,ix、iy為通過水平和豎直方向差分算子對圖像濾波得到的梯度圖像,w(x,y)取二維高斯函數(shù),det為求矩陣行列式,trace為矩陣的跡,k為一個常數(shù)(其取值可以是0.04-0.06)。當(dāng)r值很大時,該處為角點;當(dāng)r<0時,該處為邊,當(dāng)|r|很小時,該處為平坦區(qū)域。在整個圖像中被判為角點的位置可能有很多,可以選擇r值最大的n個(例如n=30)來進行進一步的篩選。即本實施例并不對前預(yù)定數(shù)量的數(shù)值進行限定。
每隔一定幀數(shù)(例如每10幀),對重疊區(qū)再進行角點檢測。重疊區(qū)的說明參看圖7。由于相機的輕微震動和景物遠近變化,變換矩陣會發(fā)生變化。這時,需要重新指定匹配點并重新計算變換矩陣??梢酝ㄟ^檢查圖像重疊區(qū)的拼接情況得知。如圖7所示,對于2×180°拍攝,重疊區(qū)域為陰影部分所示,其中在經(jīng)緯圖像中為中間的一個狹窄的矩形。圖像如果拼接得不好,在此矩形中必定有很多線條的錯位,在錯位的地方會形成角點。進行角點檢測可以把它們檢測出來。因此,對于某一幀圖像,可以檢查魚眼圖像(如魚眼第一圖像)中陰影區(qū)域的角點數(shù)目和經(jīng)緯圖像陰影區(qū)域中的角點數(shù)目是否大致相等。如果大致相等,則拼接效果是不錯的;如果經(jīng)緯圖像陰影區(qū)域中的數(shù)目遠多于魚眼圖像中的,則說明拼接效果已下降,需要重新取5組匹配點重新計算變換矩陣。
不需每幀圖像都進行如此檢查,只需每隔一段時間(例如每10幀)檢查一次即可。檢查的圖像區(qū)域也不需取全部的重疊區(qū)域,在魚眼圖像中,只需按轉(zhuǎn)向半徑外擴n(例如n=5)個像素,向內(nèi)縮n個像素,取之間包括的圓環(huán)區(qū)域即可;在經(jīng)緯圖像中,只需沿中線(圖中虛線)向左移n個像素,向右移n個像素,取之間包括的矩形區(qū)域即可。事實上,錯位產(chǎn)生的角點都在中線處。檢查檢測到的魚眼圖像重疊區(qū)中的角點數(shù)和經(jīng)緯圖像重疊區(qū)中的角點數(shù)。如果兩者數(shù)目差異大,則重新進行角點檢測。
步驟2、在圖像對中第二圖像中與各角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,并利用hsv算法對搜索結(jié)果進行檢驗確定各角點對應(yīng)的匹配點;
具體的,拍攝全景圖時,若相機的節(jié)點能確保不變并拍攝角度準確知道,第一圖像中的任何一點,在第二圖像中其實是可以計算出來的。例如當(dāng)拍攝方式是2×180°時,在第一圖像極坐標(biāo)為(r′p,θ)的點,在第二圖像中匹配點位置應(yīng)為(2r0-r′p,π-θ'),式中r0為轉(zhuǎn)向半徑。然而,由于相機節(jié)點不能嚴格確保不變、拍攝角度的誤差等原因,匹配點的位置會有所偏移。并且由于拍全景視頻過程中的震動和景物遠近變化劇烈等原因,匹配點還需進行重新調(diào)整。因此在圖像對中第二圖像中與各角點對應(yīng)的經(jīng)驗區(qū)域進行搜索。本實施例并不限定具體的經(jīng)驗區(qū)域(也可以稱為經(jīng)驗位置)的確定形式,也不限定具體的經(jīng)驗區(qū)域的大小。例如可使用這樣的方法:把匹配點的理論位置作為初始經(jīng)驗位置為中心,指定一個范圍,例如l×l的矩形范圍內(nèi)進行搜索(l值可取0.1-0.3倍r0),找到真正匹配點位置。拼接視頻新的一幀時,當(dāng)發(fā)現(xiàn)匹配點位置已經(jīng)偏移時,以原匹配位置為經(jīng)驗位置,以其為中心,再在l×l的矩形范圍內(nèi)重新搜索。以經(jīng)驗位置決定搜索范圍的方法不需在整幅圖像進行搜索,使搜索范圍大大縮小,大大節(jié)約了搜索時間。即可選的,確定角點檢測選定的角點在圖像對中第二圖像中對應(yīng)的理論位置,并以各理論位置為中心向外擴展預(yù)定范圍作為經(jīng)驗區(qū)域搜索對應(yīng)的匹配點。
對第二圖像基于hsv查找確定匹配點的過程可以是:對兩幅圖像,給定一個小窗口,第一圖像的窗口的中心指定為正在檢查的角點,第二圖像的窗口中心對l×l的矩形范圍內(nèi)的全部像素遍歷嘗試,計算每一個位置與第一圖像窗口的加權(quán)顏色差總和。
對于顏色比較和匹配,使用hsv顏色模型比rgb顏色模型更為合適。因此,需把第一圖像和第二圖像轉(zhuǎn)化為hsv顏色表示。窗口的加權(quán)顏色差總和用下式計算:
即分別利用公式
選取最小的加權(quán)顏色差總和ex,y對應(yīng)的像素點作為角點的匹配點;
其中,ex,y為第二圖像在(x,y)對于第一圖像中角點的顏色差總和,h′s+u,t+v和s′s+u,t+v為第一圖像中在(s+u,t+v)處的色調(diào)和飽和度,h″x+u,y+v和s″x+u,y+v為第二圖像中在(s+u,t+v)處的色調(diào)和飽和度,kh和ks為兩個系數(shù),可設(shè)置色調(diào)和飽和度對計算結(jié)果的重要度??扇h=0.8而ks=0.2,即令色調(diào)比飽和度重要4倍。w(u,v)為窗口像素位置的權(quán)重函數(shù),可取其為二維高斯函數(shù),u,v分別為窗口內(nèi)像素的位置,l為正方形窗口的尺寸。
步驟3、根據(jù)選定的角點以及對應(yīng)的匹配點計算圖像對的轉(zhuǎn)換矩陣;
具體的,本實施例并不限定選定的角點以及對應(yīng)的匹配點的數(shù)量,但是為了提高計算效率,由于轉(zhuǎn)換矩陣中有15個未知數(shù),因此需要至少5對匹配點才能夠計算。優(yōu)選的,根據(jù)選定的角點以及對應(yīng)的匹配點計算圖像對的轉(zhuǎn)換矩陣可以包括:
從角點檢測選定的角點中按照距離閾值選擇5個角點作為選定的角點;
利用公式
其中,a11、a12…a43共為15個未知數(shù),φl、θl、φr、θr分別是第一圖像和第二圖像的拍攝坐標(biāo)系轉(zhuǎn)換成球坐標(biāo)系后的經(jīng)緯度。
具體的,由于真正需要的點只需5個。這5對匹配點除了希望是顏色變化分明的角點之外,還希望它們之間的距離比較大,否則后面解出的矩陣會有些誤差。因此需要從上面的n個角點根據(jù)距離中選出5個。利用距離閾值進行選擇。距離閾值rt具體為:rt=ktr0;其中,r0為轉(zhuǎn)向半徑,kt為一個系數(shù),可取0.3-0.6。遍歷n個角點,檢查相互間距離,直到找到5個相互距離大于rt的角點。
其中,轉(zhuǎn)向半徑的定義為:在第一圖像的坐標(biāo)系中,照相機視野角為180°時對應(yīng)的半徑。可以證明,當(dāng)兩幅圖像是相機旋轉(zhuǎn)180°拍攝而得時,轉(zhuǎn)向半徑等于兩個魚眼圖像image1和image2(請參考圖2)的對應(yīng)匹配點到其原點的距離的平均值,即:
其中,r'p為圖像1中圖像中心到像素點p’的距離,x'p、y'p是像素點p’相對于圖像中心的直角坐標(biāo)。r"p為圖像2中圖像中心到像素點p”的距離,x"、y"是像素點p”相對于圖像中心的直角坐標(biāo)。
由于方程
全景圖的形成其實可以這樣想象:一個人坐在一個巨大的玻璃球中看周圍場景,人的一只眼睛正好在球心,景物射到該眼睛的光線必經(jīng)玻璃球面某點并想象在該點處成像。最終全部景物都在玻璃球面成像,這個帶像的玻璃球面就是該場景的全景圖。魚眼照片是一種等角度平面圖像,全景圖像是一種經(jīng)緯度圖像。要使魚眼圖像變成全景圖像,可以通過坐標(biāo)系變換的方法實現(xiàn)。
圖3為兩張魚眼圖像的情形。其中箭頭shootl代表相機拍攝第一視頻的拍攝方向,箭頭shootr代表相機拍攝第二視頻的拍攝方向。其中涉及到五個坐標(biāo)系:(1)世界坐標(biāo)系xyz,這是三維世界的坐標(biāo)系,全景圖像的經(jīng)緯度也將從這個坐標(biāo)系換算出來。(2)左邊半球部分的拍攝坐標(biāo)系oxlylzl。第一圖像的拍攝方向shootl與其zl軸方向相反。(3)左邊照片圖像(image1)的圖像坐標(biāo)系o’x’y’。此為平面坐標(biāo)系。觀察圖像(image1)時用此坐標(biāo)系。(4)右邊半球部分的拍攝坐標(biāo)系oxryrzr。其拍攝方向shootr與其zr軸方向相反。(5)右邊照片圖像(image2)的圖像坐標(biāo)系o”x”y”。此為平面坐標(biāo)系。觀察圖像(image2)時用此坐標(biāo)系。除了這五個坐標(biāo)系外,還有一個由全局坐標(biāo)球面按經(jīng)緯度展開的展開圖像坐標(biāo)系。除了這五個坐標(biāo)系外,還有一個由全局坐標(biāo)球面按經(jīng)緯度展開的展開圖像坐標(biāo)系。
右邊半球的部分雖然大部分沒在第一圖像中成像,但在標(biāo)系oxlylzl中是可以表示出來的。坐標(biāo)系oxryrzr旋轉(zhuǎn)可以得到坐標(biāo)系oxlylzl。右邊半球上的每一點在oxryrzr中的坐標(biāo)可在第二圖像中讀出。同一點可以乘以某個矩陣得到就可以變換到oxlylzl中,記為:
另一方面,考慮球坐標(biāo)系和直角坐標(biāo)系的轉(zhuǎn)換,如圖4。圖3、圖4中的球半徑可以隨意,不影響成像,可以假設(shè)為1。因此經(jīng)緯度
和反過來的關(guān)系:
由
步驟4、利用轉(zhuǎn)換矩陣確定圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值;
具體的,全景圖像是一個寬高比為2:1的圖像,其中寬度方向代表經(jīng)度,高度方向代表緯度。因此,要生成的全景視頻一幀圖像,需對經(jīng)度0-360°、緯度-90°-90°進行遍歷處理。因此遍歷經(jīng)度θ和緯度
最終拼接好的全景圖像其實是全局坐標(biāo)系中的球面按經(jīng)緯度展開得到的圖像。由展開圖像中的像素坐標(biāo)可以換算出經(jīng)緯度,由經(jīng)緯度又可換算出全局坐標(biāo)。例如參考圖5,第i行第j列像素的經(jīng)緯度如下計算:
然后用經(jīng)緯度由公式
對于該像素,查找其在左拍攝坐標(biāo)系中的對應(yīng)位置。為此需先考慮拍攝坐標(biāo)系和全局坐標(biāo)系的關(guān)系:考慮圖3中坐標(biāo)系oxlylzl到oxyz的變換。求解出的矩陣a是由坐標(biāo)系oxryrzr和變換到oxlylzl坐標(biāo)系的矩陣。而全局坐標(biāo)系oxyz跟這兩個坐標(biāo)系又不同(見圖2)。而oxlylzl需經(jīng)以下變換可以變換成oxyz:繞yl軸旋轉(zhuǎn)180°,再繞新的xl軸旋轉(zhuǎn)90°。即:
上式進行變換,可得:
由上式就可算得(x,y,z)在左拍攝坐標(biāo)系中的位置。同時對應(yīng)右拍攝坐標(biāo)系中:
-1是矩陣求逆運算。拍攝坐標(biāo)系與對應(yīng)照片坐標(biāo)系經(jīng)緯度相同,因此可再根據(jù)
魚眼第一圖像的(x’,y’)和魚眼第二圖像的(x”,y”)至少有一處是有顏色的。對于展開圖像中考察的點,有時候只在第一圖像中有成像,有時候只在第二圖像中有成像,而有時候在兩個圖像中都有成像。利用顏色值確定公式
其中,k1+k2=1。可以這樣取值:參見圖6,p1和p2是匹配點對,p2e是p2沿半徑方向在魚眼邊界處的交點,p2e1是p2e在魚眼第一圖像的對應(yīng)點(由p2e乘以變換矩陣算得)。p1e類似p2e,是p1沿半徑方向在魚眼邊界處的交點。k1、k2可以根據(jù)p1與p1e和p2e1的距離關(guān)系來計算:
步驟5、將全部顏色值填充到拼接視頻中的對應(yīng)位置。
至此,一個全景視頻就生成了。對一個生成的全景視頻案例使用普通的視頻播放器播放的截圖例子見圖8。使用專用的全景視頻播放器可取得360度vr的效果。
下面通過具體例子說明上述方案,對場景使用攝像機和魚眼鏡頭拍攝好兩個視野大于180度的視頻素材。使用以下步驟處理并生成一個新的視頻。請參考圖9。
1、啟動開始對兩個視頻的每幀進行以下操作。
2、如果是第一幀,或者由11跳轉(zhuǎn)至本步,進行從3往下操作,否則直接從9往下操作。
3、對圖像1(即第一圖像)進行角點檢測。
4、對圖像2(即第二圖像)基于經(jīng)驗范圍進行搜索。
5、對圖像2基于hsv查找確定匹配點。
6、從上述n對匹配點中選定5對。
7、若為第一幀,則計算轉(zhuǎn)向半徑。若非第一幀,則跳過此步。第一幀計算出來的轉(zhuǎn)向半徑為后續(xù)幀計算所用。
8、解方程組計算轉(zhuǎn)換矩陣。
9、全景圖像是一個寬高比為2:1的圖像,其中寬度方向代表經(jīng)度,高度方向代表緯度。因此,要生成的全景視頻一幀圖像,需對經(jīng)度0-360°、緯度-90°-90°進行遍歷處理。因此遍歷經(jīng)度θ和緯度
10、每隔一定幀數(shù)(例如每10幀),對重疊區(qū)再進行角點檢測。
11、檢查由10檢測到的魚眼圖像重疊區(qū)中的角點數(shù)和經(jīng)緯圖像重疊區(qū)中的角點數(shù)。如果兩者數(shù)目差異大,則返回2,否則,跳轉(zhuǎn)至1,直至所有幀全部處理完成。
基于上述技術(shù)方案,本發(fā)明實施例提供的球形全景視頻的拼接方法,適用于2×180°拍攝方式的球形全景視頻自動拼接方法;對兩個使用魚眼鏡頭拍攝好的視頻,先對第一視頻中的圖像進行角點檢測,然后在第二視頻的對應(yīng)幀圖像中對應(yīng)的經(jīng)驗位置進行搜索比較,再由hsv檢驗比較的方法得出各個在視頻2中的匹配點,利用5對匹配點,解方程計算出視頻圖像的轉(zhuǎn)換矩陣。利用轉(zhuǎn)換矩陣復(fù)制各對應(yīng)像素的顏色值到生成視頻中,并按照系數(shù)進行重疊區(qū)域的像素融合。對視頻的每幀進行操作并進行適當(dāng)?shù)膬?yōu)化處理,最終生成拼接視頻。對于全景視頻的拼接,本實施例提供的方法拍攝數(shù)量少,拼接速度快,拼接過程啟動后無需人工調(diào)整和干預(yù)。生成視頻拼接效果好,中間接縫位置拼接準確,過渡自然。從整個視頻播放看,沒有圖像抖動和錯位。
下面對本發(fā)明實施例提供的球形全景視頻的拼接系統(tǒng)進行介紹,下文描述的球形全景視頻的拼接系統(tǒng)與上文描述的球形全景視頻的拼接方法可相互對應(yīng)參照。
請參考圖10,圖10為本發(fā)明實施例所提供的球形全景視頻的拼接系統(tǒng)的結(jié)構(gòu)框圖,該系統(tǒng)可以包括:
視頻獲取模塊100,用于獲取魚眼鏡頭拍攝的視頻對;其中,視頻對包括具有n幀第一圖像的第一視頻和具有n幀第二圖像的第二視頻;且n幀第一圖像與n幀第二圖像具有一一對應(yīng)關(guān)系;
拼接模塊200,用于分別將具有一一對應(yīng)關(guān)系的第一圖像與第二圖像作為圖像對執(zhí)行拼接操作,形成拼接視頻;
拼接操作模塊300,用于確定圖像對中第一圖像對應(yīng)的角點;在圖像對中第二圖像中與各角點對應(yīng)的經(jīng)驗區(qū)域進行搜索,并利用hsv算法對搜索結(jié)果進行檢驗確定各角點對應(yīng)的匹配點;根據(jù)選定的角點以及對應(yīng)的匹配點計算圖像對的轉(zhuǎn)換矩陣;利用轉(zhuǎn)換矩陣確定圖像對中未重疊區(qū)域中各像素的顏色值,并按照權(quán)值系數(shù)進行重疊區(qū)域的像素融合確定重疊區(qū)域中各像素的顏色值;將全部顏色值填充到拼接視頻中的對應(yīng)位置。
說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的一種球形全景視頻的拼接方法及系統(tǒng)進行了詳細介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權(quán)利要求的保護范圍內(nèi)。