專利名稱:一種遙感影像快速處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及遙感通信領(lǐng)域,尤指ー種遙感影像的快速處理方法。
背景技術(shù):
傅立葉變換技術(shù)是圖像處理中基本方法,在圖像編碼與壓縮、圖像增強(qiáng)、圖像復(fù)原、圖像分割、圖像噪聲去除等領(lǐng)域具有重要的應(yīng)用價(jià)值。隨著遙感技術(shù)的發(fā)展,獲取的遙感圖像數(shù)據(jù)量越來越大,波段數(shù)目也越來越多。目前,有很多圖像處理方法都可以實(shí)現(xiàn)圖像的快速傅立葉變換(FFT),但在處理巨幅影像時(shí)常常會出現(xiàn)內(nèi)存、顯存溢出的問題,無法完成對遙感影像的處理
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)存在的問題,本發(fā)明的目的在于提供ー種在處理小圖像時(shí),直接利用GPU技術(shù)進(jìn)行處理;針對巨幅影像,進(jìn)行圖像的分塊處理的方法,以適應(yīng)不同大小的遙感影像快速處理。為實(shí)現(xiàn)上述目的,本發(fā)明的遙感影像快速處理方法,包括以下步驟I)根據(jù)遙感影像和GPU顯存的大小,判斷是否對遙感影像進(jìn)行分塊;如果需要對遙感影像分塊,則轉(zhuǎn)入步驟2);2)將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的行塊,利用GPU對每行塊分別進(jìn)行ー維傅里葉行變換;3)將上述處理完的結(jié)果重新組合為整幅遙感影像后,將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的列塊,利用GPU對每列塊分別進(jìn)行ー維傅里葉列變換;4)將經(jīng)過上述步驟處理完的結(jié)果重新組合,即完成對整幅遙感影像的處理。進(jìn)一歩,步驟I)具體為如果遙感影像能夠被GPU處理,則將遙感影像全部讀入GPU顯存中,利用GPU并行計(jì)算進(jìn)行遙感影像的ニ維傅立葉變換;如果遙感影像過大,不能被GPU處理,則轉(zhuǎn)入步驟2)。進(jìn)ー步,步驟2)具體為首先,將遙感影像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干行塊,并將分割的每一行塊依次讀入計(jì)算機(jī)內(nèi)存中;其次,將讀入計(jì)算機(jī)內(nèi)存中的每一行塊分割成能夠被GPU處理的若干子行塊,并將分割的每一子行塊依次讀入GPU顯存中;再次,利用GPU對讀入GPU顯存的每一子行塊進(jìn)行一維傅立葉行變換,將ー維傅立葉行變換后的結(jié)果數(shù)據(jù)存入磁盤。進(jìn)ー步,根據(jù)內(nèi)存大小所分的行塊個(gè)數(shù)是通過公式b=+ !得到,其
中b為所分行塊個(gè)數(shù),p為姆個(gè)像素點(diǎn)在內(nèi)存中所占的字節(jié)數(shù),m,n為影像的大小,a為處理圖像時(shí)系統(tǒng)的可用內(nèi)存。進(jìn)ー步,根據(jù)GPU顯存大小所分的行塊個(gè)數(shù)是根據(jù)公式B =1ノ得至IJ,其中B為所分行塊個(gè)數(shù),P為每個(gè)像素點(diǎn)在顯存中所占的字節(jié)數(shù),M,N為影像的大小,A為處理圖像時(shí)系統(tǒng)的可用顯存。進(jìn)ー步,步驟3)具體為首先,經(jīng)過上述處理后的遙感圖像重新組合為整幅遙感影像后,將遙感圖像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干列塊,并將分割的每一列快依次讀入計(jì)算機(jī)內(nèi)存中;其次,將讀入計(jì)算機(jī)內(nèi)存中的每一列塊分割成能夠被GPU處理的若干子列塊,并將分割的每一子列塊依次讀入GPU顯存中;再次,利用GPU對讀入GPU顯存的每一子列塊進(jìn)行一維傅立葉列變換,將ー維傅立葉列變換后的結(jié)果數(shù)據(jù)存入磁盤。進(jìn)ー步,根據(jù)內(nèi)存大小所分的列塊個(gè)數(shù)是根據(jù)公式c=十;!得到,其
中C為所分列塊個(gè)數(shù),p為姆個(gè)像素點(diǎn)在內(nèi)存中所占的字節(jié)數(shù),m,n為影像的大小,a為處理圖像時(shí)系統(tǒng)的可用內(nèi)存。進(jìn)ー步,根據(jù)GTO顯存大小所分的列塊個(gè)數(shù)是根據(jù)公式C =十I.得
至IJ,其中C為所分列塊個(gè)數(shù),P為每個(gè)像素點(diǎn)在顯存中所占的字節(jié)數(shù),M,N為影像的大小,A為處理圖像時(shí)系統(tǒng)的可用顯存。進(jìn)ー步,在將ー維傅里葉變換后的結(jié)果數(shù)據(jù)存入磁盤同時(shí),記錄下處理后的每ー塊遙感影像的地址。本發(fā)明的遙感影像快速處理方法,解決了海量遙感影像快速傅里葉變換受限于計(jì)算機(jī)配置的問題,根據(jù)圖像大小、計(jì)算機(jī)內(nèi)存大小以及GPU顯存大小,對遙感圖像進(jìn)行分塊處理,可以避免在對大幅遙感影像進(jìn)行處理過程中的內(nèi)存和顯存溢出問題。與現(xiàn)有的遙感影像處理方法相比,具有處理快速、適用性強(qiáng)的優(yōu)點(diǎn),可以對大幅和小幅遙感影像進(jìn)行快速處理。
具體實(shí)施例方式本發(fā)明的遙感影像快速處理方法,為了降低寫操作次數(shù)采用分塊技術(shù),該處理方法具體為1)根據(jù)遙感影像和GPU顯存的大小,判斷是否對遙感影像進(jìn)行分塊。如果遙感影像能夠被GPU處理,則將遙感影像全部讀入GPU顯存中,利用GPU并行計(jì)算進(jìn)行遙感影像的ニ維傅立葉變換;如果遙感影像過大,不能被GPU處理,則轉(zhuǎn)入下歩。2)將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的行塊,利用GPU對每行塊分別進(jìn)行ー維傅里葉行變換;為了避免遙感影像在讀入計(jì)算機(jī)內(nèi)存過程中發(fā)生內(nèi)存溢出,首先需要將遙感影像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干行塊,并將分割的每一行塊依次讀入計(jì)算機(jī)內(nèi)存中按順序進(jìn)行處理;由于GPU顯存容量較小,一般顯存容量均小于內(nèi)存容量,GPU在對經(jīng)分塊后的遙感影像處理吋,如果分塊后的遙感影像大于GPU顯存容量,在遙感影像讀入GPU顯存時(shí)就會發(fā)生顯存溢出。因此,在對遙感影像按計(jì)算機(jī)內(nèi)存大小分塊后,還需將讀入計(jì)算機(jī)內(nèi)存中的每一行塊分割成能夠被GPU處理的若干子行塊,并將分割的每一子行塊依次讀入GPU顯存中,然后利用GPU對讀入GPU顯存的每一子行塊進(jìn)行一維傅立葉行變換,在完成所有行塊的一維傅里葉行變換后將ー維傅立葉行變換后的結(jié)果數(shù)據(jù)存入磁盤,即完成對整幅遙感影像的行處理。3)將上述處理完的結(jié)果重新組合為整幅遙感影像后,將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的列塊,利用GPU對每列塊分別進(jìn)行ー維傅里葉列變換;同 理,對遙感影像進(jìn)行ー維傅里葉列變換時(shí),為了避免發(fā)生內(nèi)存和顯存溢出,也分別需要對遙感影像進(jìn)行按內(nèi)存和顯存大小的分塊,在進(jìn)行分塊前首先將經(jīng)過一維傅里葉行變換處理后的遙感圖像重新組合為整幅遙感影像,將遙感圖像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干列塊,并將分割的每一列快依次讀入計(jì)算機(jī)內(nèi)存中;其次,將讀入計(jì)算機(jī)內(nèi)存中的每一列塊分割成能夠被GPU處理的若干子列塊,并將分割的每一子列塊依次讀入GPU顯存中;再次,利用GPU對讀入GPU顯存的每一子列塊進(jìn)行一維傅立葉列變換,將ー維傅立葉列變換后的結(jié)果數(shù)據(jù)存入磁盤。4)將經(jīng)過一維傅里葉列變換處理完的結(jié)果重新組合,即完成對整幅遙感影像的傅里葉變換處理。在將ー維傅里葉變換后的結(jié)果數(shù)據(jù)存入磁盤同時(shí),還可以記錄下處理后的每ー塊遙感影像的地址,以便于處理完的遙感影像的快速重新組合。本發(fā)明的方法除了可以適應(yīng)對大幅遙感影像處理的優(yōu)點(diǎn)之外,與傳統(tǒng)的圖像FFT變換處理相比還具有遙感影像處理快速的優(yōu)點(diǎn)。傳統(tǒng)的圖像FFT變換的算法是先做行變換,然后將結(jié)果做行列轉(zhuǎn)置,接著對轉(zhuǎn)置后的結(jié)果又做行變換,這一歩其實(shí)是對原圖像的列、變換,轉(zhuǎn)置的目的是為了重用行變換的程序,最后所得的結(jié)果還要做一次轉(zhuǎn)置以符合行列排列的順序。因?yàn)閷⑿写娉闪袝r(shí),一行內(nèi)的數(shù)據(jù)由連續(xù)存儲變?yōu)殡x散到各行,這樣寫入磁盤時(shí)就需要跳躍進(jìn)行,假設(shè)原圖像寬為W,高為H,將一行轉(zhuǎn)置成一列,需要執(zhí)行的寫操作次數(shù)為W次,對整幅圖像轉(zhuǎn)置共需要寫入WXH次,大大降低寫的操作效率,造成遙感影像在進(jìn)行FFT處理時(shí)速度非常慢。而本發(fā)明的方法,首先將圖像分成若干行塊,每塊有m行,將ー維傅立葉變換后結(jié)果分成若干子塊,每塊包含n列。這樣,一維傅立葉變換寫操作的次數(shù)為
~x~在進(jìn)行列變換時(shí),直接將相應(yīng)的列塊讀入內(nèi)存,進(jìn)行一維傅立葉變換即可,不必進(jìn)
o
行圖像的轉(zhuǎn)置,大大減小了處理時(shí)間,提高了處理效率。本發(fā)明按照內(nèi)存的分塊數(shù)b是按照以下公式得出的
/in KnX p.、b. = (,-M十]讀入內(nèi)存的每ー塊影像的字節(jié)數(shù)s為S =其中b為所分行塊個(gè)數(shù),p為姆個(gè)像素點(diǎn)在內(nèi)存中所占的字節(jié)數(shù),m, n為影像的大小,a為處理圖像時(shí)系統(tǒng)的可用內(nèi)存。假設(shè)計(jì)算機(jī)是4個(gè)CPU,經(jīng)過測試51%的內(nèi)存正在使用,物理內(nèi)存為4G時(shí),共有4080713728個(gè)字節(jié),可用的物理內(nèi)存為1877MB,一幅16000X12000的影像大小是0. 54GB則影像分的塊數(shù)就是ー塊,讀入內(nèi)存中的每ー塊影像的字節(jié)數(shù)576000000個(gè)字節(jié),就是549. 32MB。一幅20000X12000的影像大小是I. 12GB則影像分的塊數(shù)就是ニ塊,讀入內(nèi)存中的每ー塊影像的字節(jié)數(shù)600000000個(gè)字節(jié),就是572. 20MB。由于顯存容量較小,因此還需要將讀入到內(nèi)存中的塊劃分為更小的子塊,才能利用GPU進(jìn)行高效處理。子塊的大小會影響到數(shù)據(jù)在GPU中運(yùn)算的速度和數(shù)據(jù)讀寫時(shí)與I/O的交互速度。分的子塊太小,將中間結(jié)果暫存到磁盤上時(shí),文件讀寫的次數(shù)就很多,増加了I/O之間的頻繁交互;分的子塊太大,就會導(dǎo)致顯存溢出。子塊大小的計(jì)算與讀入到內(nèi)存中的塊大小計(jì)算相似,在此就不多做鰲述。為了驗(yàn)證本發(fā)明方法的效果,以下列出相應(yīng)實(shí)驗(yàn)數(shù)據(jù)加以說明以HJ-IA 衛(wèi)星 CCD 影像為例,分別對 16000 X 12000、20000 X 20000、30000 X 20000、40000 X 30000,40000 X 40000,80000 X 80000進(jìn)行處理,由于實(shí)際影像的大小小于表中圖像
的大小,還需要對圖像進(jìn)行重采樣得到被測試的數(shù)據(jù)。實(shí)驗(yàn)中采用兩種方法進(jìn)行巨幅影像的處理比較。第一種方法傳統(tǒng)的FFTW方法。主要思想是將圖像處理的中間結(jié)果以固定緩存來存儲,依據(jù)緩存的最大容量,毎次處理多行數(shù)據(jù),并將處理結(jié)果組成ー塊,先在緩存中進(jìn)行轉(zhuǎn)置,并寫入到磁盤中。第二種方法本發(fā)明的方法。表2三種算法正變換運(yùn)算時(shí)間(単位s)
權(quán)利要求
1.一種遙感影像快速處理方法,其中,包括以下步驟 1)根據(jù)遙感影像和GPU顯存的大小,判斷是否對遙感影像進(jìn)行分塊;如果需要對遙感影像分塊,則轉(zhuǎn)入步驟2); 2)將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的行塊,利用GPU對每行塊分別進(jìn)行一維傅里葉行變換; 3)將上述處理完的結(jié)果重新組合為整幅遙感影像后,將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的列塊,利用GPU對每列塊分別進(jìn)行ー維傅里葉列變換; 4)將經(jīng)過上述步驟處理完的結(jié)果重新組合,即完成對整幅遙感影像的處理。
2.如權(quán)利要求I所述的遙感影像快速處理方法,其中,步驟I)具體為如果遙感影像能夠被GPU處理,則將遙感影像全部讀入GPU顯存中,利用GPU并行計(jì)算進(jìn)行遙感影像的ニ維傅立葉變換;如果遙感影像過大,不能被GPU處理,則轉(zhuǎn)入步驟2)。
3.如權(quán)利要求I所述的遙感影像快速處理方法,其中,步驟2)具體為首先,將遙感影像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干行塊,并將分割的每一行塊依次讀入計(jì)算機(jī)內(nèi)存中;其次,將讀入計(jì)算機(jī)內(nèi)存中的每一行塊分割成能夠被GPU處理的若干子行塊,并將分割的每一子行塊依次讀入GPU顯存中;再次,利用GPU對讀入GPU顯存的每一子行塊進(jìn)行ー維傅立葉行變換,將ー維傅立葉行變換后的結(jié)果數(shù)據(jù)存入磁盤。
4.如權(quán)利要求3所述的遙感影像快速處理方法,其中,根據(jù)內(nèi)存大小所分的行塊個(gè)數(shù)是通過公式
5.如權(quán)利要求4所述的遙感影像快速處理方法,其中,根據(jù)GPU顯存大小所分的行塊個(gè)數(shù)是根據(jù)公式
6.如權(quán)利要求I所述的遙感影像快速處理方法,其中,步驟3)具體為首先,經(jīng)過上述處理后的遙感圖像重新組合為整幅遙感影像后,將遙感圖像分割成能夠被計(jì)算機(jī)內(nèi)存處理的若干列塊,并將分割的每一列快依次讀入計(jì)算機(jī)內(nèi)存中;其次,將讀入計(jì)算機(jī)內(nèi)存中的每一列塊分割成能夠被GPU處理的若干子列塊,并將分割的每一子列塊依次讀入GPU顯存中;再次,利用GPU對讀入GPU顯存的每一子列塊進(jìn)行一維傅立葉列變換,將ー維傅立葉列變換后的結(jié)果數(shù)據(jù)存入磁盤。
7.如權(quán)利要求6所述的遙感影像快速處理方法,其中,根據(jù)內(nèi)存大小所分的列塊個(gè)數(shù)是根據(jù)公式
8.如權(quán)利要求7所述的遙感影像快速處理方法,其中,根據(jù)GPU顯存大小所分的列塊個(gè)數(shù)是根據(jù)公式
9.如權(quán)利要求3或6所述的遙感影像快速處理方法,其中,在將ー維傅里葉變換后的結(jié)果數(shù)據(jù)存入磁盤同時(shí),記錄下處理后的每ー塊遙感影像的地址。
全文摘要
本發(fā)明公開了一種遙感影像快速處理方法,包括以下步驟1)根據(jù)遙感影像和GPU顯存的大小,判斷是否對遙感影像進(jìn)行分塊;如果需要對遙感影像分塊,則轉(zhuǎn)入步驟2);2)將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的行塊,利用GPU對每行塊分別進(jìn)行一維傅里葉行變換;3)將上述處理完的結(jié)果重新組合為整幅遙感影像后,將遙感影像分成若干計(jì)算機(jī)內(nèi)存和GPU顯存可以處理的列塊,利用GPU對每列塊分別進(jìn)行一維傅里葉列變換;4)將經(jīng)過上述步驟處理完的結(jié)果重新組合,即完成對整幅遙感影像的處理。本發(fā)明的遙感影像快速處理方法,解決了海量遙感影像快速傅里葉變換受限于計(jì)算機(jī)配置的問題。
文檔編號G06T7/00GK102663759SQ201210119088
公開日2012年9月12日 申請日期2012年4月20日 優(yōu)先權(quán)日2012年4月20日
發(fā)明者余濤, 孟慶巖, 楊雪, 謝東海, 趙利民, 顧行發(fā) 申請人:中國科學(xué)院遙感應(yīng)用研究所