一種基于FPGA的實時紅外圖像放大模塊
1.4 本文采用的算法
上述3種圖像插值算法中最近鄰插值放大實現(xiàn)最為簡單,處理速度快,但它只是把原始像素簡單的復(fù)制到其鄰域內(nèi),放大圖像就會出現(xiàn)明顯的方塊或鋸齒,不能很好地保留原始圖像的邊緣信息。雙三次插值算法的視覺效果最好,但計算復(fù)雜開發(fā)周期長,占用的硬件資源較大,不符合本系統(tǒng)的資源要求。使用雙線性插值能夠較好地消除鋸齒,保留原始圖像的邊緣信息,放大后的圖像較平滑,且有較好的視覺效果。本文選取改進型的線性插值(2×1鄰域和1×2鄰域)作為最終實現(xiàn)方案。如圖1所示,實心表示原始像素,空心表示放大后的圖像。本文采用的算法數(shù)學(xué)表達(dá)式為:
2 算法基于FPGA的設(shè)計與實現(xiàn)
2.1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)總體結(jié)構(gòu)如圖2所示,行插值和數(shù)據(jù)控制模塊控制數(shù)據(jù)存入雙口RAM中,并在存入的過程中實現(xiàn)行的放大,因為采用2×2領(lǐng)域放大,每個目標(biāo)像素放大所需的原始圖像相鄰2行的2個像素,所以可以將相鄰2行寫入雙口RAM。列插值和數(shù)據(jù)控制模塊實現(xiàn)列放大和把插值后的數(shù)據(jù)送入到下一個模塊。數(shù)據(jù)流向是圖像放大模塊的重點和難點,如何實現(xiàn)實時性,良好的數(shù)據(jù)控制很重要。在數(shù)據(jù)從上一個模塊讀入的同時,行插值模塊就完成了行放大。在一幀圖像的幀頭,行插值模塊對2行數(shù)據(jù)進行操作,在第2行到倒數(shù)第2行,行插值只對單行數(shù)據(jù)進行處理,處理完畢后并通知列插值模塊進行下一步運算。列插值模塊在收到行插值模塊給的信號后,從雙口RAM中讀取已經(jīng)存入的兩行數(shù)據(jù),并完成中間行的插值,在運算的過程中并把RAM中的第一行的數(shù)據(jù)逐個讀出并送到下一個模塊。當(dāng)完成列插值運算后,立即通知行插值模塊開始讀入新的一行,并在讀入的同時,把新產(chǎn)生的行讀出。行插值模塊完成新的一行讀入后,通知列插值模塊與RAM中上一次存入的第二行(第一次列插值的第3行)進行列插值操作,并重復(fù)上述操作,直至完成當(dāng)前幀。具體流程如圖3所示。本文引用地址:http://m.butianyuan.cn/article/190968.htm
評論