亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種基于cuda的快速圖像類比合成方法

文檔序號:6365195閱讀:278來源:國知局
專利名稱:一種基于cuda的快速圖像類比合成方法
技術(shù)領(lǐng)域
本發(fā)明涉及圖像處理領(lǐng)域,尤其是一種圖像類比合成方法。
背景技術(shù)
紋理合成可以從小區(qū)域紋理樣本自動生成視覺上相似和連續(xù)的大樣本紋理?;跇訄D的紋理合成方法是繼紋理映射、過程紋理合成等方法后發(fā)展起來的一種新的紋理拼貼技術(shù),避免了以往方法中的接縫、走樣、反復(fù)調(diào)整參數(shù)等問題。目前,對基于樣圖的紋理合成的研究可大致分為二方面。一方面,希望在合成中加入更多控制因素來約束紋理生成,產(chǎn)生更具多樣性的紋理。另一方面,希望加快合成速度,使合成趨于實時。圖像類比框架借用了類比思想,提供了一種非常自然的方法來定義圖像間的轉(zhuǎn)換,使用戶可以控制生成結(jié)果,產(chǎn)生多種圖像特效。圖像類比框架適用于各種應(yīng)用,如紋理 合成、紋理轉(zhuǎn)移、超分辨率、藝術(shù)風(fēng)格學(xué)習(xí),texture-by-number(TBN)等。傳統(tǒng)方法采用兩種搜索策略來查找具有最相似鄰域的候選點最相似鄰域查找ANN(approximate_nearest-neighbor)獲得全局最優(yōu)的匹配點,經(jīng)典的Ashikhmin算法獲得鄰域相關(guān)的待選點。但為了獲得一個匹配點,ANN需要上萬次的迭代,迭代次數(shù)隨源圖像分辨率的提高線性增加,Ashikhmin算法也根據(jù)鄰域大小需要進(jìn)行多次計算才能獲得一個待選點。合成一張圖像要花費幾十分鐘甚至更長的時間。目前的研究中,研究者采用各種方法來加快合成速度,提高合成質(zhì)量。如采用粒子群優(yōu)化算法來加快最相似鄰域查找過程,提高合成速度。對TBN應(yīng)用,有研究者提出用Random Walk算法進(jìn)行最相似鄰域搜索,無需預(yù)處理,提高搜索速度。對于藝術(shù)風(fēng)格學(xué)習(xí),研究者提出了適用于不同繪畫風(fēng)格的基于筆刷的算法,可以生成油畫、水粉畫、鋼筆畫等風(fēng)格效果,這些算法大多是模擬一種特定的繪畫材質(zhì),有的還需要人工交互。還有研究將紋理優(yōu)化技術(shù)用于圖像類比合成來提高合成質(zhì)量,但合成速度還是較慢。計算機(jī)中多核/眾核體系架構(gòu)的引入,使得計算能力成倍增加,GPU的并行處理能力也越來越強大。Nvidia公司推出的CUDA開發(fā)工具使程序員能在C語言環(huán)境下完成對GPU并行處理架構(gòu)的調(diào)用,能更有效的把計算問題映射到硬件架構(gòu)上。研究者提出利用GPU來進(jìn)行并行可控紋理合成,但其主要針對同質(zhì)紋理合成,不適用于復(fù)合紋理的合成。現(xiàn)有方法大多針對該框架中的某一種具體應(yīng)用來加快合成速度或提高合成質(zhì)量,還沒有一種快速的方法能較高質(zhì)量的適用于整個圖像類比框架的合成。

發(fā)明內(nèi)容
為了克服已有圖像類比合成方法的合成速度較慢、合成質(zhì)量較差的不足,本發(fā)明提供一種提升合成速度、提高合成質(zhì)量的基于CUDA的快速圖像類比合成方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種基于CUDA的快速圖像類比合成方法,所述合成方法包括如下步驟I)生成源圖像A,濾波后的圖像A’,源圖像B的高斯金字塔;
2)當(dāng)前合成第L層,對金字塔從粗糙層到精細(xì)層執(zhí)行以下過程2. I)對 B' L+1 超采樣得到 B' L;2.2)對B' ^中的每個像素點q,采用基于GPU的全局搜索策略找到全局搜索最優(yōu)
解 Qglobal ;2.3)對B' L中的每個像素點q,采用基于GPU的k-coherence搜索策略找到一致性搜索最優(yōu)解qkrah ;2. 4)如果全局搜索得到的結(jié)果更好,則將qBest賦值為qgl()bal, 否則將qBest賦值為qkc;()h,把%;st在A' L中的對應(yīng)坐標(biāo)保存在B' L(q)中;2. 5)循環(huán)執(zhí)行步驟2. 2) 2. 4)根據(jù)設(shè)定的次數(shù),得到濾波后的圖像B’ ;3)對濾波后的圖像B’做合成放大,得到高分辨率的EHB’。進(jìn)一步,所述步驟2. I)中,將B' L+1與紋理存儲器綁定,每個線程執(zhí)行的操作為得到B' L(p)的坐標(biāo)(U,V),取得B, L+1中(u/2, v/2)點顏色值color,B' L(p)的值為color*2+ (u% 2,v% 2)。再進(jìn)一步,所述步驟2.2)中,輸入為A,A’,B金字塔L層對應(yīng)的\,A' 圖像,輸出為B' yB' ^中每個像素點的RG通道保存了由全局搜索得到的最相似點的坐標(biāo)qgl()bal,同時保留了其對應(yīng)的距離,對B' L中的一點q,根據(jù)q點在L的鄰域在\4' L中找至IJ和其最相似的點。所述步驟2. 2)中,所述全局搜索策略的過程為設(shè)R = Ir1, r2, . . . , rj為參考集合,Q = {q1; q2, . . . , qn}為查詢集合。對于紋理合成來說,m為樣圖中的點個數(shù),η為查詢點個數(shù)。NO代表鄰域向量,N(r)和N(q)為收集圖像中鄰域得到的向量。公式⑴表示,對于查詢集合Q中的每個點q,在R中根據(jù)L2度量準(zhǔn)則找到k個與其最相似點的集合C1..k(q),也就是對于每個點q,在集合R中找到和其鄰域距離最小的前k個點, Cl k(q) = argminreR ||#(r)-(r^R,q^Q) (I)分解該運算,得到公式(2):Cl k⑷=I喊;+argminr』#(r;| -2|釋)·#⑷|2) (2)從公式⑵中可以看出|#(的|;不依賴于R中點,|#(r)g也不依賴于查詢點q,因此
對于q點與R中點比較,只要計算|#(r)g-2|#(r)·#⑷I2部分即可。收集鄰域向量得到參考集合對應(yīng)的矩陣RMatrix = Ν(Γι),N(r2),· · ·,N(rn) |,查詢集合對應(yīng)的矩陣QMatrix =N(Qi), N(q2), , N(qn) I。對于全局搜索來說,k取1,RMatrix根據(jù)A,A’中對應(yīng)的點來獲得,QMatrix根據(jù)B,B’中對應(yīng)的點來獲得。利用CUDA架構(gòu)快速地進(jìn)行此運算,在CUDA架構(gòu)下程序被分為host端和device端,host端執(zhí)行CPU上的操作,device端執(zhí)行顯卡上的操作,內(nèi)核函數(shù)Kernel為CUDA運行在device端的并行計算函數(shù),因此對Q進(jìn)行分塊,分批處理查詢集合中的點,動態(tài)確定當(dāng)前可分配的最大Q分塊數(shù);對于一個Q分塊,計算分塊中的點和參考集合中所有像素點間鄰域的距離和坐標(biāo),采用插入排序法找到具有最小距離的前k個點的坐標(biāo)集合,kernel函數(shù)計算步驟如下Stepl :收集 RMatrix 和 QMatrix,在 device 端分配存儲空間,把 RMatrix、QMatrix拷貝給device端;在host端分配空間indexMatrix,存儲計算得到的最相似點坐標(biāo)
Step2 :查找顯存中剩余空間,確定每次可同時搜索的Q集合大小maxQueryNum,Step3 :根據(jù)maxQueryNum,對Q分塊,對Q的每一個分塊St印3. I :計算距離|#(r)g -2 ||釋)· ·|2Step3. 2 :找到距離最小的前k個最相似點集合Uq)Step 3. 3將(^..,(q)中點的坐標(biāo)拷貝到indexMatrix對應(yīng)位置的內(nèi)存中,所述步驟2. 3)中,輸入同樣為A,A’,B金字塔L層對應(yīng)的\,A' 圖像,輸出為B' P B' L中每個像素點的RG通道保存了由k-coherence搜索得到的最相似點的坐標(biāo)Qkcoho在用CUDA實現(xiàn)時,線程網(wǎng)格的分割為與圖像大小相對應(yīng),每個線程塊處理一個像素元素,它擁有的線程數(shù)為一個像素需要查找的coherence候選集個數(shù),通過一個預(yù)處理過程,對于A和A’中的每個點,找到k個與其最相似的點,把這些點的坐標(biāo)保存在紋理中。kernel函數(shù)計算步驟如下Stepl.在共享存儲器中,聲明類型為iht4的distance數(shù)組,xy分量存儲坐標(biāo),z分量存儲距離,聲明類型為uchar2的kcoh數(shù)組,把預(yù)處理得到的紋理中像素對應(yīng)的坐標(biāo)載A kcoh,Step2.每個線程訪問共享內(nèi)存,取出kcoh中的坐標(biāo),根據(jù)CUDA內(nèi)建函數(shù)blockldx. x, blockldx. y獲取待合成像素點位置,基于度量準(zhǔn)則,計算兩點鄰域的之間的distSt印3 :線程塊中的每個線程將計算得到的dist及其對應(yīng)的樣圖坐標(biāo)保存到distance數(shù)組中Step4:當(dāng)一個線程塊中所有線程都計算完畢時,用樹形規(guī)約算法找到具有最小dist的樣圖坐標(biāo),即為所求的最相似點坐標(biāo),采用用樹形規(guī)約算法搜索最小值,每次比較時,存儲在前半部分線程中的數(shù)據(jù)和存儲在后半部分線程中的數(shù)據(jù)相比較,取較小值更新前半部分的數(shù)據(jù),每次迭代后減半,直到最后剩下一個值,即為所求的最小值,數(shù)據(jù)單元之間的比較由多線程并行執(zhí)行,在CUDA架構(gòu)下,使用cudaMalIocHost函數(shù)直接在主機(jī)端內(nèi)存中取一塊頁面鎖定內(nèi)存。所述步驟2. 4)中,根據(jù)coherenceFac比較步驟2. 2) ,2. 3)計算得到的結(jié)果,得到 qBest 的取值,比較準(zhǔn)則如下若 d (qkcoh, q) > d(qglobal,q) (l+coherencefac*2L),則 qBest =
Qglobal,否則 QBest — Qkcoh,兩個鄰域的相似性度量準(zhǔn)則定義如下,同時比較A,A’和B,B’鄰域的特征向量d(p, q) = | FA(p)_FB(q) | L2+ Fa' (P)-Fb' (q) | L2,在RGB空間下,選取RGB顏色值作為特征向量;在YIQ空間下,選取亮度Y作為特征向量,將合成得到的新Y值與原有的IQ值組合還原成RGB圖像;對于藝術(shù)風(fēng)格學(xué)習(xí)應(yīng)用來說,使用亮度分布的平均值和方差對圖像的Y通道進(jìn)行線性變換,對原有的YIQ空間進(jìn)行轉(zhuǎn)化(remap)^(P) <= ~(P) ~ Ma) + Mb
σA其中Y(P)是圖像A中P點的亮度⑴值,μ Α和μ Β是圖像A的亮度⑴平均值,%和σΒ是圖像A的亮度(Y)方差,對A’做同樣的映射以保持一致性。
所述步驟3)中,對于A'圖,有一對對應(yīng)的高分辨率EHA'圖和降采樣得到的低分辨率A'圖,對輸出坐標(biāo)圖中的像素點,從EHA'中拷貝和其具有相同的塊結(jié)構(gòu)的顏色值,放大細(xì)節(jié)并創(chuàng)建高分辨率合成圖EHB'。
所述步驟3)中在RGB空間下,放大同時作用于RGB三個通道;在YIQ空間下,放大只對Y通道進(jìn)行。同時需要一張高分辨率的EHB圖,然后把放大后得到的Y通道值與EHB圖中的IQ通道值組合得到高分辨率的顏色圖EHB'。本發(fā)明的技術(shù)構(gòu)思為基于CUDA的并行圖像類比框架,同時采用適用于GPU的最相似鄰域查找策略來進(jìn)行全局搜索和適用于GPU的k-coherence搜索進(jìn)行一致性搜索,根據(jù)一致性參數(shù)的不同,平衡兩種搜索方法得到的結(jié)果,來決定最終的待合成點。兩個搜索過程都能并行地對每個像素點進(jìn)行最相似鄰域查找。在合成結(jié)束后,采用合成放大的方法來提高合成圖的分辨率。本方法在合成速度和質(zhì)量上都取得了令人滿意的結(jié)果?;贑UDA的快速圖像類比合成算法利用圖像金字塔分層合成,輸入為三張圖源圖像A,濾波后的圖像A’,源圖像B,輸出為濾波后的圖像B’。算法能學(xué)習(xí)得到兩幅具有相關(guān)性的圖像A和A’之間的關(guān)系,并將這種學(xué)習(xí)得到的關(guān)系作用于另一幅圖B上,生成B’,使得B到B’的變化在視覺上滿足A到A’的變化過程。假設(shè)P為A,A’中相同坐標(biāo)位置的一點,q為B,B’中相同坐標(biāo)位置的一點。合成的每一層中依次執(zhí)行超采樣(upsample)和校正(correction) 二個步驟。超采樣過程用來獲得更高分辨率的圖像。校正過程用來對待合成像素在樣圖中查找最相似點,最相似點的坐標(biāo)由全局搜索和k-coherence搜索共同決定。搜索時對于待合成點q記錄的都是在樣圖中相應(yīng)點的坐標(biāo)值。coherencefac為一致性參數(shù)。對于校正過程,分為全局搜索和k-coherence搜索,全局搜索能查找到在L2準(zhǔn)則下的最匹配像素,但由于L2準(zhǔn)則不能很好的度量感知相似性(perceptual similarity),因此加入k-coherence搜索進(jìn)行調(diào)節(jié)。本發(fā)明的有益效果主要表現(xiàn)在用CUDA框架來進(jìn)行并行圖像類比合成,易于實現(xiàn)。本方法同時采用全局搜索和k-coherence搜索在GPU上查找最相似鄰域,基于GPU全局最相似鄰域查找策略與ANN查找方法相比,速度有較大提高。與現(xiàn)有方法相比,本方法適用于圖像類比框架中的各種應(yīng)用,但大大加快了合成速度,且合成質(zhì)量也令人滿意。該方法的主要優(yōu)點如下(I)思路新穎。利用CUDA架構(gòu)進(jìn)行圖像類比算法設(shè)計,突破傳統(tǒng)方法的時間限制,具有較大創(chuàng)新意義。(2)實現(xiàn)簡單。在C語言環(huán)境下完成對GPU并行處理架構(gòu)的調(diào)用,代碼編寫容易。(3)運行速度快,質(zhì)量高。該方法充分利用GPU的并行性,合成圖像速度快。全局搜索和k-coherence搜索的結(jié)合大大提高了合成質(zhì)量。(4)方便易行。用戶無需輸入復(fù)雜的參數(shù),只需提供輸入圖像,選擇所需應(yīng)用,系統(tǒng)自動給出參數(shù),為用戶提供合成結(jié)果。(5)適用范圍廣本方法適用于圖像類比框架中的各種應(yīng)用,合成效果好。


圖I為不同應(yīng)用所需的輸入圖像、采用的顏色空間、coherenceFac建議取值示意圖。圖2為基于CUDA的快速圖像類比合成方法的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。參照圖I和圖2,一種基于CUDA的快速圖像類比合成方法,包括如下步驟I)生成源圖像A,濾波后的圖像A’,源圖像B的高斯金字塔2)當(dāng)前合成第L層,對金字塔從粗糙層到精細(xì)層循環(huán)做2. I)對B' L+1超采樣得到B' L2.2)對B' ^中的每個像素點q,采用基于GPU的全局搜索策略找到全局搜索最優(yōu)
解 Qglobal2.3)對K L中的每個像素點q,采用基于GPU的k-coherence搜索策略找到一致性搜索最優(yōu)解qkrah2. 4)如果全局搜索得到的結(jié)果更好,則將qBest賦值為qgl()bal,否則將qBest賦值為QkcohO把qBest在A' L中的對應(yīng)坐標(biāo)保存在B' Jq)中。步驟2. 2) ,2.3), 2. 4)可循環(huán)進(jìn)行多次。3)對B’做合成放大,得到高分辨率的EHB’。本算法在實現(xiàn)時利用CUDA編程模型中線程、線程塊、線程塊網(wǎng)格的層次結(jié)構(gòu),合理劃分線程塊、線程塊網(wǎng)格,合理分配存儲空間減少內(nèi)存訪問時間來加快合成速度。所述步驟2. I)中,要對已有的B' M超采樣得到B' P根據(jù)圖片大小分配線程網(wǎng)格和線程塊。將B' M與紋理存儲器綁定。每個線程執(zhí)行的操作為得到B' Jp)的坐標(biāo)(u, V),取得 B' L+1 中(u/2, v/2)點顏色值 color, B' L(p)的值為 color*2+(u% 2, v%2)。所述步驟2.2)中,輸入為A,A’,B金字塔L層對應(yīng)的\,A, y 圖像,輸出為B' L, Bi L中每個像素點的RG通道保存了由全局搜索得到的最相似點的坐標(biāo)qgl()bal,同時保留了其對應(yīng)的距離,以便和2. 3)得到的結(jié)果進(jìn)行比較。對B' L中的一點q,根據(jù)q點在Bl, Bi L的鄰域在Ay K' L中找到和其最相似的點。該問題可以歸納為高維度的最近k鄰域查找問題。設(shè)R = Ir1, r2, , rj為參考集合,Q = Iq1, q2, . . . , qj為查詢集合。對于紋理合成來說,m為樣圖中的點個數(shù),η為查詢點個數(shù)。NO代表鄰域向量,N(r)和N(q)為收集圖像中鄰域得到的向量。公式(I)表示,對于查詢集合Q中的每個點q,在R中根據(jù)L2度量準(zhǔn)則找到k個與其最相似點的集合C1..,(q),也就是對于每個點q,在集合R中找到和其鄰域距離最小的前k個點,Cl k(q) = argminreR ||#(r)-(r^R,q^Q) (I)分解該運算,得到公式(2):Cl k⑷=I喊;+argminr』#(r;| -2|釋)·#⑷|2) (2)從公式⑵中可以看出|#(的|;不依賴于R中點,|#(r)g也不依賴于查詢點q,因此
對于q點與R中點比較,只要計算|#(r)g-2|#(r)·#⑷I2部分即可。收集鄰域向量得到參考集合對應(yīng)的矩陣RMatrix = Ν(Γι),N(r2),· · ·,N(rn) |,查詢集合對應(yīng)的矩陣QMatrix =N(Qi), N(q2), , N(qn) I。對于全局搜索來說,k取1,RMatrix根據(jù)A,A’中對應(yīng)的點來獲得,QMatrix根據(jù)B,B’中對應(yīng)的點來獲得。利用CUDA架構(gòu)快速地進(jìn)行此運算,在CUDA架構(gòu)下程序被分為host端和device端,host端執(zhí)行CPU上的操作,device端執(zhí)行顯卡上的操作,內(nèi)核函數(shù)Kernel為CUDA運行在device端的并行計算函數(shù),因此對Q進(jìn)行分塊,分批處理查詢集合中的點,動態(tài)確定當(dāng)前可分配的最大Q分塊數(shù);對于一個Q分塊,計算分塊中的點和參考集合中所有像素點間鄰域的距離和坐標(biāo),采用插入排序法找到具有最小距離的前k個點的坐標(biāo)集合,kernel函數(shù)計算步驟如下Stepl :收集 RMatrix 和 QMatrix,在 device 端分配存儲空間,把 RMatrix、QMatrix拷貝給device端;在host端分配空間indexMatrix,存儲計算得到的最相似點坐標(biāo)Step2 :查找顯存中剩余空間,確定每次可同時搜索的Q集合大小maxQueryNum,Step3 :根據(jù)maxQueryNum,對Q分塊,對Q的每一個分塊 St印3. I :計算距離|#(r)|; -2 ||釋)· ·|2Step3. 2 :找到距離最小的前k個最相似點集合Step 3. 3將(^..,(q)中點的坐標(biāo)拷貝到indexMatrix對應(yīng)位置的內(nèi)存中,所述步驟2. 3)中輸入同樣為A,A’,B金字塔L層對應(yīng)的\,A' 圖像,輸出為B, l,B' l中每個像素點的RG通道保存了由k-coherence搜索得到的最相似點的坐標(biāo)Qkcoho在用CUDA實現(xiàn)時,線程網(wǎng)格的分割為與圖像大小相對應(yīng),每個線程塊處理一個像素元素,它擁有的線程數(shù)為一個像素需要查找的coherence候選集個數(shù)。通過一個預(yù)處理過程,對于A和A’中的每個點,找到k個與其最相似的點,把這些點的坐標(biāo)保存在紋理中。計算步驟如下(kernel函數(shù)):Stepl.在共享存儲器中,聲明類型為iht4的distance數(shù)組,xy分量存儲坐標(biāo),z分量存儲距離,聲明類型為uchar2的kcoh數(shù)組,把預(yù)處理得到的紋理中像素對應(yīng)的坐標(biāo)載A kcoh,Step2.每個線程訪問共享內(nèi)存,取出kcoh中的坐標(biāo),根據(jù)CUDA內(nèi)建函數(shù)blockldx. x, blockldx. y獲取待合成像素點位置,基于度量準(zhǔn)則,計算兩點鄰域的之間的distStep3 :線程塊中的每個線程將計算得到的dist及其對應(yīng)的樣圖坐標(biāo)保存到distance數(shù)組中Step4:當(dāng)一個線程塊中所有線程都計算完畢時,用樹形規(guī)約算法找到具有最小dist的樣圖坐標(biāo),即為所求的最相似點坐標(biāo),樹形規(guī)約算法可有效解決存取共享內(nèi)存帶寬沖突的問題。用樹形規(guī)約算法搜索最小值,每次比較時,存儲在前半部分線程中的數(shù)據(jù)和存儲在后半部分線程中的數(shù)據(jù)相比較,取較小值更新前半部分的數(shù)據(jù)。每次迭代后減半,直到最后剩下一個值,即為所求的最小值。數(shù)據(jù)單元之間的比較由多線程并行執(zhí)行,速度較快。在CUDA架構(gòu)下,當(dāng)從設(shè)備端復(fù)制數(shù)據(jù)到主機(jī)端內(nèi)存時,數(shù)據(jù)一般先由直接內(nèi)存訪問(DMA)模式復(fù)制到一塊頁面鎖定內(nèi)存,再由頁面鎖定內(nèi)存復(fù)制到主機(jī)端內(nèi)存。為避免重復(fù)的內(nèi)存賦值,優(yōu)化主機(jī)端和設(shè)備端之間的內(nèi)存?zhèn)鬏?,可使用cudaMalIocHost函數(shù)直接在主機(jī)端內(nèi)存中取一塊頁面鎖定內(nèi)存,該內(nèi)存可以被設(shè)備端直接訪問。頁面鎖定內(nèi)存強制讓系統(tǒng)在物理內(nèi)存中完成內(nèi)存申請和釋放,不參與頁交換,比可分頁內(nèi)存可在更高帶寬下讀寫,能有效地減少數(shù)據(jù)寫回時間,提高執(zhí)行效率。所述步驟2. 4)中,根據(jù)coherenceFac比較步驟2. 2) ,2. 3)計算得到的結(jié)果,得到qBest 的取值。比較準(zhǔn)則如下若 d(qkcoh, q) > d(qglobal, q) (l+coherencefac*2L),貝丨J qBest =
Qglobal,否貝丨J QBest — Qkcoh。 兩個鄰域的相似性度量準(zhǔn)則定義如下,同時比較A,A’和B,B’鄰域的特征向量d(p, q) = | Fa (p) -Fb (q) | L2+ |F/ (P)-Fb' (q) | |L2。對于不同應(yīng)用,可選取不同的特征F( ·)和coherenceFac。對于特征選取,在不同顏色空間中計算鄰域距離時F(·)的選取也不同。在RGB空間下,選取RGB顏色值作為特征向量。在HQ空間下,選取亮度Y作為特征向量,將合成得到的新Y值與原有的IQ值組合還原成RGB圖像。圖I給出了對于不同應(yīng)用輸入樣圖、顏色空間及coherenceFac的選取建議。對于藝術(shù)風(fēng)格學(xué)習(xí)應(yīng)用來說,只把圖像轉(zhuǎn)到Y(jié)IQ空間仍會產(chǎn)生圖像鄰域的直方圖重疊,使用亮度分布的平均值和方差對圖像的Y通道進(jìn)行線性變換,對原有的YIQ空間進(jìn)行轉(zhuǎn)化(remap)^(P) <= ~(P) ~ Ma) + Mb
σA其中Y(P)是圖像A中P點的亮度⑴值,μ Α和μ Β是圖像A的亮度⑴平均值。%和σΒ是圖像A的亮度(Y)方差。對A’做同樣的映射以保持一致性。所述步驟3)中采用合成放大(synthesis magnification)來快速地根據(jù)已有的高分辨率樣圖放大得到高分辨率的合成圖。對于A'圖,有一對對應(yīng)的高分辨率EHA'圖和降采樣得到的低分辨率A'圖。對輸出坐標(biāo)圖中的像素點,從EHA'中拷貝和其具有相同的塊結(jié)構(gòu)的顏色值,放大細(xì)節(jié),創(chuàng)建高分辨率合成圖EHB'。合成放大對RGB空間和YIQ空間都適用。在RGB空間下,放大同時作用于RGB三個通道。在YIQ空間下,放大只對Y通道進(jìn)行。同時需要一張高分辨率的EHB圖,然后把放大后得到的Y通道值與EHB圖中的IQ通道值組合得到高分辨率的顏色圖EHB'。
權(quán)利要求
1.一種基于CUDA的快速圖像類比合成方法,其特征在于所述合成方法包括如下步驟 1)生成源圖像A,濾波后的圖像A’,源圖像B的高斯金字塔; 2)當(dāng)前合成第L層,對金字塔從粗糙層到精細(xì)層執(zhí)行以下過程 2.I)對B' w超采樣得到B' L; 2.2)對B' ^中的每個像素點q,采用基于GPU的全局搜索策略找到全局搜索最優(yōu)解Qglobal 2. 3)對K L中的每個像素點q,采用基于GPU的k-coherence搜索策略找到一致性搜索最優(yōu)解qkrah ; 2. 4)如果全局搜索得到的結(jié)果更好,則將qBest賦值為qgl()bal,否則將qBest賦值為qkc;()h, L中的對應(yīng)坐標(biāo)保存在B' Jq)中; 2.5)循環(huán)執(zhí)行步驟2. 2) 2. 4)。根據(jù)設(shè)定的次數(shù),得到濾波后的圖像B’ ; 3)對濾波后的圖像B’做合成放大,得到高分辨率的EHB’。
2.如權(quán)利要求I所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟2. I)中,將B' L+1與紋理存儲器綁定,每個線程執(zhí)行的操作為得到B' L(p)的坐標(biāo)(U,V),取得 B' L+1 中(u/2, v/2)點顏色值 color, B' L(p)的值為 color*2+(u% 2, 2)。
3.如權(quán)利要求2所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟2.2)中,輸入為A,A’,B金字塔L層對應(yīng)的\,A' 圖像,輸出為B' LO B' l中每個像素點的RG通道保存了由全局搜索得到的最相似點的坐標(biāo)qgl()bal,同時保留了其對應(yīng)的距離。對K L中的一點q,根據(jù)q點在4,B' L的鄰域在\,八'L中找到和其最相似的點。
4.如權(quán)利要求3所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟2. 2)中,所述全局搜索策略的過程為 設(shè)R = Ir1, r2, , rm}為參考集合,Q = Iq1, q2, . . . , qn}為查詢集合。對于紋理合成來說,m為樣圖中的點個數(shù),η為查詢點個數(shù)。NO代表鄰域向量,N(r)和N(q)為收集圖像中鄰域得到的向量。公式(I)表示,對于查詢集合Q中的每個點q,在R中根據(jù)L2度量準(zhǔn)則找到k個與其最相似點的集合C1.. k (q),也就是對于每個點q,在集合R中找到和其鄰域距離最小的前k個點,CL.k(Φ = argminreR ||#(r)-(r^R,q^Q) (I) 分解該運算,得到公式(2):Cl k(q) = I喊;+argminr』#(r;| -2|釋)·#⑷|2) (2) 從公式(2)中可以看出卜(的β不依賴于R中點,|#(r;|也不依賴于查詢點q,因此對于q點與R中點比較,只要計算|#(r;| -2|#(r)·#⑷I2部分即可。收集鄰域向量得到參考集合對應(yīng)的矩陣Matrix = INCr1), N(r2),…,N(rn) |,查詢集合對應(yīng)的矩陣QMatrix =N(Qi), N(q2), , N(qn) I。對于全局搜索來說,k取1,RMatrix根據(jù)A,A’中對應(yīng)的點來獲得,QMatrix根據(jù)B,B’中對應(yīng)的點來獲得。
利用CUDA架構(gòu)快速地進(jìn)行此運算,在CUDA架構(gòu)下程序被分為host端和device端,host端執(zhí)行CPU上的操作,device端執(zhí)行顯卡上的操作,內(nèi)核函數(shù)Kernel為CUDA運行在device端的并行計算函數(shù),因此對Q進(jìn)行分塊,分批處理查詢集合中的點,動態(tài)確定當(dāng)前可分配的最大Q分塊數(shù);對于一個Q分塊,計算分塊中的點和參考集合中所有像素點間鄰域的距離和坐標(biāo),采用插入排序法找到具有最小距離的前k個點的坐標(biāo)集合,kernel函數(shù)計算步驟如下 Stepl :收集 RMatrix 和 QMatrix,在 device 端分配存儲空間,把 RMatrix、QMatrix 拷貝給device端;在host端分配空間indexMatrix,存儲計算得到的最相似點坐標(biāo)Step2 :查找顯存中剩余空間,確定每次可同時搜索的Q集合大小maxQueryNum, Step3 :根據(jù)maxQueryNum,對Q分塊,對Q的每一個分塊 St印3. I :計算距離|#(r)g -2|_··|2 Step3. 2 :找到距離最小的前k個最相似點集合 Step 3. 3^CL.k(q)中點的坐標(biāo)拷貝到indexMatrix對應(yīng)位置的內(nèi)存中。
5.如權(quán)利要求4所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟2.3)中,輸入同樣為A,A’,B金字塔L層對應(yīng)的\,A' 圖像,輸出為B' LO B' l中每個像素點的RG通道保存了由k-coherence搜索得到的最相似點的坐標(biāo)qke()h。在用CUDA實現(xiàn)時,線程網(wǎng)格的分割為與圖像大小相對應(yīng),每個線程塊處理一個像素元素,它擁有的線程數(shù)為一個像素需要查找的coherence候選集個數(shù),通過一個預(yù)處理過程,對于A和A’中的每個點,找到k個與其最相似的點,把這些點的坐標(biāo)保存在紋理中。
kernel函數(shù)計算步驟如下 Stepl.在共享存儲器中,聲明類型為iht4的distance數(shù)組,xy分量存儲坐標(biāo),z分量存儲距離,聲明類型為uchar2的kcoh數(shù)組,把預(yù)處理得到的紋理中像素對應(yīng)的坐標(biāo)載入kcoh, Step2.每個線程訪問共享內(nèi)存,取出kcoh中的坐標(biāo),根據(jù)CUDA內(nèi)建函數(shù)blockldx. x,blockldx. y獲取待合成像素點位置,基于度量準(zhǔn)則,計算兩點鄰域的之間的dist Step3 :線程塊中的每個線程將計算得到的dist及其對應(yīng)的樣圖坐標(biāo)保存到distance數(shù)組中 Step4 :當(dāng)一個線程塊中所有線程都計算完畢時,用樹形規(guī)約算法找到具有最小dist的樣圖坐標(biāo),即為所求的最相似點坐標(biāo), 采用用樹形規(guī)約算法搜索最小值,每次比較時,存儲在前半部分線程中的數(shù)據(jù)和存儲在后半部分線程中的數(shù)據(jù)相比較,取較小值更新前半部分的數(shù)據(jù),每次迭代后減半,直到最后剩下一個值,即為所求的最小值,數(shù)據(jù)單元之間的比較由多線程并行執(zhí)行,在CUDA架構(gòu)下,使用cudaMalIocHost函數(shù)直接在主機(jī)端內(nèi)存中取一塊頁面鎖定內(nèi)存。
6.如權(quán)利要求5所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟2. 4)中,根據(jù)coherenceFac比較步驟2. 2) ,2. 3)計算得到的結(jié)果,得到qBest的取值,比較準(zhǔn)則如下若 d(qkcoh, q) > d(qglobal, q) (l+coherencefac*2L),則 qBest = qgl()bal,否則 qBest ^kcoh 兩個鄰域的相似性度量準(zhǔn)則定義如下,同時比較A,A’和B,B’鄰域的特征向量 d(p,q) = I I Fa (p)-Fb (q) | L2+ |F/ (P)-Fb' (q) | |L2, 在RGB空間下,選取RGB顏色值作為特征向量;在YIQ空間下,選取亮度Y作為特征向量,將合成得到的新Y值與原有的IQ值組合還原成RGB圖像;對于藝術(shù)風(fēng)格學(xué)習(xí)應(yīng)用來說,使用亮度分布的平均值和方差對圖像的Y通道進(jìn)行線性變換,對原有的YIQ空間進(jìn)行轉(zhuǎn)化其中Y(P)是圖像A中P點的亮度⑴值,μ Α和μ Β是圖像A的亮度⑴平均值,O A和σΒ是圖像A的亮度(Y)方差,對Α’做同樣的映射以保持一致性。
7.如權(quán)利要求I 6之一所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟3)中,對于A'圖,有一對對應(yīng)的高分辨率EHA'圖和降采樣得到的低分辨率k'圖,對輸出坐標(biāo)圖中的像素點,從EHA'中拷貝和其具有相同的塊結(jié)構(gòu)的顏色值,放大細(xì)節(jié)并創(chuàng)建高分辨率合成圖EHB'。
8.如權(quán)利要求7所述的一種基于CUDA的快速圖像類比合成方法,其特征在于所述步驟3)中在RGB空間下,放大同時作用于RGB三個通道;在HQ空間下,放大只對Y通道進(jìn)行。同時需要一張高分辨率的EHB圖,然后把放大后得到的Y通道值與EHB圖中的IQ通道值組合得到高分辨率的顏色圖EHB'。
全文摘要
一種基于CUDA的快速圖像類比合成方法,包括如下步驟1)生成源圖像A,濾波后的圖像A’,源圖像B的高斯金字塔;2)當(dāng)前合成第L層,對金字塔從粗糙層到精細(xì)層執(zhí)行以下過程2.1)對B′L+1超采樣得到B′L;2.2)對B′L中的每個像素點q,采用基于GPU的全局搜索策略找到全局搜索最優(yōu)解qglobal;2.3)對B′L中的每個像素點q,采用基于GPU的k-coherence搜索策略找到一致性搜索最優(yōu)解qkcoh;2.4)如果全局搜索得到的結(jié)果更好,則將qBest賦值為qglobal,否則將qBest賦值為qkcoh,把qBest在A′L中的對應(yīng)坐標(biāo)保存在B′L(q)中;2.5)循環(huán)執(zhí)行步驟2.2)~2.4)設(shè)定次數(shù);3)對B’做合成放大,得到高分辨率的EHB’。本發(fā)明提升合成速度、提高合成質(zhì)量。
文檔編號G06T5/50GK102646271SQ20121004096
公開日2012年8月22日 申請日期2012年2月22日 優(yōu)先權(quán)日2012年2月22日
發(fā)明者史曉穎, 湯穎, 范菁, 董天陽 申請人:浙江工業(yè)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1