本發(fā)明涉及圖像處理領(lǐng)域,尤其涉及一種獲取全景圖像的方法及裝置。
背景技術(shù):
魚眼鏡頭是模擬水下魚類仰視水面效果的一種超廣角鏡頭,其典型視場(chǎng)角為180°,還有的超過180°、大于220°,甚至達(dá)到270°。魚眼鏡頭的好處很多:視角大,可容納場(chǎng)景多,且可以適應(yīng)狹小空間拍攝,因此在虛實(shí)景技術(shù)、機(jī)器人導(dǎo)航、視覺監(jiān)控等許多計(jì)算機(jī)視覺領(lǐng)域中被廣泛應(yīng)用。
由于魚眼鏡頭拍攝的圖像視角較大,因此拼接成360°的全景圖像只需要魚眼鏡頭拍攝2-3張圖像即可,因此,在全景內(nèi)容制作,例如全景虛擬現(xiàn)實(shí)VR(Virtual Reality)視頻制作中,魚眼鏡頭得到了越來越多的使用。但是,采用魚眼鏡頭拍攝的圖像由于視角超廣,因此其桶形彎曲畸變非常大,畫面周邊的成像呈現(xiàn)嚴(yán)重變形,直線彎曲,只有鏡頭中心部分的內(nèi)容可以保持原來的狀態(tài)。所以這類魚眼圖像雖能夠包含較多的場(chǎng)景信息,但卻不能顯示重要的細(xì)節(jié)問題,因此使用這些畸變魚眼圖像進(jìn)行全景圖像拼接時(shí)需要進(jìn)行畸變校正處理。
目前在利用魚眼鏡頭圖像進(jìn)行全景圖像拼接時(shí),圖片處理軟件一般都是在平面坐標(biāo)系下根據(jù)待拼接圖像估計(jì)魚眼鏡頭參數(shù),然后建立模型進(jìn)行矯正拼接獲取平面的全景圖像,最后把拼接后的平面的全景圖像進(jìn)行球面映射即將平面的全景圖像貼在球上進(jìn)行全景顯示。由于相機(jī)鏡頭參數(shù)估計(jì)的不準(zhǔn)確性,導(dǎo)致平面坐標(biāo)系下存在的畸形很難被矯正,從而后面拼接融合后的圖像有接縫拼不上的情況,拼接精度較低,拼接的圖像效果會(huì)受到很大影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種獲取全景圖像的方法及裝置,用以提高魚眼鏡頭全景圖像的拼接精度。
本發(fā)明方法包括一種獲取全景圖像的方法,該方法包括:
利用雙魚眼鏡頭拍攝得到兩幅魚眼圖像,其中,所述雙魚眼鏡頭為背對(duì)設(shè)置的兩個(gè)鏡頭,且兩個(gè)鏡頭的視場(chǎng)角之和大于等于360度;
將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中;
從映射后的每個(gè)魚眼圖像中提取特征點(diǎn),并將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì);
利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣;
利用所述變換矩陣將映射后的兩幅魚眼圖像轉(zhuǎn)換到同一個(gè)球面模型中;
將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像。
進(jìn)一步地,所述雙魚眼鏡頭包括第一魚眼鏡頭和第二魚眼鏡頭;
所述兩幅魚眼圖像包括所述第一魚眼鏡頭拍攝得到的第一魚眼圖像,所述第二魚眼鏡頭拍攝得到的第二魚眼圖像;
將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中之前,還包括:
利用種子生長法對(duì)所述兩幅魚眼圖像進(jìn)行掃描,確定所述第一魚眼圖像和所述第二魚眼圖像的有效圓形區(qū)域;
所述將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中,包括:
根據(jù)平面坐標(biāo)系與球面坐標(biāo)系之間的映射關(guān)系,將所述第一魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第一球面模型中,并所述第二魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第二球面模型中。
進(jìn)一步地,所述從映射后的每個(gè)魚眼圖像中提取特征點(diǎn),包括:
構(gòu)建Hessian矩陣,基于Hessian矩陣行列式的判別式det(H)取值的符號(hào)確定出H(f(x,y))處的極值點(diǎn)和極值點(diǎn)的坐標(biāo),其中,(x,y)為魚眼圖像的像素點(diǎn)的坐標(biāo);
所述將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì),包括:
利用最近鄰匹配法判定當(dāng)一對(duì)極值點(diǎn)的歐氏距離小于設(shè)定閾值時(shí),將該對(duì)極值點(diǎn)作為一組特征點(diǎn)匹配對(duì)。
進(jìn)一步地,所述利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣,包括:
根據(jù)確定出來的多個(gè)特征點(diǎn)匹配對(duì)的坐標(biāo),按照公式一進(jìn)行求解,得到所述兩幅魚眼圖像之間的變換矩陣;
所述公式一為:
其中,(x,y,z)、(x’,y’,z’)為每組特征點(diǎn)匹配對(duì)的球面坐標(biāo),為待求解的變換矩陣。
進(jìn)一步地,所述將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像,包括:
用K-D樹搜索同一個(gè)球面模型中的兩幅魚眼圖像的最近鄰和次近鄰距離,并將搜素得到的距離作為權(quán)重,采用加權(quán)平均的方法對(duì)所述兩幅圖像的特征點(diǎn)進(jìn)行配準(zhǔn),從而實(shí)現(xiàn)對(duì)兩幅魚眼圖像進(jìn)行拼接,得到拼接后的球面全景圖像。
進(jìn)一步地,在所述獲取拼接后的球面全景圖像后,所述方法還包括:根據(jù)獲取的球面全景圖像,進(jìn)行虛擬現(xiàn)實(shí)VR顯示。
基于同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例進(jìn)一步地提供一種獲取全景圖像的裝置,該裝置包括:
拍攝單元,用于利用雙魚眼鏡頭拍攝得到兩幅魚眼圖像,其中,所述雙魚眼鏡頭為背對(duì)設(shè)置的兩個(gè)鏡頭,且兩個(gè)鏡頭的視場(chǎng)角之和大于等于360度;
映射單元,用于將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中
提取單元,用于從映射后的每個(gè)魚眼圖像中提取特征點(diǎn);
匹配單元,用于并將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì);
運(yùn)算單元,用于利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣;
轉(zhuǎn)換單元,用于利用所述變換矩陣將映射后的兩幅魚眼圖像轉(zhuǎn)換到同一個(gè)球面模型中;
拼接單元,用于將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像。
進(jìn)一步地,所述雙魚眼鏡頭包括第一魚眼鏡頭和第二魚眼鏡頭;
所述兩幅魚眼圖像包括所述第一魚眼鏡頭拍攝得到的第一魚眼圖像,所述第二魚眼鏡頭拍攝得到的第二魚眼圖像;
所述裝置還包括:
掃描單元,用于利用種子生長法對(duì)所述兩幅魚眼圖像進(jìn)行掃描,確定所述第一魚眼圖像和所述第二魚眼圖像的有效圓形區(qū)域;
所述映射單元具體用于:根據(jù)平面坐標(biāo)系與球面坐標(biāo)系之間的映射關(guān)系,將所述第一魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第一球面模型中,并所述第二魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第二球面模型中。
進(jìn)一步地,所述提取單元具體用于:
構(gòu)建Hessian矩陣,基于Hessian矩陣行列式的判別式det(H)取值的符號(hào)確定出H(f(x,y))處的極值點(diǎn)和極值點(diǎn)的坐標(biāo),其中,(x,y)為魚眼圖像的像素點(diǎn)的坐標(biāo);
所述匹配單元具體用于:利用最近鄰匹配法判定當(dāng)一對(duì)極值點(diǎn)的歐氏距離小于設(shè)定閾值時(shí),將該對(duì)極值點(diǎn)作為一組特征點(diǎn)匹配對(duì)。
進(jìn)一步地,所述運(yùn)算單元具體用于:
根據(jù)確定出來的多個(gè)特征點(diǎn)匹配對(duì)的坐標(biāo),按照公式一進(jìn)行求解,得到所述兩幅魚眼圖像之間的變換矩陣;
所述公式一為:
其中,(x,y,z)、(x’,y’,z’)為每組特征點(diǎn)匹配對(duì)的球面坐標(biāo),為待求解的變換矩陣。
進(jìn)一步地,所述拼接單元具體用于:用K-D樹搜索同一個(gè)球面模型中的兩幅魚眼圖像的最近鄰和次近鄰距離,并將搜素得到的距離作為權(quán)重,采用加權(quán)平均的方法對(duì)所述兩幅圖像的特征點(diǎn)進(jìn)行配準(zhǔn),從而實(shí)現(xiàn)對(duì)兩幅魚眼圖像進(jìn)行拼接,得到拼接后的球面全景圖像。
進(jìn)一步地,顯示單元,用于根據(jù)獲取的球面全景圖像,進(jìn)行虛擬現(xiàn)實(shí)VR顯示。
一方面,本發(fā)明實(shí)施例提供一種電子設(shè)備,包括:至少一個(gè)處理器;以及,
與所述至少一個(gè)處理器通信連接的存儲(chǔ)器;其中,
所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器能夠執(zhí)行如下方法:
針對(duì)利用雙魚眼鏡頭拍攝得到兩幅魚眼圖像,其中,所述雙魚眼鏡頭為背對(duì)設(shè)置的兩個(gè)鏡頭,且兩個(gè)鏡頭的視場(chǎng)角之和大于等于360度;
將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中;
從映射后的每個(gè)魚眼圖像中提取特征點(diǎn),并將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì);
利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣;
利用所述變換矩陣將映射后的兩幅魚眼圖像轉(zhuǎn)換到同一個(gè)球面模型中;
將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像。
另一方面,本發(fā)明實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用于使所述計(jì)算機(jī)執(zhí)行上述任一項(xiàng)所述的獲取全景圖像的方法。
再一方面,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),使所述計(jì)算機(jī)執(zhí)行上述任一項(xiàng)所述的獲取全景圖像的方法。
本發(fā)明實(shí)施例提供的獲取全景圖像的方法及裝置、電子設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),通過將魚眼圖像從平面坐標(biāo)系直接映射到球面模型,再進(jìn)行拼接,能夠有效校正魚眼圖像產(chǎn)生的徑向畸變,使魚眼圖像映射到自身所在單位球面上的映射的相對(duì)位置得到校正,邊緣區(qū)域的變形得到有效的校正。另外,通過在單位球面上的配準(zhǔn),使得球面上的絕對(duì)位置得到有效的配準(zhǔn),因此圖像重合區(qū)域中匹配的圖像點(diǎn)間的拼接誤差大幅度減小,因此使得全景圖像中由匹配點(diǎn)間的拼接誤差引起的重影、錯(cuò)位、模糊等問題也相應(yīng)得到了解決。本發(fā)明實(shí)施例提供的圖像拼接方法得到的全景圖像中完全沒有空白圖像區(qū)域,重疊區(qū)域圖像誤差小,因此圖像拼接精度得到大幅提高。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種獲取全景圖像的方法流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種魚眼圖像在平面上的直角坐標(biāo)系示意圖;
圖3為本發(fā)明實(shí)施例提供的一種平面坐標(biāo)系與球面坐標(biāo)系的映射示意圖;
圖4為本發(fā)明實(shí)施例提供的圖像融合區(qū)域示意圖;
圖5為本發(fā)明實(shí)施例提供的一種獲取全景圖像的裝置結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例提供的一種電子設(shè)備結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
魚眼鏡頭是一種焦距為16mm或者更短,并且視角接近或等于180°的鏡頭,雙魚眼鏡頭具有兩個(gè)鏡頭,且兩個(gè)鏡頭前后對(duì)稱,通常一次可以拍攝得到兩幅魚眼圖像,理論上只要兩幅魚眼圖像就可以通過拼接獲得雙魚眼鏡頭周圍的景物信息。但同時(shí)由于魚眼圖像會(huì)在邊緣產(chǎn)生扭曲,直接將兩幅魚眼圖像進(jìn)行拼接可能會(huì)產(chǎn)生較大誤差。因此,本發(fā)明實(shí)施例提供一種獲取全景圖像的方法,可以實(shí)現(xiàn)將雙魚眼鏡頭的兩幅魚眼圖像處理后進(jìn)行拼接,使得得到的球面全景圖像精度較高。
參見圖1所示,本發(fā)明實(shí)施例提供一種獲取全景圖像的方法流程示意圖,具體地實(shí)現(xiàn)方法包括:
步驟S101,利用雙魚眼鏡頭拍攝得到兩幅魚眼圖像,其中,所述雙魚眼鏡頭為背對(duì)設(shè)置的兩個(gè)鏡頭,且兩個(gè)鏡頭的視場(chǎng)角之和大于等于360度。
步驟S102,將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中。
步驟S103,從映射后的每個(gè)魚眼圖像中提取特征點(diǎn),并將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì)。
步驟S104,利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣。
步驟S105,利用所述變換矩陣將映射后的兩幅魚眼圖像轉(zhuǎn)換到同一個(gè)球面模型中。
步驟S106,將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像。
其中,所述雙魚眼鏡頭包括第一魚眼鏡頭和第二魚眼鏡頭;所述兩幅魚眼圖像包括所述第一魚眼鏡頭拍攝得到的第一魚眼圖像,所述第二魚眼鏡頭拍攝得到的第二魚眼圖像,在執(zhí)行步驟S101之前,還需要利用種子生長法對(duì)所述兩幅魚眼圖像進(jìn)行一次掃描,得到每幅魚眼圖像的有效圓形區(qū)域。具體地,根據(jù)魚眼圖像的特征,使用種子生長法,求得魚眼有效圓形區(qū)域,為映射到球面做準(zhǔn)備。
其中,種子生長法是指通過指定一個(gè)原始點(diǎn)即所謂的種子,圓形區(qū)域即為一個(gè)像素,然后通過區(qū)域生長的方法,把跟種子具有一定閾值范圍內(nèi)的像素歸入圓形區(qū)域,這樣不斷的擴(kuò)大圓形區(qū)域,完成圓形區(qū)域的尋找。傳統(tǒng)的區(qū)域生長法都是使用兩次掃描完成,本算法是一次掃描全圖完成,有效的提高了運(yùn)算速度。算法核心代碼如下:
由于每一款雙魚眼鏡頭的有效魚眼區(qū)域是固定的,因此通過一次掃描查找,將查到到坐標(biāo)記錄下來,后續(xù)的就不需要再進(jìn)行種子生長。
按照上述算法得到兩幅魚眼圖像的有效區(qū)域之后,就可以將魚眼圖像從平面坐標(biāo)系映射到球面坐標(biāo)系,主要是利用了平面坐標(biāo)系與球面坐標(biāo)系的映射關(guān)系,其中,雙魚眼鏡頭拍攝得到的魚眼圖像一般為平面圖像,魚眼圖像對(duì)應(yīng)的直角坐標(biāo)系如圖2所示,其中,圖2中半徑R和魚眼圖像拍攝的最大角度α表示方式如下:
其中,平面坐標(biāo)系到球面坐標(biāo)系的映射方式如圖3所示,球面坐標(biāo)(x,y,z)與角度α和角度θ的關(guān)系公式3所示。
基于上述映射關(guān)系,把雙魚眼鏡頭拍攝得到的兩幅魚眼圖像分別從平面坐標(biāo)系映射到各自的球面模型中。具體地,根據(jù)平面坐標(biāo)系與球面坐標(biāo)系之間的映射關(guān)系,將雙魚眼鏡頭的第一魚眼鏡頭拍攝得到的第一魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第一球面模型中,并將雙魚眼鏡頭的的第二魚眼鏡頭拍攝得到的第二魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第二球面模型中。
當(dāng)完成上述映射之后,需要從映射后的每個(gè)魚眼圖像中提取特征點(diǎn),提取方法是首先構(gòu)建Hessian矩陣,基于Hessian矩陣行列式的判別式det(H)取值的符號(hào)確定出H(f(x,y))處的極值點(diǎn)和極值點(diǎn)的坐標(biāo),其中,(x,y)為魚眼圖像的像素點(diǎn)的坐標(biāo)。
一般來說,根據(jù)圖像特征點(diǎn)計(jì)算出的不同特性,可以將圖像特征點(diǎn)分為角點(diǎn),高曲率點(diǎn),線段末端,邊緣輪廓,閉合區(qū)域,重心等。這些類型的像素點(diǎn)能夠在圖像亮度,尺度,旋轉(zhuǎn)等因素的影響下,盡可能保持不變性。對(duì)于一幅圖像中的某個(gè)像素點(diǎn),能在不同條件下重復(fù)檢測(cè)出,說明這一特征點(diǎn)具有顯著性,獨(dú)特性好的優(yōu)點(diǎn),則在后續(xù)圖像配準(zhǔn)和拼接的過程中能提高圖像拼接的效率和拼接精確度。本發(fā)明實(shí)施例主要是利用判別式的值是Hessian矩陣的特征值,可以利用判定結(jié)果的符號(hào)將所有點(diǎn)分類,根據(jù)判別式det(H)的取值正負(fù),來判別該像素點(diǎn)是或不是極值點(diǎn),當(dāng)判別式的值為負(fù)時(shí),則證明該點(diǎn)是極值點(diǎn),一般極值點(diǎn)也是角點(diǎn),記錄該極值點(diǎn)的坐標(biāo)。
進(jìn)一步地,將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì),具體地,利用最近鄰匹配法判定當(dāng)一對(duì)極值點(diǎn)的歐氏距離小于設(shè)定閾值時(shí),將該對(duì)極值點(diǎn)作為一組特征點(diǎn)匹配對(duì)。
具體步驟為:對(duì)第一魚眼圖像的有效區(qū)域中的每個(gè)特征點(diǎn),以第二魚眼圖像的有效區(qū)域中的特征點(diǎn)集為搜索空間,以特征向量間的歐式距離為相似性度量,在搜索空間內(nèi)搜索與其距離最小的特征點(diǎn),作為其匹配點(diǎn),組成匹配對(duì)。得到兩幅圖像的特征點(diǎn)匹配對(duì)集φ={Xi,i=1,2,...,N},其中Xi為第i對(duì)特征點(diǎn)匹配對(duì),N為匹配對(duì)個(gè)數(shù)。
進(jìn)一步地,為了使基于特征點(diǎn)匹配對(duì)所進(jìn)行的圖像配準(zhǔn)更為準(zhǔn)確,需要對(duì)特征點(diǎn)匹配對(duì)進(jìn)行篩選,排除錯(cuò)誤的匹配對(duì),篩選算法的具體步驟包括:
步驟a,初始化選擇匹配對(duì)集S為空集,即S=φ;
步驟b,選取最小采樣集,從匹配對(duì)集φ中隨機(jī)選取K個(gè)最小采樣集{C1,C2,...,CK},其中每個(gè)最小采樣集包括4個(gè)特征點(diǎn)匹配對(duì),這是因?yàn)樵谟?jì)算變換矩陣時(shí)至少需要4個(gè)特征點(diǎn)匹配對(duì)。計(jì)算每個(gè)最小采樣集對(duì)應(yīng)的單應(yīng)矩陣,得到K個(gè)單應(yīng)矩陣集{T1,T2,…,TK},其中Tk表示第k個(gè)最小采樣集對(duì)應(yīng)的單應(yīng)矩陣,k=1,2,…,K。
本發(fā)明實(shí)施例中所采用的隨機(jī)選取最小采樣集的策略為:在匹配對(duì)集φ隨機(jī)選取一個(gè)特征點(diǎn)匹配對(duì)Xi作為最小采樣集中的第一個(gè)匹配對(duì),以匹配對(duì)Xi中一個(gè)特征點(diǎn)為中心、預(yù)設(shè)邊長的矩形范圍作為鄰域范圍,在同屬一幅圖像特征點(diǎn)落入該鄰域范圍內(nèi)的匹配對(duì)中隨機(jī)和選取3個(gè)特征點(diǎn)匹配對(duì),構(gòu)成一個(gè)最小采樣集。K的大小和鄰域范圍的邊長可以根據(jù)需要進(jìn)行設(shè)置,本發(fā)明實(shí)施例中K=500,邊長為50。
步驟c,計(jì)算殘差向量,即計(jì)算匹配對(duì)集φ中每個(gè)匹配對(duì)Xi與單應(yīng)矩陣集{T1,T2,…,TK}中每個(gè)單應(yīng)矩陣的殘差,每個(gè)匹配對(duì)Xi對(duì)應(yīng)的K個(gè)殘差組成一個(gè)殘差向量di=[di1di2...diK],其中dik表示匹配對(duì)Xi與單應(yīng)矩陣Hk的殘差。
步驟d,計(jì)算相似度:對(duì)于匹配對(duì)集φ中所有匹配對(duì)兩兩計(jì)算相似度,任意兩個(gè)匹配對(duì)Xi和Xj的相似度f(Xi,Xj)的計(jì)算公式為:
其中,其中,Xi屬于φ,Xj屬于φ,Xi不等于Xj,的定義為
其中,dik表示匹配對(duì)Xi與單應(yīng)矩陣Tk的殘差,djk為匹配對(duì)Xj與單應(yīng)矩陣Tk的殘差,ξ為預(yù)設(shè)的殘差閾值,可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,經(jīng)實(shí)驗(yàn)得到ξ較優(yōu)的取值范圍為3≤ξ≤8,本實(shí)施例中設(shè)置ξ=5。
步驟e,選擇匹配對(duì):計(jì)算匹配對(duì)集φ中的每個(gè)匹配對(duì)Xi與其他所有匹配對(duì)的相似度f(Xi,Xj)之和F(Xi)=Σjf(Xi,Xj),選擇F(Xi)最大的匹配對(duì)Xi′作為本次篩選的關(guān)鍵匹配對(duì),計(jì)算匹配對(duì)Xi′與其他匹配對(duì)相似度f(Xi′,Xj)的平均值篩選f(Xi′,Xj)>favg的匹配對(duì),與關(guān)鍵匹配對(duì)Xi′一起構(gòu)成匹配對(duì)集S′,將匹配對(duì)集S′加入選擇匹配對(duì)集S中,即令S=S+S′,并從匹配對(duì)集φ中刪除這些匹配對(duì),即令φ=φ-S′。
步驟f,判斷是否|S′|<τ|||φ|<τ,其中|S′|表示本次篩選匹配對(duì)集S′匹配對(duì)數(shù)量,|φ|表示匹配對(duì)集φ中匹配對(duì)數(shù)量,τ表示預(yù)設(shè)數(shù)量閾值。也就是說,判斷是否本次篩選的匹配對(duì)數(shù)量或本次篩選剩下的匹配對(duì)數(shù)量小于τ,當(dāng)任意一項(xiàng)小于τ,則結(jié)束篩選,否則返回步驟b。
進(jìn)一步地,當(dāng)求得特征點(diǎn)匹配對(duì)之后,根據(jù)確定出來的多個(gè)特征點(diǎn)匹配對(duì)的坐標(biāo)按照如下公式進(jìn)行求解,得到所述兩幅魚眼圖像的變換矩陣;
其中,(x,y,z)、(x’,y’,z’)和為每組特征點(diǎn)匹配對(duì)的球面坐標(biāo),為待求解的變換矩陣。
變換矩陣的主要目的就是根據(jù)配準(zhǔn)后的圖像根據(jù)匹配的特征點(diǎn)對(duì)的位置關(guān)系,計(jì)算圖像之間的變換矩陣,將兩幅圖像投影到一個(gè)成像上,也就是說,根據(jù)上述步驟c篩選得到的選擇匹配對(duì)集S中的匹配對(duì)來計(jì)算兩幅待拼接圖像的變換矩陣,利用變換矩陣將兩幅待拼接圖像變換至同一坐標(biāo)系。變換矩陣具有9個(gè)參數(shù),歸一化后,變換模型公式6,在求解變換矩陣時(shí),主要利用重復(fù)區(qū)域特征點(diǎn)匹配對(duì)。根據(jù)變換矩陣將兩幅圖像轉(zhuǎn)換到同一個(gè)圖像上,形成可以圖像拼接的條件。
進(jìn)一步地,用K-D樹搜索同一個(gè)球面模型中的兩幅魚眼圖像的最近鄰和次近鄰距離,并將搜素得到的距離作為權(quán)重,采用加權(quán)平均的方法對(duì)所述兩幅圖像的特征點(diǎn)進(jìn)行配準(zhǔn),從而實(shí)現(xiàn)對(duì)兩幅魚眼圖像進(jìn)行拼接,得到拼接后的球面全景圖像。
也就是對(duì)兩幅魚眼圖像進(jìn)行圖像融合,其中,基于graph-cut(圖像分割)的最優(yōu)縫合線算法的原理和具體過程可以參考文獻(xiàn)“Graphcut textures:image and video synthesis using graph cuts”。根據(jù)最優(yōu)縫合線L對(duì)變換到同一坐標(biāo)系下的兩幅待拼接圖像進(jìn)行融合。由于待拼接的兩幅圖像可能因?yàn)槠毓獠煌纫蛩赜幸欢ǖ念伾町悾瑸榱耸蛊唇雍髨D像顏色在縫合線處平滑過渡,本發(fā)明實(shí)施例采用加權(quán)平均法在最優(yōu)縫合線L周圍對(duì)待拼接的圖像像素值進(jìn)行融合。具體方法如下:
計(jì)算該像素點(diǎn)(x,y)與最優(yōu)縫合線L在融合方向上的距離D(x,y),如果D(x,y)≥d,則計(jì)算像素點(diǎn)(x,y)與中心點(diǎn)C1和C2在融合方向上的距離D1和D2,如果D1>D2,則令融合圖像中像素點(diǎn)(x,y)的像素值P(x,y)取其在圖像1中的像素值,否則令融合圖像中像素點(diǎn)(x,y)的像素值P(x,y)取其在圖像2中的像素值,如果D(x,y)<d,則計(jì)算像素點(diǎn)(x,y)與邊界L1和邊界L2在融合方向上的距離d1和d2,那么融合圖像中像素點(diǎn)(x,y)的像素值P(x,y)按照以下公式計(jì)算:
其中,P1(x,y)、P2(x,y)為像素點(diǎn)(x,y)在兩幅魚眼圖像的像素值。
可見,根據(jù)邊界L1和邊界L2可以將圖像重合區(qū)域分為3個(gè)區(qū)域,邊界L1和邊界L2之外的兩個(gè)區(qū)域內(nèi)的像素點(diǎn)不進(jìn)行融合,邊界L1和邊界L2里面的區(qū)域進(jìn)行加權(quán)融合。圖4是圖像融合區(qū)域示意圖。如圖4所示,沿水平方向融合時(shí),圖像重合區(qū)域從左至右分為三個(gè)區(qū)域,兩側(cè)區(qū)域(區(qū)域1和區(qū)域2)的像素點(diǎn)像素值分別來源于對(duì)應(yīng)的圖像,中間區(qū)域(區(qū)域3)的像素值采用加權(quán)平均;沿垂直方向融合時(shí),圖像重合區(qū)域從上至下分為三個(gè)區(qū)域,上下區(qū)域(區(qū)域1和區(qū)域2)的像素點(diǎn)像素值分別來源于對(duì)應(yīng)的圖像,中間區(qū)域(區(qū)域3)的像素值采用加權(quán)平均。經(jīng)過上述方法融合拼接之后的圖像,圖像重合區(qū)域中匹配的圖像點(diǎn)間的拼接誤差大幅度減小,因此使得全景圖像中由匹配點(diǎn)間的拼接誤差引起的重影、錯(cuò)位、模糊等問題也相應(yīng)得到了解決。
當(dāng)生成了球面全景圖像之后,就可以利用VR(Virtual Reality,虛擬現(xiàn)實(shí)設(shè)備)進(jìn)行顯示,因?yàn)閳D像是經(jīng)過本發(fā)明實(shí)施例提供的方法處理之后的全景圖像,這樣圖像的拼接的精確度高,所以在VR顯示時(shí)的圖像更加清晰,解決顯示時(shí)重影、錯(cuò)誤的問題。
基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供一種獲取全景圖像的裝置,該裝置可執(zhí)行上述方法實(shí)施例。本發(fā)明實(shí)施例提供的裝置如圖5所示,包括:拍攝單元401、映射單元402、提取單元403、匹配單元404、運(yùn)算單元405、轉(zhuǎn)換單元406、拼接單元407,其中:
拍攝單元401,用于利用雙魚眼鏡頭拍攝得到兩幅魚眼圖像,其中,所述雙魚眼鏡頭為背對(duì)設(shè)置的兩個(gè)鏡頭,且兩個(gè)鏡頭的視場(chǎng)角之和大于等于360度;
映射單元402,用于將所述兩幅魚眼圖像從平面坐標(biāo)系映射到各自的球面模型中;
提取單元403,用于從映射后的每個(gè)魚眼圖像中提取特征點(diǎn);
匹配單元404,用于并將提取到的特征點(diǎn)進(jìn)行匹配得到特征點(diǎn)匹配對(duì);
運(yùn)算單元405,用于利用所述特征點(diǎn)匹配對(duì)確定映射后的兩幅魚眼圖像之間的變換矩陣;
轉(zhuǎn)換單元406,用于利用所述變換矩陣將映射后的兩幅魚眼圖像轉(zhuǎn)換到同一個(gè)球面模型中;
拼接單元407,用于將同一個(gè)球面模型中的兩幅魚眼圖像進(jìn)行拼接,獲取拼接后的球面全景圖像。
其中,所述雙魚眼鏡頭包括第一魚眼鏡頭和第二魚眼鏡頭;
所述兩幅魚眼圖像包括所述第一魚眼鏡頭拍攝得到的第一魚眼圖像,所述第二魚眼鏡頭拍攝得到的第二魚眼圖像;
進(jìn)一步地,還包括:掃描單元408,用于利用種子生長法對(duì)所述兩幅魚眼圖像進(jìn)行一次掃描,得到每幅魚眼圖像的有效圓形區(qū)域。
進(jìn)一步地,所述映射單元402具體用于:用于利用種子生長法對(duì)所述兩幅魚眼圖像進(jìn)行掃描,確定所述第一魚眼圖像和所述第二魚眼圖像的有效圓形區(qū)域;
所述映射單元具體用于:根據(jù)平面坐標(biāo)系與球面坐標(biāo)系之間的映射關(guān)系,將所述第一魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第一球面模型中,并所述第二魚眼圖像的有效圓形區(qū)域從平面坐標(biāo)系映射到第二球面模型中。
進(jìn)一步地,所述提取單元403具體用于:構(gòu)建Hessian矩陣,基于Hessian矩陣行列式的判別式det(H)取值的符號(hào)確定出H(f(x,y))處的極值點(diǎn)和極值點(diǎn)的坐標(biāo),其中,(x,y)為魚眼圖像的像素點(diǎn)的坐標(biāo);
所述匹配單元404具體用于:利用最近鄰匹配法判定當(dāng)一對(duì)極值點(diǎn)的歐氏距離小于設(shè)定閾值時(shí),將該對(duì)極值點(diǎn)作為一組特征點(diǎn)匹配對(duì)。
進(jìn)一步地,所述運(yùn)算單元405具體用于:根據(jù)確定出來的多個(gè)特征點(diǎn)匹配對(duì)的坐標(biāo),按照公式一進(jìn)行求解,得到所述兩幅魚眼圖像之間的變換矩陣,公式一如上文所述,不再贅述。
進(jìn)一步地,所述拼接單元407具體用于:用K-D樹搜索同一個(gè)球面模型中的兩幅魚眼圖像的最近鄰和次近鄰距離,并將搜素得到的距離作為權(quán)重,采用加權(quán)平均的方法對(duì)所述兩幅圖像的特征點(diǎn)進(jìn)行配準(zhǔn),從而實(shí)現(xiàn)對(duì)兩幅魚眼圖像進(jìn)行拼接,得到拼接后的球面全景圖像。
進(jìn)一步地,還包括,顯示單元409,用于根據(jù)獲取的球面全景圖像,進(jìn)行虛擬現(xiàn)實(shí)VR顯示。
進(jìn)一步地,本發(fā)明實(shí)施方式涉及一種電子設(shè)備,如圖6所示,本實(shí)施方式的電子設(shè)備可以包括:處理器501、存儲(chǔ)器502、顯示器503和收發(fā)器504。
其中,處理器501為系統(tǒng)的核心,其可以為CPU(中央處理器)、DSP(Digital Signal Processor,數(shù)字信號(hào)處理器)等,其主要負(fù)責(zé)電子設(shè)備中各部件之間的協(xié)調(diào)工作,其中,存儲(chǔ)器502可以為ROM(Read Only Memory,只讀存儲(chǔ)器)、RAM(Random Access Memory,隨機(jī)訪問存儲(chǔ)器)、緩存或閃存等存儲(chǔ)設(shè)備,其可以用于存儲(chǔ)計(jì)算機(jī)可讀的程序指令,該程序指令用于使得處理器501實(shí)現(xiàn)本實(shí)施例所示的獲取全景圖像的功能。其中,顯示器503主要用于顯示人機(jī)交互界面,以方便用戶進(jìn)行操作,并顯示全景圖像。其中,收發(fā)器504主要用于接收雙魚眼鏡頭拍攝的圖像。
不難發(fā)現(xiàn),本實(shí)施方式為與上述方法相對(duì)應(yīng)的設(shè)備實(shí)施例,本實(shí)施方式可與上述方法方式互相配合實(shí)施。上述方法中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在上述方法實(shí)施方式中。
本發(fā)明實(shí)施例的電子設(shè)備以多種形式存在,包括但不限于:
(1)移動(dòng)通信設(shè)備:這類設(shè)備的特點(diǎn)是具備移動(dòng)通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類設(shè)備包括:智能手機(jī)(例如iPhone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
(2)超移動(dòng)個(gè)人計(jì)算機(jī)設(shè)備:這類設(shè)備屬于個(gè)人計(jì)算機(jī)的范疇,有計(jì)算和處理功能,一般也具備移動(dòng)上網(wǎng)特性。這類終端包括:PDA、MID和UMPC設(shè)備等,例如iPad。
(3)便攜式娛樂設(shè)備:這類設(shè)備可以顯示和播放多媒體內(nèi)容。該類設(shè)備包括:音頻、視頻播放器(例如iPod),掌上游戲機(jī),電子書,以及智能玩具和便攜式車載導(dǎo)航設(shè)備。
(4)服務(wù)器:提供計(jì)算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,服務(wù)器和通用的計(jì)算機(jī)架構(gòu)類似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。
(5)其他具有數(shù)據(jù)交互功能的電子裝置。
本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)設(shè)備(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
另外,本發(fā)明實(shí)施例進(jìn)一步提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用于使所述計(jì)算機(jī)執(zhí)行上述任一項(xiàng)所述的業(yè)務(wù)存儲(chǔ)位置的分配方法及其系統(tǒng)。
進(jìn)一步地,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),使所述計(jì)算機(jī)執(zhí)行上述任一項(xiàng)所述的業(yè)務(wù)存儲(chǔ)位置的分配方法及其系統(tǒng)。
綜上所述,本發(fā)明實(shí)施例通過將魚眼圖像從平面坐標(biāo)系直接映射到球面模型,再進(jìn)行拼接,能夠有效校正魚眼圖像產(chǎn)生的徑向畸變,使魚眼圖像映射到自身所在單位球面上的映射的相對(duì)位置得到校正,邊緣區(qū)域的變形得到有效的校正。另外,通過在單位球面上的配準(zhǔn),使得球面上的絕對(duì)位置得到有效的配準(zhǔn),因此圖像重合區(qū)域中匹配的圖像點(diǎn)間的拼接誤差大幅度減小,因此使得全景圖像中由匹配點(diǎn)間的拼接誤差引起的重影、錯(cuò)位、模糊等問題也相應(yīng)得到了解決。本發(fā)明實(shí)施例提供的圖像拼接方法得到的全景圖像中完全沒有空白圖像區(qū)域,重疊區(qū)域圖像誤差小,因此圖像拼接精度得到大幅提高。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。