一種基于fpga的星上迭代圖像處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種圖像處理方法,特別是一種基于FPGA的星上迭代圖像處理方法,適用于大數(shù)據(jù)量、有迭代運算的實時圖像處理算法的硬件實現(xiàn),屬于實時遙感圖像處理領(lǐng)域。
【背景技術(shù)】
[0002]隨著遙感技術(shù)的發(fā)展,人們對遙感成像需求日益迫切,成像質(zhì)量的要求也越來越高。因此具有預(yù)識別、預(yù)處理能力的星上處理方法對于改善遙感圖像質(zhì)量至關(guān)重要。目前星上圖像處理算法主要是圖像預(yù)處理以及一些基于圖像處理的自適應(yīng)調(diào)節(jié)等算法,其中自適應(yīng)調(diào)節(jié)這類算法需要采用重復(fù)多次迭代進行求解,計算量大,不適合于對圖像的快速處理和在硬件上的實時實現(xiàn)。
[0003]而FPGA由于結(jié)構(gòu)的限制,特別適合于實現(xiàn)數(shù)據(jù)量巨大、可以流水線實現(xiàn)的圖像處理算法。所謂流水線方法:是將處理流程分為若干步驟,整個數(shù)據(jù)處理是“單流向”的,即沒有反饋或者迭代運算,前一步驟的輸出是下一個步驟的輸入。
[0004]為了能在FPGA平臺上實現(xiàn)自適應(yīng)調(diào)節(jié)這類重復(fù)多次迭代的算法,并且適應(yīng)目前遙感相機多片CCD同時工作、數(shù)據(jù)量巨大的要求,必須合理的設(shè)計圖像處理算法的實現(xiàn)方法,以最大限度的利用運算、存儲等硬件資源。同時,為使硬件資源有效發(fā)揮作用,算法與架構(gòu)之間的密切配合是很重要的,必須考慮數(shù)據(jù)流的有效控制方法,將運算單元充分利用,減少邏輯資源的開銷。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術(shù)解決問題是:克服FPGA平臺不擅長處理迭代算法這一問題,提出一種基于FPGA的星上迭代圖像處理算法的實現(xiàn)架構(gòu),利用雙口 RAM與寄存器組搭建了一個圖像處理架構(gòu),將存在迭代運算的圖像處理算法嵌入此架構(gòu)內(nèi),通過控制雙口 RAM和寄存器組的讀寫來實現(xiàn)數(shù)據(jù)的迭代和不同CCD之間運算的切換,使一個圖像處理算法模塊能夠流水線處理多片不同類型(XD,用處理一片CXD的FPGA資源,完成了多片CXD的處理,提高了FPGA的硬件資源利用率,最大程度上滿足了大數(shù)據(jù)量星上圖像迭代運算的需求。
[0006]本發(fā)明的技術(shù)解決方案是:一種基于FPGA的星上迭代圖像處理方法,步驟如下:
[0007](I)根據(jù)預(yù)先給定的星上迭代圖像處理算法,確定各片CXD進行圖像處理所需參數(shù)的數(shù)量Hl1和星上迭代圖像處理算法產(chǎn)生反饋參數(shù)的數(shù)量Hl2,并根據(jù)叫和Hl2在雙口 RAM中開辟用于存儲參數(shù)及反饋參數(shù)的空間;
[0008](2)在有效圖像數(shù)據(jù)到來前,通過CXD寫地址信號和寫使能信號聯(lián)合控制,將各片CXD進行圖像處理所需的參數(shù)寫入雙口 RAM ;
[0009](3)在進行星上迭代圖像處理前,選取一片(XD,讀出雙口 RAM中該片CXD進行圖像處理所需的參數(shù)和前一時刻算法產(chǎn)生的反饋參數(shù),將CCD進行圖像處理所需的參數(shù)和前一時刻算法產(chǎn)生的反饋參數(shù)鎖存于寄存器組中,初始時刻算法的反饋參數(shù)均為“O” ;
[0010](4)步驟(3)中選取的CXD利用預(yù)先給定的星上迭代圖像處理算法進行運算,得出當前時刻圖像的特征參數(shù)和用于下一時刻計算的反饋參數(shù),并更新存放當前時刻圖像特征參數(shù)的寄存器和存放用于下一時刻計算反饋參數(shù)的寄存器;
[0011](5)在當前CCD數(shù)據(jù)使能結(jié)束并且圖像處理算法計算完畢后,將步驟(3)中選取的CCD進行圖像處理所需的參數(shù)和當前時刻算法產(chǎn)生的反饋參數(shù)寫入雙口 RAM中;
[0012](6)選取新的一片(XD,重復(fù)步驟(3)?步驟(5),直至遍歷所有(XD。
[0013]所述步驟⑴中根據(jù)一片CCD進行圖像處理所需的參數(shù)數(shù)量叫和圖像處理算法產(chǎn)生的反饋參數(shù)數(shù)量m2,在雙口 RAM中開辟空間,用于存儲參數(shù)及反饋信號,具體為:
[0014]若FPGA串行處理η片CXD數(shù)據(jù),則雙口 RAM中開辟的空間為:
[0015]M = n*2~ceil (1g2 O'ceiiaog^)+m2)),其中 M 為雙口 RAM 中存儲空間的長度,雙口 RAM位寬由所有參數(shù)中位寬最大的決定,ceil表示向無限大取整。
[0016]所述步驟(2)中通過CXD寫地址信號和寫使能信號聯(lián)合控制,將各片CXD進行圖像處理所需的參數(shù)寫入雙口 RAM ;具體為:
[0017]在各片CCD有效數(shù)據(jù)到來之前,外部發(fā)送的參數(shù)信號和參數(shù)使能信號會將各片CCD的工作狀態(tài)和各片CCD進行圖像處理所需的參數(shù)進行廣播,廣播結(jié)束后,解析各片CCD進行圖像處理所需的Hl1個參數(shù),并控制寫地址信號和寫使能信號將!!^個參數(shù)寫入雙口 RAM。
[0018]所述寫地址信號由計數(shù)器輸出拼接生成,計數(shù)器位寬為ceil (1g2Hi1)+ceil (log2n),由長度為n*2~ceil (1g2Hi1)個時鐘周期的高電平觸發(fā)計數(shù),雙口 RAM寫信號由三部分拼接而成,第一部分截取計數(shù)器輸出的第ceil (1g2lIi1)+Ibit開始的高 ceil (log2n)數(shù)據(jù),第二部分的數(shù)據(jù)為 “0”,“O” 的位寬為 ceil (1g2 (2~ceil (1g2In1)+m2))-ceil (1g2Hi1),補“O”的作用是使寫地址跨越叫個參數(shù);第三部分位寬為ceil (1g2Hi1),截取計數(shù)器輸出低ceil (1g2lH1)bit數(shù)據(jù),將以上三部分寫信號按照先后順序從高到低拼接起來形成各片CCD進行圖像處理所需的Hi1個參數(shù)的寫地址。
[0019]本發(fā)明相比現(xiàn)有技術(shù)優(yōu)點在于:
[0020](I)本發(fā)明在FPGA平臺下,通過寄存器組和雙口 RAM的靈活配合,以流水線的方式實現(xiàn)了迭代算法,提高了 FPGA的硬件資源利用率,最大程度上滿足了大數(shù)據(jù)量星上圖像迭代運算的需求;
[0021](2)本發(fā)明為每片CXD規(guī)劃RAM區(qū)域,通過切換RAM地址使圖像處理算法流水線處理不同的(XD,用處理一片CXD的FPGA資源,流水線實現(xiàn)多片不同類型CXD的處理,最大程度上節(jié)省了硬件資源,更好地適應(yīng)了星上圖像處理;
[0022](3)本發(fā)明中的架構(gòu)在運算過程中對迭代參數(shù)進行實時更新,適用于有迭代運算的實時圖像處理算法,具有較強的工程應(yīng)用價值。
【附圖說明】
[0023]圖1為本發(fā)明的算法流程圖;
[0024]圖2為雙口 RAM存儲空間規(guī)劃示意圖;
[0025]圖3雙口 RAM與寄存器組讀寫及更新的時序關(guān)系圖;
[0026]圖4寫入雙口 RAM數(shù)據(jù)格式實現(xiàn)圖;
[0027]圖5計數(shù)器生成RAM地址實現(xiàn)圖;
[0028]圖6寄存器組參數(shù)更新實現(xiàn)圖;
[0029]圖7雙口 RAM輸入實現(xiàn)圖。
【具體實施方式】
[0030]如圖1所示為本發(fā)明的算法流程圖,從圖1可知,本發(fā)明提供的一種基于FPGA的星上迭代圖像處理方法,具體步驟如下:
[0031](I)根據(jù)預(yù)先給定的星上迭代圖像處理算法,確定各片CXD進行圖像處理所需參數(shù)的數(shù)量Hl1和星上迭代圖像處理算法產(chǎn)生反饋參數(shù)的數(shù)量Hl2,并根據(jù)叫和Hl2在雙口 RAM中開辟用于存儲參數(shù)及反饋參數(shù)的空間;具體為:
[0032]若FPGA串行處理η片CXD數(shù)據(jù),則雙口 RAM中開辟的空間為:
[0033]M = n*2~ceil (1g2 O'ceiiaog^)+m2)),其中 M 為雙口 RAM 中存儲空間的長度,雙口 RAM位寬由所有參數(shù)中位寬最大的決定,ceil表示向無限大取整。
[0034]!!^和Hl2不同步更新,!!^個參數(shù)來主要是外部注入用來控制算法的參數(shù)以及相機當前工作狀態(tài)等參數(shù),算法計算過程中不改變這些參數(shù)。Hl2個參數(shù)是圖像處理算法計算過程中產(chǎn)生的,并反饋用于下一時刻算法計算,因此在算法計算完畢后需要實時更新。
[0035](2)如圖3所示,在有效數(shù)據(jù)到來前,解析各片CCD的參數(shù),將Mm1個參數(shù)寫入雙口 RAM。輸入雙口 RAM的數(shù)據(jù)格式如圖4所示產(chǎn)生,通過選擇器級聯(lián)的方式,將η片CXD共I^m1A參數(shù)變?yōu)榇蟹绞捷斎腚p口 RAM,CCD標識在“寫”和“讀”時用于切換不同CCD的參數(shù)。通過CCD寫地址信號和寫使能信號聯(lián)合控制,將各片CCD進行圖像處理所需的參數(shù)寫入雙口 RAM ;具體為:
[0036]在各片CCD有效數(shù)據(jù)到來之前,外部發(fā)送的參數(shù)信號和參數(shù)使能信號會將各片CCD的工作狀態(tài)和各片CCD進行圖像處理所需的參數(shù)進行廣播,廣播結(jié)束后,解析各片CCD進行圖像處理所需的Hl1個參數(shù),并通過寫地址信號和寫使能信號將!!^個參數(shù)寫入雙口 RAM,
[0037]所述寫地址信號由計數(shù)器輸出拼接生成,計數(shù)器位寬為ceil (1g2Hi1)+ceil (log2n),由長度為n*2~ceil (1g2Hi1)