基于gpu技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法
【專利摘要】本發(fā)明是一種基于GPU技術(shù)的航測相機(jī)并行譜段配準(zhǔn)方法,包括步驟:1】在GPU端對原始影像I(x,y)進(jìn)行卷積,建立高斯金字塔L(x,y,σ)并行化,建立高斯差分金字塔D(x,y,σ)并行化;2】對灰度化的影像在GPU端先進(jìn)行行卷積,再進(jìn)行列卷積,將算法復(fù)雜度從O(N2)降為O(N);3】在存儲空間連續(xù)的條件下,進(jìn)行極值點(diǎn)個(gè)數(shù)累加存儲,在同一時(shí)刻只有一個(gè)線程操作累加地址;4】綁定紋理寄存器,為每個(gè)關(guān)鍵點(diǎn)設(shè)置一個(gè)CUDA線程;5】生成多維描述子,使用一個(gè)線程塊處理一個(gè)特征點(diǎn)的多維向量;6】在CPU上進(jìn)行KD?tree的構(gòu)建;經(jīng)實(shí)際測試,處理分辨率可達(dá)或高于16378x8192;該方法基于GPU技術(shù)解決了對超大分辨率圖像進(jìn)行實(shí)時(shí)圖像配準(zhǔn)的速度難點(diǎn),且配準(zhǔn)時(shí)間在毫秒級別,易于集成在航測相機(jī)圖像處理系統(tǒng)中。
【專利說明】基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法 技術(shù)領(lǐng)域 本發(fā)明屬于三線陣航測相機(jī)圖像處理中并行計(jì)算圖像處理技術(shù)領(lǐng)域,尤其涉及一種基 于GHJ技術(shù)的航測相機(jī)超高分辨率并行譜段配準(zhǔn)方法。 【背景技術(shù)】 隨著航測相機(jī)技術(shù)的不斷發(fā)展、影像尺寸的增大和空間分辨率的提升,高分辨率影像 中可以提取出更多有用的圖像信息。目前關(guān)于影像配準(zhǔn)的方法,絕大多數(shù)較好的方法都主 要應(yīng)用在中小尺寸影像的配準(zhǔn)中,并且忽略時(shí)間性能,缺少對超大尺寸影像數(shù)據(jù)的處理應(yīng) 用,而這正是三線陣立體航測相機(jī)超大分辨率影像處理,尤其是在有限處理時(shí)間內(nèi)進(jìn)行應(yīng) 急影像處理所面臨的瓶頸。 目前,特征檢測和配準(zhǔn)算法主要分為基于灰度、基于變化域和基于特征點(diǎn)三類方法?;?于灰度的方法直接利用圖像灰度信息,基于優(yōu)化準(zhǔn)則尋找相似度最大的匹配參數(shù),不需要 進(jìn)行復(fù)雜的圖像預(yù)處理,但該種方法需要計(jì)算全部圖像像素,運(yùn)算量大,無法滿足航測相機(jī) 超高分辨率的技術(shù)特點(diǎn)?;谧兓虻姆椒☉?yīng)用快速算法來提高速度,例如傅里葉快速算 法,然而其應(yīng)用只局限于較為簡單的縮放、平移類變換形式,對于仿射變換或投影變換這類 復(fù)雜的變換方式,應(yīng)用效果不佳,無法適應(yīng)航測相機(jī)圖像變換豐富的特點(diǎn)。 然而基于特征點(diǎn)的兩類檢測匹配方法在計(jì)算速度上均存在瓶頸,當(dāng)影像像幅較大,或 采用較大的高斯平滑窗口時(shí),運(yùn)算速度明顯降低,繁瑣的算法加重了計(jì)算機(jī)硬件負(fù)擔(dān),基于 CPU的處理方式已無法滿足該類方法的應(yīng)用,匹配的大量特征數(shù)據(jù)消耗了大量存儲空間和 時(shí)間。此外,算法復(fù)雜度高的特點(diǎn)嚴(yán)重限制了該類型匹配方法在實(shí)時(shí)圖像處理領(lǐng)域的應(yīng)用。 雖然研究表明基于GHJ實(shí)現(xiàn)的基于特征點(diǎn)的算法可以加速影像的配準(zhǔn)過程,但是目前并沒 有關(guān)于超大分辨率航測相機(jī)的配準(zhǔn)結(jié)果。因此在特征算法及其復(fù)雜度改進(jìn)的基礎(chǔ)上,利用 先進(jìn)的GPU并行圖像處理技術(shù),對超大分辨率圖像進(jìn)行特征檢測、特征匹配、坐標(biāo)映射、譜段 配準(zhǔn)全流程,對于提高航測相機(jī)譜段配準(zhǔn)精度,實(shí)現(xiàn)超高分辨率實(shí)時(shí)圖像處理,具有重要的 應(yīng)用價(jià)值。
【發(fā)明內(nèi)容】
本發(fā)明針對三線陣航測相機(jī)超高分辨率的特殊技術(shù)指標(biāo),提出一種基于GPU技術(shù)的航 測相機(jī)并行譜段配準(zhǔn)方法,經(jīng)實(shí)際測試,處理分辨率可達(dá)或高于16378x8192。該方法基于 GPU技術(shù)解決了對超大分辨率圖像進(jìn)行實(shí)時(shí)圖像配準(zhǔn)的速度難點(diǎn),且配準(zhǔn)時(shí)間在毫秒級別, 易于集成在航測相機(jī)圖像處理系統(tǒng)中。 基于GHJ技術(shù)的航測相機(jī)并行譜段配準(zhǔn)方法實(shí)施過程如下: 步驟1,高斯函數(shù)為G(x,y, (T)二Cl/2Tro,e-(x2+y2)/2CT2,利用高斯函數(shù)對原始影像 I(x,y)進(jìn)行卷積,由于高斯函數(shù)具有各向同性的特點(diǎn),將一次二維高斯卷積分解為兩次一 維高斯卷積。對灰度化的影像先進(jìn)行行卷積,再進(jìn)行列卷積,從而將算法復(fù)雜度從〇(N2)降 為〇(N)。綁定圖像到紋理內(nèi)存,將兩個(gè)方向的濾波參數(shù)存儲在常量內(nèi)存中,為待處理圖像的 每一個(gè)像素建立一個(gè)CUDA線程,分別在兩個(gè)方向完成濾波卷積運(yùn)算,得到高斯尺度空間L (x,y,〇)〇 L(x,y,a)二 G(x,y,d)?/(x,y) 步驟2:將圖像金字塔分為0組,每組有S層,下一組圖像由上一組圖像隔點(diǎn)降采樣得到, 當(dāng)直接在原始圖像上計(jì)算高斯尺度函數(shù),〇min = 0,當(dāng)原始圖像先擴(kuò)大一倍,Omin = -l。其中,〇 (o,s) = 〇〇2°+s/s,〇G〇min+[0,'",0_1],SG [0,???,S_1]。下一層卷積的〇i+l值與當(dāng)前卷積的〇i 值關(guān)系總結(jié)為〇i+l = k〇i,每一次高斯卷積是在上一次基礎(chǔ)上再作一次卷積來實(shí)現(xiàn),將〇值以 查表方式直接得出每次卷積的尺度參數(shù)。為兩幅待相減的高斯圖像綁定紋理寄存器,為每 個(gè)像素開辟CUDA線程,并行計(jì)算相減得到對應(yīng)的高斯差分金字塔D(x,y, 〇)。 D(x, y,a) = (G(x,y,ka) - G(x, y, a))?I(x,y) 步驟3:在3x3的立方體內(nèi)進(jìn)行中間檢測點(diǎn)和同尺度8個(gè)相鄰點(diǎn)以及上下相鄰尺度18個(gè) 點(diǎn)的比較,在存儲空間連續(xù)的條件下,利用CUDA原子操作進(jìn)行極值點(diǎn)個(gè)數(shù)的累加存儲,使得 顯存占用率小,保障在同一時(shí)刻只有一個(gè)線程操作累加地址,確保在尺度空間和二維圖像 位置空間都檢測到極值點(diǎn),利用子像元插值將離散空間點(diǎn)轉(zhuǎn)化為連續(xù)空間點(diǎn),極值點(diǎn)的極 值為 D(x) = D + 0.5 (aDT/ dx)x 步驟4:當(dāng)f相對于插值中心點(diǎn)的偏移量大于特定閾值,意味著插值中心點(diǎn)已經(jīng)偏移到 其鄰近點(diǎn),則刪除這樣的點(diǎn)。當(dāng)|D(X)|小于特定閾值,說明該點(diǎn)易受噪聲干擾變得不穩(wěn)定, 則刪除這樣的點(diǎn)。 Dxx(x, y) Dxv(x,y)' 步驟5:主曲率表示為H(x,y) = n ,'、 n 、,最大特征值a,最小特征值 L?xy^X;y; Uyylx^ Y) 0。設(shè)定閾值T,當(dāng)(a+P)2/a0<( y+l)2/y,則刪除邊緣效應(yīng)點(diǎn)。 步驟6:對以特征點(diǎn)為中心,以特定半徑區(qū)域內(nèi)所有點(diǎn)進(jìn)行梯度方向統(tǒng)計(jì),統(tǒng)計(jì)幅角m (x,y)和幅值9(x,y),綁定紋理寄存器,為每個(gè)關(guān)鍵點(diǎn)設(shè)置一個(gè)CUDA線程,啟動(dòng)單獨(dú)kernel 函數(shù)計(jì)算在特征點(diǎn)附近的像素梯度大小和方向,利用全局存儲器中的高斯權(quán)重函數(shù),對每 個(gè)加入梯度直方圖的采樣點(diǎn)梯度幅值均進(jìn)行權(quán)重處理,將直方圖中最高方向作為主方向。
yU,y;=arctanULU,y+l;-LU,y-l;;/UU+l ,y;-LU-l 步驟7:以特征點(diǎn)附近領(lǐng)域劃分為Bp X Bp個(gè)子區(qū)域,每個(gè)區(qū)域尺寸為m〇個(gè)像元,〇為特征 點(diǎn)的尺度值,以特征點(diǎn)為中心,將特征點(diǎn)附近領(lǐng)域內(nèi)m〇tBp + :l)V^x mcKBp + 1)^ 圖像梯度的位置和方向旋轉(zhuǎn)角度9,重新取m〇Bp X m〇Bp大小圖像區(qū)域,在每個(gè)區(qū)域內(nèi)計(jì)算8個(gè) 方向的梯度方向直方圖,生成多維描述子h(x,y,0)。使用一個(gè)線程塊處理一個(gè)特征點(diǎn)的多 維向量,每個(gè)thread對應(yīng)一個(gè)采樣點(diǎn),將每個(gè)線程得到的結(jié)果累加到各個(gè)方向上。 步驟8:由于KD-tree的構(gòu)建需要大量邏輯條件判斷,所以在CPU上進(jìn)行KD-tree的構(gòu)建, 在GPU端查找最近鄰,將KD-tree綁定到紋理存儲器,從而提供高效的內(nèi)存帶寬,使內(nèi)存訪問 適應(yīng)大量空間局部性模式,設(shè)置一個(gè)線程塊包含256個(gè)線程,每個(gè)線程負(fù)責(zé)一個(gè)特征點(diǎn)的搜 索,當(dāng)特征點(diǎn)數(shù)目超過256,則利用多個(gè)線程塊進(jìn)行并行計(jì)算。 步驟9:最近鄰查找時(shí),在多維樹結(jié)構(gòu)上進(jìn)行搜索匹配,使用歐式距離作為相似度度量 標(biāo)準(zhǔn),利用GPU并行處理,并發(fā)執(zhí)行搜索過程。KD-tree算法負(fù)責(zé)優(yōu)化兩幅圖像間特征點(diǎn)搜 索,歐式距離負(fù)責(zé)判斷是否匹配。將兩特征點(diǎn)之間的距離映射為一個(gè)線程塊,每一個(gè)維度之 間的差平方運(yùn)算映射為一個(gè)線程,利用并行求解實(shí)現(xiàn)基于歐式距離的特征點(diǎn)匹配。例如兩 個(gè)特征點(diǎn)向量分別表示為1=(11^2,~^128)和7=(71,72,~,7128),線程塊內(nèi)第:[個(gè)線程計(jì) 算結(jié)果(Xi-yi) 2,(i = l,…,128)將存入線程塊內(nèi)的共享存儲器shared memory進(jìn)行后續(xù)并 行歸約累加求平方根操作。 步驟10:根據(jù)特征點(diǎn)匹配后的位置信息,直接在GHJ端,利用RANSAC算法在GPU上執(zhí)行從 而實(shí)現(xiàn)精匹配,避免主機(jī)端和設(shè)備端的數(shù)據(jù)交互,RANSAC隨機(jī)選擇最小抽樣集作為內(nèi)點(diǎn),得 到模型參數(shù)的初始估計(jì),然后繼續(xù)尋找數(shù)據(jù)集中的其它內(nèi)點(diǎn),可高效地實(shí)現(xiàn)精匹配。隨后進(jìn) 行后續(xù)坐標(biāo)映射、譜段合成全流程。 本發(fā)明首先利用行卷積和列卷積在GPU上的并行分離來替代計(jì)算度復(fù)雜的二維卷積, 通過綁定紋理寄存器實(shí)現(xiàn)高斯差分影像在GPU上的生成,尺度參數(shù)計(jì)算通過查表法代替連 續(xù)卷積,然后經(jīng)過特征描述子生成、匹配、精匹配、坐標(biāo)映射、譜段合成這一系列在GPU上的 并行優(yōu)化操作實(shí)現(xiàn)生成精準(zhǔn)的彩色影像。該方法實(shí)現(xiàn)了 GPU上的全系列并行計(jì)算,沒有任何 大數(shù)據(jù)量的主機(jī)端和設(shè)備端的中間數(shù)據(jù)交互,滿足三線陣航測相機(jī)超高分辨率的技術(shù)特 點(diǎn),構(gòu)建了GPU端高效率的密集航測數(shù)據(jù)計(jì)算解決方案,克服了目前CPU方法在航測相機(jī)超 大分辨率圖像處理方面應(yīng)用的局限性,將計(jì)算性能提升至毫秒級別,在立體航測相機(jī)大數(shù) 據(jù)量圖像處理中具有應(yīng)用和推廣價(jià)值。
【附圖說明】 圖1為本發(fā)明基于GHJ技術(shù)的譜段配準(zhǔn)整體流程圖。
【具體實(shí)施方式】 譜段配準(zhǔn),即根據(jù)標(biāo)定的三線陣RGB影像傳感器幾何位置關(guān)系,將紅、綠、藍(lán)數(shù)據(jù)進(jìn)行位 置配準(zhǔn)生成彩色影像。三線陣相機(jī)在不同的譜段紅、綠、藍(lán)的分辨率有差別,如果保存成標(biāo) 準(zhǔn)數(shù)據(jù)格式,需要將數(shù)據(jù)重采樣為相同的空間分辨率,然后進(jìn)行不同譜段數(shù)據(jù)之間的配準(zhǔn), 生成單航帶的數(shù)據(jù)文件。 基于特征點(diǎn)的配準(zhǔn)方法,利用提取到相同位置的特征點(diǎn),估計(jì)空間幾何變換參數(shù)進(jìn)行 配準(zhǔn),主要包含兩方面:基于角點(diǎn)檢測和基于局部不變量描述符。角點(diǎn)檢測算法中應(yīng)用最為 廣泛的是Harris微分算子,在圖像中設(shè)計(jì)局部檢測窗口,通過判斷該窗口沿任意方向作微 小偏移是否會(huì)引起窗口的平均能量有很大變化且超過設(shè)定閾值,符合條件就將該窗口的中 心像素點(diǎn)視為角點(diǎn)。其構(gòu)造了具有結(jié)構(gòu)信息的二階矩陣,采用微分算子和矩陣特征值進(jìn)行 判定,對旋轉(zhuǎn)和灰度變化具有不變性,具有很高的檢測率?;诰植坎蛔兞棵枋龇椒ǖ奶?征描述子具備很高的魯棒性和獨(dú)特性,在圖像旋轉(zhuǎn)、尺度變換、仿射變換和視角變化條件下 都有很好的提取效果。局部不變量描述方法歸結(jié)為在高維空間進(jìn)行最鄰近點(diǎn)的搜索問題, 能夠在海量的目標(biāo)數(shù)據(jù)庫中進(jìn)行檢測匹配,并且方便地與其它形式的特征向量進(jìn)行聯(lián)合。 航測相機(jī)圖像數(shù)據(jù)是一種柵格數(shù)據(jù),具備算術(shù)密集型特點(diǎn),具有非常頻繁的存儲器訪 問、大量循環(huán)計(jì)算等特點(diǎn),GPU的數(shù)學(xué)邏輯單元屬于大面積陣列式分布,可以以并行方式解 決密集型計(jì)算問題。CUDA是一種并行編程模型,基于CPU_GPU異構(gòu)平臺實(shí)現(xiàn),CPU負(fù)責(zé)邏輯事 務(wù)處理和數(shù)據(jù)調(diào)度,GPU執(zhí)行高性能運(yùn)算,二者合理協(xié)作,可極大地提高超大分辨率圖像的 譜段配準(zhǔn)速度。 以下針對附圖和實(shí)例對本發(fā)明的實(shí)施過程進(jìn)行具體描述,圖1為本發(fā)明基于GHJ技術(shù)的 譜段配準(zhǔn)整體流程圖,具體包括以下步驟:(1)在GHJ端建立高斯金字塔并行化,建立高斯差 分金字塔并行化;(2)針對大數(shù)據(jù)量應(yīng)用,不通過數(shù)據(jù)傳輸,在GPU端直接檢測極值點(diǎn),并剔 除不符合的極值點(diǎn)和邊緣效應(yīng)點(diǎn);(3)在GHJ端定位主方向,生成特征描述子,進(jìn)行特征匹 配;(4)在GPU端進(jìn)行特征精匹配,坐標(biāo)映射,譜段合成后生成精準(zhǔn)彩色影像傳回CPU端。 [0028]將B、G、R三通道影像從CPU端拷入GPU顯存,利用高斯差分函數(shù)對原始影像I (x,y) 進(jìn)行卷積,先進(jìn)行行卷積,再進(jìn)行列卷積。綁定圖像到紋理內(nèi)存,將兩個(gè)方向的濾波參數(shù)存 儲在常量內(nèi)存中,為待處理圖像的每一個(gè)像素建立一個(gè)CUDA線程,分別在兩個(gè)方向完成濾 波卷積運(yùn)算,得到高斯尺度空間L(x,y, 〇)。 L(x,y,cj)二 G(x,y,a)?I(x,y) 圖像金字塔下一組圖像由上一組圖像隔點(diǎn)降采樣得到,直接在原始圖像上計(jì)算高斯尺 度函數(shù),〇min = 0。取〇0 = 1.6,〇(0,S) =〇〇21/S,〇G〇min+[0,…,0_1],SG [0,…,S-1]。下一層卷 積的〇1+1值與當(dāng)前卷積的^值關(guān)系總結(jié)為〇1+1 = k〇1,每一次高斯卷積是在上一次基礎(chǔ)上再作 一次卷積來實(shí)現(xiàn),將0值以查表方式直接得出每次卷積的尺度參數(shù)。為兩幅待相減的高斯圖 像綁定紋理寄存器,為每個(gè)像素開辟CUDA線程,調(diào)用kernel函數(shù),使得每個(gè)CUDA線程完成像 素相減操作,將結(jié)果存儲在全局存儲器中,對應(yīng)的高斯差分金字塔為D(x,y,〇)。 D(x, y, a)二(G(x, yvkcr) - G(x, y, a))(g)l(x, y) 在3x3的立方體內(nèi)進(jìn)行中間檢測點(diǎn)和同尺度8個(gè)相鄰點(diǎn)以及上下相鄰尺度18個(gè)點(diǎn)的比 較,在存儲空間連續(xù)的條件下,利用CUDA原子操作進(jìn)行極值點(diǎn)個(gè)數(shù)的累加存儲,確保在尺度 空間和二維圖像位置空間都檢測到極值點(diǎn),利用子像元插值將離散空間點(diǎn)轉(zhuǎn)化為連續(xù)空間 點(diǎn),極值點(diǎn)的極值為D(i〇。 D⑷=D + 0_5(3DT/3 尤)f 設(shè)置特定閾值為0.5,當(dāng)i相對于插值中心點(diǎn)的偏移量大于0.5,意味著插值中心點(diǎn)已 經(jīng)偏移到其鄰近點(diǎn),則刪除這樣的點(diǎn)。設(shè)置特定閾值為0.03,當(dāng)|D(X) | < 0 03,說明該點(diǎn) 易受噪聲干擾變得不穩(wěn)定,則刪除這樣的點(diǎn)。 D v) D fx vT 主曲率表示為H(x,y)= 〈,最大特征值a,最小特征值0。設(shè)定
[Dxy(x,y) Dyy(x,y)J 閾值y,當(dāng)(a+P)2/a0< ( y +1 )2/ y,則刪除邊緣效應(yīng)點(diǎn)。 對以特征點(diǎn)為中心,以3x 1.5〇為半徑區(qū)域內(nèi)所有點(diǎn)進(jìn)行梯度方向統(tǒng)計(jì),統(tǒng)計(jì)幅角m(x, y)和幅值9(x,y),綁定紋理寄存器,為每個(gè)關(guān)鍵點(diǎn)設(shè)置一個(gè)CUDA線程,啟動(dòng)單獨(dú)kernel函數(shù) 計(jì)算在特征點(diǎn)附近的像素梯度大小和方向。
0(x,y)=arctan((L(x,y+l)-L(x,y-l))/(L(x+1,y)-L(x-l,y))) 以特征點(diǎn)附近領(lǐng)域劃分為Bp X Bp個(gè)子區(qū)域,每個(gè)區(qū)域尺寸為m〇個(gè)像元,〇 為特征點(diǎn)的尺度值,令m = 3,B p = 4,以特征點(diǎn)為中心,將特征點(diǎn)附近領(lǐng)域內(nèi) X ma(BP + 1)_/之圖像梯度的位置和方向旋轉(zhuǎn)角度9,重新取moBpXmo Bp大小圖像區(qū)域,在每個(gè)區(qū)域內(nèi)計(jì)算8個(gè)方向的梯度方向直方圖,生成128維描述子h(x,y, 0)。在每個(gè)4x4的子塊區(qū)域上統(tǒng)計(jì)計(jì)算8個(gè)方向的梯度方向直方圖和特征描述符的歸一化。 使用一個(gè)線程塊處理一個(gè)特征點(diǎn)的128維向量,每個(gè)thread對應(yīng)一個(gè)采樣點(diǎn),將每個(gè)線程得 到的結(jié)果累加到各個(gè)方向上。 在CPU上構(gòu)建KD-tree,并將數(shù)據(jù)上傳至GPU顯存,在GPU端查找最近鄰,將KD-tree綁定 到紋理存儲器,從而提供高效的內(nèi)存帶寬,由GPU來完成關(guān)鍵點(diǎn)特征向量的匹配計(jì)算,從而 完成特征點(diǎn)匹配操作。設(shè)置一個(gè)線程塊包含256個(gè)線程,每個(gè)線程負(fù)責(zé)一個(gè)特征點(diǎn)的搜索, 當(dāng)特征點(diǎn)數(shù)目超過256,則利用多個(gè)線程塊進(jìn)行并行計(jì)算。 最近鄰查找時(shí),在多維樹結(jié)構(gòu)上進(jìn)行搜索匹配,使用歐式距離作為相似度度量標(biāo)準(zhǔn),利 用GPU并行處理,并發(fā)執(zhí)行搜索過程。KD-tree算法負(fù)責(zé)優(yōu)化兩幅圖像間特征點(diǎn)搜索,歐式距 離負(fù)責(zé)判斷是否匹配,利用并行求解實(shí)現(xiàn)基于歐式距離的特征點(diǎn)匹配。例如兩個(gè)特征點(diǎn)向 量分別表示為1=(11,12,~,1128)和7=(71,72,~,7128),線程塊內(nèi)第1個(gè)線程計(jì)算結(jié)果(11-yi) 2,( i = 1,…,128)將存入線程塊內(nèi)的共享存儲器shared memory進(jìn)行后續(xù)并行歸約累加 求平方根操作。 根據(jù)特征點(diǎn)匹配后的位置信息,直接在GPU端,利用RANSAC算法在GPU上執(zhí)行從而實(shí)現(xiàn) 精匹配,避免主機(jī)端和設(shè)備端的數(shù)據(jù)交互,隨后進(jìn)行后續(xù)坐標(biāo)映射、譜段合成全流程,最后 將配準(zhǔn)后的彩色影像傳回CPU端進(jìn)行后續(xù)操作。
【主權(quán)項(xiàng)】
1. 基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特征在于:所述方法包括 以下步驟: 1】在GPU端對原始影像I(x,y)進(jìn)行卷積,建立高斯金字塔L(X,y,〇)并行化,建立高斯差 分金字塔D(x,y,〇)并行化;在尺度和空間兩方面尋找極值點(diǎn),刪除邊緣效應(yīng)點(diǎn),統(tǒng)計(jì)幅角m (x,y)和幅值0(x,y),定位主方向,生成特征描述子并進(jìn)行匹配、坐標(biāo)映射和譜段合成,生成 彩色影像; 2】對灰度化的影像在GPU端先進(jìn)行行卷積,再進(jìn)行列卷積,將算法復(fù)雜度從0(N2)降為O (N);為兩幅待相減的高斯圖像綁定紋理寄存器,為每個(gè)像素開辟CUDA線程,并行計(jì)算相減 得到對應(yīng)的高斯差分金字塔,尺度參數(shù)計(jì)算通過查表法代替連續(xù)卷積; 3】在存儲空間連續(xù)的條件下,利用CUDA原子操作進(jìn)行極值點(diǎn)個(gè)數(shù)累加存儲,在同一時(shí) 刻只有一個(gè)線程操作累加地址,使在尺度和二維圖像位置空間都檢測到極值點(diǎn),利用子像 元插值將離散空間點(diǎn)轉(zhuǎn)化為連續(xù)空間點(diǎn); 4】綁定紋理寄存器,為每個(gè)關(guān)鍵點(diǎn)設(shè)置一個(gè)CUDA線程,啟動(dòng)單獨(dú)kernel函數(shù)計(jì)算在特 征點(diǎn)附近的像素梯度大小和方向,利用全局存儲器中的高斯權(quán)重函數(shù),對每個(gè)加入梯度直 方圖的采樣點(diǎn)梯度幅值均進(jìn)行權(quán)重處理,將直方圖中最高方向作為主方向; 5】生成多維描述子,使用一個(gè)線程塊處理一個(gè)特征點(diǎn)的多維向量,每個(gè)thread對應(yīng)一 個(gè)采樣點(diǎn),將每個(gè)線程得到的結(jié)果累加到各個(gè)方向上; 6】在CRJ上進(jìn)行KD-tree的構(gòu)建,在GRJ端查找最近鄰,將KD-tree綁定到紋理存儲器; 7】歐式距離負(fù)責(zé)判斷是否匹配,將兩個(gè)特征點(diǎn)之間的距離映射為一個(gè)線程塊,每一個(gè) 維度之間的差平方運(yùn)算映射為一個(gè)線程,利用并行求解實(shí)現(xiàn)基于歐式距離的特征點(diǎn)匹配, 運(yùn)用線程塊內(nèi)的共享存儲器shared memory進(jìn)行后續(xù)并行歸約累加求平方根操作。2. 根據(jù)權(quán)利要求1所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟1】中對原始影像I (x,y)進(jìn)行卷積是利用高斯函數(shù)進(jìn)行;高斯函數(shù)為 G(x,y、〇)二(l/2na2)e_(x2+y2)/202 ;高斯金字塔Ux,y,G) = G(x,y,o.)?i(>,;y)。3. 根據(jù)權(quán)利要求2所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟2】具體實(shí)現(xiàn)方式是:將圖像金字塔分為0組,每組有S層,下一組圖像由上 一組圖像隔點(diǎn)降采樣得到,當(dāng)直接在原始圖像上計(jì)算高斯尺度函數(shù),〇 min = 〇,當(dāng)原始圖像先 擴(kuò)大一彳首,Omin = _1 ; 其中,〇(〇,s) = 〇〇2〇+s'12,0 G 〇min+[〇,···,〇_1],sG [〇,···,S-1]; 下一層卷積的〇i+l值與當(dāng)前卷積的〇i值關(guān)系總結(jié)為〇i+l = k〇i,每一次高斯卷積是在上一 次基礎(chǔ)上再作一次卷積來實(shí)現(xiàn),將σ值以查表方式直接得出每次卷積的尺度參數(shù);為兩幅待 相減的高斯圖像綁定紋理寄存器,為每個(gè)像素開辟CUDA線程,并行計(jì)算相減得到對應(yīng)的高 斯差分金字塔V π〉·根據(jù)權(quán)利要求3所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟3】具體實(shí)現(xiàn)方式是:在3x3的立方體內(nèi)進(jìn)行中間檢測點(diǎn)和同尺度8個(gè)相鄰 2 點(diǎn)以及上下相鄰尺度18個(gè)點(diǎn)的比較,在存儲空間連續(xù)的條件下,利用CUDA原子操作進(jìn)行極 值點(diǎn)個(gè)數(shù)的累加存儲,使顯存占用率小,在同一時(shí)刻只有一個(gè)線程操作累加地址,在尺度空 間和二維圖像位置空間都檢測到極值點(diǎn),利用子像元插值將離散空間點(diǎn)轉(zhuǎn)化為連續(xù)空間 點(diǎn),對于三維子像元插值,χ( X,y,σ)為三維矢量,極值點(diǎn)的極值為D(i〇;5. 根據(jù)權(quán)利要求4所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟4】對以特征點(diǎn)為中心,以特定半徑區(qū)域內(nèi)所有點(diǎn)進(jìn)行梯度方向統(tǒng)計(jì),統(tǒng)計(jì) 幅角m(x,y)和幅值0( x,y),綁定紋理寄存器,為每個(gè)關(guān)鍵點(diǎn)設(shè)置一個(gè)CUDA線程,啟動(dòng)單獨(dú) kernel函數(shù)計(jì)算在特征點(diǎn)附近的像素梯度大小和方向,利用全局存儲器中的高斯權(quán)重函 數(shù),對每個(gè)加入梯度直方圖的采樣點(diǎn)梯度幅值均進(jìn)行權(quán)重處理,將直方圖中最高方向作為 主方向.0(x,y)=arctan((L(x,y+l)-L(x,y-l))/(L(x+1 ,y)-L(x-l ,y))) 〇6. 根據(jù)權(quán)利要求5所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟5】的具體實(shí)現(xiàn)方式是:以特征點(diǎn)附近領(lǐng)域劃分為BpXBp個(gè)子區(qū)域,每個(gè)區(qū) 域尺寸為m〇個(gè)像元,σ為特征點(diǎn)的尺度值,以特征點(diǎn)為中心,將特征點(diǎn)附近領(lǐng)域內(nèi)圖像梯度的位置和方向旋轉(zhuǎn)角度Θ,重新取m〇BP X mo Bp大小圖像區(qū)域,在每個(gè)區(qū)域內(nèi)計(jì)算8個(gè)方向的梯度方向直方圖,生成多維描述子h(X,y, Θ);使用一個(gè)線程塊處理一個(gè)特征點(diǎn)的多維向量,每個(gè)thread對應(yīng)一個(gè)采樣點(diǎn),將每個(gè)線程 得到的結(jié)果累加到各個(gè)方向上。7. 根據(jù)權(quán)利要求6所述的基于GPU技術(shù)的三線陣立體航測相機(jī)并行譜段配準(zhǔn)方法,其特 征在于:所述步驟6】最近鄰查找時(shí),在多維樹結(jié)構(gòu)上進(jìn)行搜索匹配,使用歐式距離作為相似 度度量標(biāo)準(zhǔn),利用GHJ并行處理,并發(fā)執(zhí)行搜索過程;KD-tree算法負(fù)責(zé)優(yōu)化兩幅圖像間特征 點(diǎn)搜索,歐式距離負(fù)責(zé)判斷是否匹配;將兩特征點(diǎn)之間的距離映射為一個(gè)線程塊,每一個(gè)維 度之間的差平方運(yùn)算映射為一個(gè)線程,利用并行求解實(shí)現(xiàn)基于歐式距離的特征點(diǎn)匹配; 兩個(gè)特征點(diǎn)向量分別表示為X= (X1,X2,···,X128)和y = (yi,y2,···,yi28),線程塊內(nèi)第i個(gè) 線程計(jì)算結(jié)果(X廣yi)2,( i = 1,…,128)將存入線程塊內(nèi)的共享存儲器shared memory進(jìn)行 后續(xù)并行歸約累加求平方根操作。
【文檔編號】G06T7/00GK105894494SQ201610083083
【公開日】2016年8月24日
【申請日】2016年2月5日
【發(fā)明人】趙曉冬, 曹劍中, 周祚峰, 楊洪濤, 黃繼江, 郭惠楠, 張輝, 方堯
【申請人】中國科學(xué)院西安光學(xué)精密機(jī)械研究所