本發(fā)明涉及圖像信息處理領(lǐng)域,特別涉及一種用于圖像拼接的最優(yōu)縫合線搜索方法。
背景技術(shù):
圖像是人類獲取視覺信息的一種重要途徑。全景圖像(視頻)因其能給人以良好的沉浸式體驗(yàn),越來越受到人們的關(guān)注。廣角鏡頭在一定程度上可以獲取寬視角的圖像,但是其通常具有以下缺點(diǎn),如拍攝范圍過大導(dǎo)致細(xì)節(jié)分辨率下降,圖像邊緣扭曲變形,鏡頭過于昂貴。由此,采用多鏡頭拼接的方法成為獲取全景圖的一種有效方法。全景圖像拼接,具體而言就是將多幅來自同一場景的有重疊區(qū)域的小尺寸圖像,經(jīng)過配準(zhǔn)和變換之后,合成為一幅高質(zhì)量的、較大的全景圖。該技術(shù)在計(jì)算機(jī)視覺、圖像處理和計(jì)算機(jī)圖形學(xué)等方面都有著重要的應(yīng)用。
現(xiàn)有技術(shù)中的圖像拼接方法,其步驟如圖1所示,包括圖像輸入、圖像預(yù)處理、圖像配準(zhǔn)、圖像變換、圖像融合、輸出全景圖。
圖像預(yù)處理,包括數(shù)字圖像處理的基本操作(如去噪、邊緣提取、直方圖處理等)、建立圖像的匹配模板以及對圖像進(jìn)行某種變換(如傅里葉變換、小波變換等)等操作。
圖像配準(zhǔn),就是采用一定的匹配策略,找出待拼接圖像中的模板或特征點(diǎn)在參考圖像中對應(yīng)的位置,進(jìn)而確定兩幅圖像之間的變換關(guān)系。
圖像變換,就是根據(jù)模板或者圖像特征之間的對應(yīng)關(guān)系,計(jì)算出數(shù)學(xué)模型中的各參數(shù)值,從而建立兩幅圖像的數(shù)學(xué)變換模型,進(jìn)而根據(jù)建立的數(shù)學(xué)轉(zhuǎn)換模型,將待拼接圖像轉(zhuǎn)換到參考圖像的坐標(biāo)系中。
圖像融合,就是將待拼接圖像的重合區(qū)域進(jìn)行融合得到拼接重構(gòu)的平滑無縫全景圖像。
在圖像融合的過程中,如果圖像序列的重疊區(qū)域中存在運(yùn)動(dòng)的物體,通常會(huì)造成同一物點(diǎn)在圖像重疊區(qū)域中的絕對位置不同,即產(chǎn)生“鬼影(重影)現(xiàn)象”,極大地?fù)p害了融合的效果。最優(yōu)縫合線法因其對輸入拼接圖像重疊比例限制小等優(yōu)點(diǎn)成為為解決“鬼影現(xiàn)象”,提高融合的效果的首選方案。
所述最優(yōu)縫合線搜索即是尋找一條自圖像頂端到底端的最優(yōu)路徑使得縫合線經(jīng)過位置的差異圖像像素值之和最小。差異圖像一般可定義為兩幅圖像重疊區(qū)域的差圖。換言之,即將縫合線經(jīng)過位置的差異圖像像素值之和定義為一個(gè)最小化目標(biāo)函數(shù),尋找使得該目標(biāo)函數(shù)最小的一條縫合線,是一個(gè)典型的組合優(yōu)化問題。
有關(guān)最優(yōu)縫合線搜索方面的研究,目前常用的方法包括傳統(tǒng)的基于圖切割、最短路徑、動(dòng)態(tài)規(guī)劃的方法和非傳統(tǒng)的基于智能優(yōu)化算法的方法,如模擬退火、遺傳算法等。傳統(tǒng)方法最大的缺陷在于無法找到全局最優(yōu),如專利公開號為CN103489154A的專利文獻(xiàn),公開了一種基于目標(biāo)塊檢測的縫合線實(shí)時(shí)調(diào)整方法,其能夠?qū)崟r(shí)對縫合線進(jìn)行局部調(diào)整,使縫合線繞開運(yùn)動(dòng)目標(biāo),避免縫合線的全局跳變,但無法找到全局最優(yōu)的縫合線?;谥悄軆?yōu)化算法的方法在理論上可以找到全局最優(yōu),因此,在最優(yōu)縫合線搜索方面的應(yīng)用越來越廣泛。
一般地,為求得圖像在每行上的最優(yōu)拼接點(diǎn),基于智能優(yōu)化算法的最優(yōu)縫合線搜索方法需要定義一個(gè)與圖像像素高相等維數(shù)的向量作為染色體,其中染色體的每一位基因代表每一行圖像的最優(yōu)拼接點(diǎn)??紤]到圖像高度(像素個(gè)數(shù))可能是幾千甚至上萬,如對于3840×1920(寬×高)的圖像,為尋找最優(yōu)縫合線,需要定義一個(gè)1920維的向量,一般的智能優(yōu)化算法會(huì)隨著搜索空間(1920個(gè)變量)的增大而性能急劇降低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:提供一種用于圖像拼接的最優(yōu)縫合線搜索方法,能處理大規(guī)模決策變量,有效提高縫合線的質(zhì)量。
本發(fā)明的解決方案是這樣實(shí)現(xiàn)的:一種用于圖像拼接的最優(yōu)縫合線搜索方法,其特征在于,包括以下步驟:
S1、構(gòu)建圖像A和B的差圖diffAB,設(shè)已知圖像A和B重疊區(qū)域相同、大小相等且已配準(zhǔn),則圖像A和B的差圖diffAB為圖像A和B的像素值歸一化之后的差的絕對值,其中圖像A、B和差圖diffAB的寬和高分別為W和H;
S2、參數(shù)設(shè)置,設(shè)進(jìn)化代數(shù)為maxGen,種群規(guī)模為N,當(dāng)前代數(shù)為gen,且gen=1;初始化種群為S,是指隨機(jī)生成N條備選縫合線,即N個(gè)長度為H的染色體;
S3、基于差圖diffAB計(jì)算N條備選縫合線的適應(yīng)度,挑選出適應(yīng)度值最大的染色體Smin;
S4、將染色體的H個(gè)變量隨機(jī)分為k組,即k個(gè)子染色體;
S5、對分組后的變量逐組優(yōu)化,每組運(yùn)行T代;
S6、輸出經(jīng)步驟S5逐組優(yōu)化后的當(dāng)前適應(yīng)度值最大的一個(gè)染色體Smax作為最優(yōu)縫合線s。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S1之前,還包括圖像灰度化處理步驟,具體為將彩色圖像A和B轉(zhuǎn)換為灰度圖像。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S1中圖像A和B的差圖diffAB具體為:
diffABij=abs(Aij-Bij)/max(Aij,Bij),其中i和j表示圖像的第i行和第j列。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S2中隨機(jī)生成N條備選縫合線具體為:
隨機(jī)生成N個(gè)長度為H的向量,向量中每個(gè)變量的值為整數(shù)且在閉區(qū)間[1,W]內(nèi)。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S3中基于差圖diffAB計(jì)算N條備選縫合線的適應(yīng)度的方法具體為:
設(shè)備選縫合線為Si,其適應(yīng)度值為
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S4中將染色體的H個(gè)變量隨機(jī)分為k組的具體方法為:
將自然數(shù)列1到H隨機(jī)打亂,選取第1個(gè)到第個(gè)變量作為第一組變量,第個(gè)到第個(gè)作為第二組變量,依次類推,將第個(gè)到第變量作為第k-1組變量,剩余變量作為第k組變量,即前k-1組每組個(gè)變量,第k組個(gè)變量。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,所述步驟S5具體包括:
S5.1、基于每段子染色體構(gòu)造新的染色體種群,設(shè)基于第i組變量構(gòu)建染色體種群Si,具體操作為將當(dāng)前種群S的每個(gè)染色體中除第i組變量之外的所有變量的值用Smin染色體相應(yīng)位置的變量值代替;
S5.2、計(jì)算新染色體種群的適應(yīng)度值,基于差圖diffAB計(jì)算種群Si中染色體的適應(yīng)度值,挑選出適應(yīng)度值最大的染色體Smin;
S5.3、基于染色體的適應(yīng)度值,使用輪賭盤策略選擇出N個(gè)較好的染色體;
S5.4、針對步驟S5.3中選擇出的較好的染色體,使用交叉變異算子生成新的N個(gè)染色體。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S5.3中使用輪賭盤策略選擇出N個(gè)較好的染色體的方法具體為:
設(shè)有個(gè)體sa,sb,sc對應(yīng)的適應(yīng)度分別為2,3,1,其相應(yīng)的累計(jì)概率則為2/6,(2+3)/6,(2+3+1)/6,生成一個(gè)隨機(jī)數(shù)為rand,若rand<2/6,選中個(gè)體sa,如果2/6<rand<(2+3)6,選中個(gè)體sb,如果(2+3)/6<rand<(2+3+1)/6,選中個(gè)體sc。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,在所述步驟S5.4中使用交叉變異算子生成新的N個(gè)染色體的方法具體為:
交叉算子:首先隨機(jī)從種群S中選擇兩個(gè)個(gè)體作為父代染色體,設(shè)為s1和s2,每個(gè)染色體即代表一條備選縫合線,且有H個(gè)基因位,每個(gè)基因位代表了一個(gè)縫合點(diǎn);其次檢測s1和s2是否滿足交叉條件,即s1和s2中是否存在起止位置相同的基因序列且其起止位置的基因值相等,若不滿足則重新選擇兩個(gè)個(gè)體,否則進(jìn)行交叉操作,即交換s1和s2中處于該段基因序列除起止位置的基因值之外的其他基因值;
變異算子:首先從交叉操作產(chǎn)生的新種群中隨機(jī)選擇一個(gè)個(gè)體,記為s3;其次,針對每一位基因(從1到H),以概率0.9判別是否進(jìn)行變異操作,即若rand<0.9,不進(jìn)行變異操作,否則執(zhí)行變異操作,其中rand為一個(gè)位于0到1之間的隨機(jī)數(shù);然后,針對要進(jìn)行變異的基因位進(jìn)行如下處理,如第k個(gè)基因位,若其相鄰兩個(gè)基因位的值c_k-1和c_k+1相等,則等概率將c_k-1,c_k或c_k+1的賦值于c_k;若其相鄰兩個(gè)基因位的值c_k-1和c_k+1相差為1,則令c_k=c_k-1;否則不進(jìn)行任何操作。
本發(fā)明的另一技術(shù)方案在于在上述基礎(chǔ)之上,所述步驟S5具體包括,初始化i=1:
S5.1、基于第i組變量構(gòu)建染色體種群Si,具體操作為將當(dāng)前種群S的每個(gè)染色體中除第i組變量之外的所有變量的值用Smin染色體相應(yīng)位置的變量值代替;此外,令t=1;
S5.2、基于差圖diffAB計(jì)算種群Si中染色體的適應(yīng)度值,挑選出適應(yīng)度值最大的染色體Smin;
S5.3、基于染色體的適應(yīng)度值,使用輪賭盤策略選擇出N個(gè)較好的染色體;
S5.4、針對步驟S5.3中選擇出的較好的染色體,使用交叉變異算子生成新的N個(gè)染色體;
S5.5、令gen=gen+1,t=t+1,若t小于T,則跳轉(zhuǎn)到S5.3;
否則
令i=i+1,若i≤k,則跳轉(zhuǎn)到步驟S1;
否則
跳轉(zhuǎn)到步驟S4,若gen大于maxGen,則跳轉(zhuǎn)到第六步。
本發(fā)明所述的用于圖像拼接的最優(yōu)縫合線搜索方法,其將圖象重疊區(qū)域的差圖作為搜索空間,定義了與圖像高相等維數(shù)的向量作為染色體(備選縫合線),其中,染色體的每一位基因代表了差圖中每一行的最優(yōu)拼接點(diǎn)。染色體(備選縫合線)的適應(yīng)度值定義為差圖上拼接點(diǎn)所在位置的像素值之和的倒數(shù)。同時(shí),尋優(yōu)過程中還利用了分而治之的策略,即將每個(gè)染色體隨機(jī)分為若干段子染色體,分別優(yōu)化各段子染色體,最后組合子染色體優(yōu)化的結(jié)果作為最優(yōu)縫合線。通過隨機(jī)分組優(yōu)化策略,可以處理大規(guī)模決策變量,有效提高縫合線的質(zhì)量。因此,本發(fā)明所述的最優(yōu)縫合線搜索方法,較之于現(xiàn)有的基于圖切割等縫合線搜索的方法,不僅能更準(zhǔn)確地找到全局最優(yōu)縫合線,而且有效提高了圖像拼接效果。
附圖說明
構(gòu)成本發(fā)明的一部分的附圖用來提供對本發(fā)明的進(jìn)一步理解,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。
圖1為現(xiàn)有技術(shù)中圖像拼接方法的基本流程圖。
圖2為本發(fā)明一種實(shí)施方式所述最優(yōu)縫合線搜索方法的流程圖;
圖3為圖2中最優(yōu)縫合線搜索方法中的交叉算子操作示意圖;
圖4為本發(fā)明一種實(shí)施方式所述最優(yōu)縫合線搜索方法中兩幅重疊區(qū)域相同、大小相等且已配準(zhǔn)的源圖像;
圖5為圖4中兩幅圖像的像素值歸一化差圖;
圖6為圖4中兩幅圖像采用本發(fā)明所述最優(yōu)縫合線搜索方法得到的拼接圖像及縫合線。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)描述,本部分的描述僅是示范性和解釋性,不應(yīng)對本發(fā)明的保護(hù)范圍有任何的限制作用。此外,本領(lǐng)域技術(shù)人員根據(jù)本文件的描述,可以對本文件中實(shí)施例中以及不同實(shí)施例中的特征進(jìn)行相應(yīng)組合。
本發(fā)明實(shí)施例如下,請參見圖2,一種用于圖像拼接的最優(yōu)縫合線搜索方法,具體實(shí)施步驟如下:
第一步、構(gòu)建圖像A和B的差圖diffAB,已知圖像A和B重疊區(qū)域相同、大小相等且已配準(zhǔn),構(gòu)建圖像A和B的差圖diffAB;其中A、B和diffAB的寬和高(像素個(gè)數(shù))分別記為W和H。具體操作方法如下:
1)若A和B均為灰度圖像,則diffAB定義為圖像A和B的像素值歸一化之后的差的絕對值,即diffABij=abs(Aij-Bij)/max(Aij,Bij),i和j表示圖像的第i行和第j列。
2)若A和B為彩色圖像,需將A和B先轉(zhuǎn)換為灰度圖像,然后按照1)計(jì)算diffAB,其中可使用Matlab 2010(a)提供的函數(shù)rgb2grey進(jìn)行彩色圖到灰度圖的轉(zhuǎn)換;
第二步、初始化智能優(yōu)化算法參數(shù),包括進(jìn)化代數(shù)(maxGen),種群規(guī)模(N),當(dāng)前代數(shù)(gen)為1;初始化種群S即指隨機(jī)生成N條備選縫合線(N個(gè)長度為H的染色體);具體操作方法如下:
1)令maxGen=20;N=100;gen=0;
2)隨機(jī)生成N個(gè)長度為H的向量,向量中每個(gè)變量的值為整數(shù)且在閉區(qū)間[1,W]內(nèi);其中可使用Matlab 2010(a)提供的函數(shù)randi(W,[1,H])生成滿足條件的1個(gè)向量。譬如si=(3 4 5 6 7 7 6 5),則表示待拼接的兩幅圖像每行的最優(yōu)拼接點(diǎn)自上而下,依次為第3,4、5、6、7、7、6、5個(gè)像素(從左至右)所在的位置,其中H=8。因此最終的全景圖中,選擇使用圖像A位于縫合線左側(cè)的部分,圖像B位于縫合線右側(cè)的部分,或者A位于縫合線右側(cè)的部分,圖像B位于縫合線左側(cè)的部分。
第三步、基于差圖diffAB計(jì)算N條備選縫合線(染色體)的適應(yīng)度,挑選出適應(yīng)度值最大的染色體Smin;具體操作方法如下:
對于一條備選縫合線(染色體)si,其適應(yīng)度值為譬如diffAB一個(gè)3*4的差圖,si的值為(2 1 2),
則的si適應(yīng)度為1/(3+2+4)=1/9。
第四步、若gen大于maxGen,則轉(zhuǎn)第六步,否則將染色體的H個(gè)變量隨機(jī)分為k組,具體操作如下:將自然數(shù)列1到H隨機(jī)打亂,選取第1個(gè)到第個(gè)變量作為第一組變量,第個(gè)到第個(gè)作為第二組變量,依次類推,將第個(gè)到第變量作為第k-1組變量,剩余變量作為第k組變量,即前k-1組每組個(gè)變量,第k組個(gè)變量;
第五步、對分組后的變量逐組優(yōu)化,每組運(yùn)行T代,初始化i=1;
1)基于第i組變量構(gòu)建染色體種群Si。具體操作如下:
將當(dāng)前種群S的每個(gè)染色體中除第i組變量之外的所有變量的值用s染色體相應(yīng)位置的變量值代替。譬如H=8,N=4,k=4,第一組變量包括第1個(gè)和第2個(gè)變量,s為(2 3 3 3 4 5 6 6)。其中S為{(1 2 3 4 5 6 7 8),(2 2 3 3 4 5 6 5),(1 2 3 4 4 5 5 4),(1 2 2 2 3 4 6 7)},那么基于第1組變量構(gòu)建的新的染色體種群S1就是{(1 2 3 3 4 5 6 6),(2 2 3 3 4 5 6 6),(1 2 3 3 4 5 6 6),(1 2 3 3 4 5 6 6)};此外,令t=1;
2)基于差圖diffAB計(jì)算種群Si中染色體的適應(yīng)度值,挑選出適應(yīng)度值最大的染色體Smin;具體操作與第三步相同。
3)基于染色體的適應(yīng)度值,使用輪賭盤策略選擇出N個(gè)較好的染色體;具體操作如下:譬如有個(gè)體sa,sb,sc對應(yīng)的適應(yīng)度分別為2,3,1,其相應(yīng)的累計(jì)概率則為2/6,(2+3)/6,(2+3+1)/6。生成一個(gè)隨機(jī)數(shù)為rand,若rand<2/6,選中個(gè)體sa,如果2/6<rand<(2+3)6,選中個(gè)體sb,如果(2+3)/6<rand<(2+3+1)/6,選中個(gè)體sc,以此類推。
4)針對選擇出的染色體,使用交叉變異算子生成新的N個(gè)染色體;具體交叉變異算子設(shè)計(jì)如下:
a)交叉算子:首先隨機(jī)從種群S中選擇兩個(gè)個(gè)體(記為s1和s2)作為父代染色體。如圖3所示,每個(gè)染色體即代表一條備選縫合線,且有H個(gè)基因位,每個(gè)基因位代表了一個(gè)縫合點(diǎn);其次檢測s1和s2是否滿足交叉條件,即s1和s2中存在起止位置相同的基因序列且其起止位置的基因值相等,若不滿足則重新選擇兩個(gè)個(gè)體,否則進(jìn)行交叉操作,即交換s1和s2中處于該段基因序列除起止位置的基因值之外的其他基因值。如起止位置相同的兩段基因序列,s1={g1,g2,g3,g4,g5,g6},s2={q1,q2,q3,q4,q5,q6},若g1等于q1且g6等于q6,那么滿足交叉條件,交換位于中間的基因值,得到s1’={g1,q2,q3,q4,q5,g6}和s2’={q1,g2,g3,g4,g5,q6},作為兩個(gè)新個(gè)體。
b)變異算子:首先從交叉操作產(chǎn)生的新種群中隨機(jī)選擇一個(gè)個(gè)體,記為s3,其基因值分別為{c_1,c_2,c_3,…,c_H}。其次,針對每一位基因(從1到H),以概率0.9判別是否進(jìn)行變異操作,即若rand<0.9,不進(jìn)行變異操作,否則執(zhí)行變異操作(rand為一個(gè)位于0到1之間的隨機(jī)數(shù))。然后,針對要進(jìn)行變異的基因位,如第k個(gè)基因位,若其相鄰兩個(gè)基因位的值c_k-1和c_k+1相等,則等概率將c_k-1,c_k或c_k+1的賦值于c_k;若其相鄰兩個(gè)基因位的值c_k-1和c_k+1相差為1,則令c_k=c_k-1;否則不進(jìn)行任何操作。
5)gen=gen+1,t=t+1,若t小于T,轉(zhuǎn)入3)否則
令i=i+1,若i>k,則轉(zhuǎn)入第四步,否則轉(zhuǎn)入1);
第六步、輸出當(dāng)前適應(yīng)度值最大的一個(gè)染色體Smax作為最優(yōu)縫合線s。
如圖4至圖6所示,為利用本發(fā)明所述的最優(yōu)縫合線搜索方法找到的最優(yōu)縫合線。其中,圖4中左右圖像為重疊區(qū)域相同、大小相等且已配準(zhǔn)的源圖像,其中H=1920,圖像寬W=300。圖5為圖4中兩幅圖像的像素值歸一化之后的差圖。設(shè)定分組個(gè)數(shù)k=10,分組運(yùn)行代數(shù)T=10,算法迭代次數(shù)maxGen=1000。按照上述參數(shù),執(zhí)行最優(yōu)縫合線搜索方法后,得到的最優(yōu)縫合線及拼接圖像如圖6所示。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。