師 靜
(貴州省林業(yè)調(diào)查規(guī)劃院,貴州 貴陽 550002)
一種影像快速加載及顯示策略
師 靜
(貴州省林業(yè)調(diào)查規(guī)劃院,貴州 貴陽 550002)
目前普遍采用構(gòu)建影像金字塔存儲模型來解決遙感影像數(shù)據(jù)的加載及顯示時存在的問題,但僅使用構(gòu)建金字塔模型的策略在效率及系統(tǒng)魯棒性等方面存在著諸多不足。結(jié)合影像動態(tài)提取技術(shù)和影像金字塔技術(shù)提出了一種靈活高效的影像加載及顯示策略,充分利用系統(tǒng)內(nèi)存空間,減少不必要的I/O操作,在保證系統(tǒng)性能的前提下大大提升影像加載與顯示的用戶體驗。最后,利用C#語言開發(fā)程序Fload實現(xiàn)該策略,并與ESRI公司的ArcMap軟件在執(zhí)行效率、程序性能等方面進行了綜合比較。結(jié)果表明,該影像加載及顯示策略在性能上表現(xiàn)良好。
影像動態(tài)提取;影像金字塔結(jié)構(gòu);影像加載;影像顯示;影像數(shù)據(jù);ArcMap軟件
海量影像數(shù)據(jù)是國家空間數(shù)據(jù)基礎(chǔ)與數(shù)字城市建設(shè)的重要數(shù)據(jù)基礎(chǔ)。隨著數(shù)據(jù)獲取的技術(shù)手段不斷發(fā)展,地理產(chǎn)品資源也越來越豐富,影像的數(shù)據(jù)量也越來越大,從MB到GB,甚至更大。雖然影像數(shù)據(jù)的管理方法也越來越多樣,但是基于文件模式的影像數(shù)據(jù)管理與共享仍然是目前主要的模式。對于大數(shù)據(jù)量的影像,直接將影像文件加載到系統(tǒng)內(nèi)存的傳統(tǒng)方案必然會造成系統(tǒng)內(nèi)存溢出、程序假死等各種問題,嚴(yán)重影響影像處理過程與用戶體驗。因此,目前在顯示與處理影像文件前,通常會對影像完成構(gòu)建影像金字塔的預(yù)處理[1-3],以避免出現(xiàn)加載全圖影像造成加載緩慢,內(nèi)存溢出的問題。然而,對于數(shù)據(jù)量很大的影像文件來說,即使構(gòu)建了影像金字塔結(jié)構(gòu),仍然會出現(xiàn)位于金字塔較底層的影像的數(shù)據(jù)量過大而影響影像加載效率的問題。因此,如何快速有效地加載和顯示海量影像數(shù)據(jù)成為一個亟待解決的問題。本文在研究傳統(tǒng)方案的基礎(chǔ)上,構(gòu)建影像金字塔技術(shù),并利用影像動態(tài)提取技術(shù)獲得涉及的影像文件(包含金字塔文件),實現(xiàn)大數(shù)據(jù)量影像文件的快速加載和顯示。
1.1 影像金字塔結(jié)構(gòu)
影像金字塔技術(shù)對于海量影像數(shù)據(jù)的處理已是一項不可或缺的預(yù)處理技術(shù)[4],根據(jù)用戶的需求將原始影像以不同比例尺進行存儲,形成比例尺由大到小、數(shù)據(jù)量由小到大的金字塔結(jié)構(gòu)。本文采用傳統(tǒng)的金字塔技術(shù)為影像文件構(gòu)建相應(yīng)的影像金字塔結(jié)構(gòu)。在進行影像加載與顯示時,依據(jù)當(dāng)前地圖的顯示比例尺確定適合的影像分辨率級別,調(diào)用相應(yīng)金字塔級別的影像數(shù)據(jù)。
影像金字塔是分層數(shù)據(jù)結(jié)構(gòu)的組織形式[5],是一組影像序列{T0, T1, …, Tp, …, Tm-1, Tm},其中m表示金字塔級數(shù),Tm為分辨率最小的頂層影像,T0為原始影像本身。影像采樣粒度指每一次重采樣順著行方向需要處理的像元數(shù),應(yīng)根據(jù)實際的需求確定金字塔的級數(shù)及采樣粒度。典型的影像金字塔結(jié)構(gòu)如圖1所示,從以原始影像為基礎(chǔ)金字塔底層(0級)開始,行列方向各4個像元(圖中的采樣粒度為4)經(jīng)過重采樣合成新像元依次進行,直到頂層金字塔數(shù)據(jù)[6]。影像金字塔從底層到頂層分辨率越來越低,數(shù)據(jù)量越來越小。
主要的影像重采樣的方法有最鄰近距離法、雙線性插值法和三次卷積法。其中最鄰近距離法的計算速度最快,但容易破壞影像邊緣;雙線性插值法顯示效果較最鄰近距離法更優(yōu),但計算速度相對較慢;三次卷積法的顯示效果在三者中最好,但是計算速度是最慢的。因為本文僅利用重新采樣后的影像進行加載與顯示,因此對于精度要求并不高,卻要求重新采樣的計算速度快,因此最終選擇采樣速度最快的最鄰近距離法對金字塔文件進行重采樣。
1.2 影像動態(tài)提取技術(shù)
影像動態(tài)提取是通過從原始影像中提取相關(guān)信息,如頭文件信息、影像數(shù)據(jù)信息等,并以此為基礎(chǔ)構(gòu)建新的影像的過程。本文利用影像動態(tài)提取技術(shù),根據(jù)當(dāng)前地圖視圖的顯示地理范圍和影像的地理參數(shù)確定當(dāng)前顯示的影像的行列號,從文件流中獲取該行列相應(yīng)的影像數(shù)據(jù);結(jié)合原始影像中需形成一幅單獨影像所必備的參數(shù)信息,組合成一幅新的提取后影像。利用影像動態(tài)提取技術(shù),可以有效地保證大影像文件加載與顯示過程中的準(zhǔn)確性與穩(wěn)定性。當(dāng)前視圖區(qū)域的影像數(shù)據(jù)的來源存在3種情況:
圖1 影像金字塔結(jié)構(gòu)Fig.1 Structure of image pyramids
1)影像數(shù)據(jù)位于單個數(shù)據(jù)條中,此時只需要從數(shù)據(jù)條中逐行讀取數(shù)據(jù)。每行從起始列起,讀取當(dāng)前視圖區(qū)域的寬度(以像素為單位)大小的像元數(shù),組成待提取區(qū)域的影像數(shù)據(jù)。
2)影像數(shù)據(jù)位于多個數(shù)據(jù)條中,此時需要從多數(shù)據(jù)條中逐條讀取數(shù)據(jù)。首先確定起始數(shù)據(jù)條的起始行編號,從起始行開始到該數(shù)據(jù)條止,數(shù)據(jù)加載方式與情況(1)相同;接著從第二條的第一行開始讀取數(shù)據(jù),數(shù)據(jù)加載與上一步驟相同,以此類推,完成所有相關(guān)影像數(shù)據(jù)的讀取。
3)部分影像數(shù)據(jù)超出影像范圍,此時就需要截取影像范圍內(nèi)的數(shù)據(jù),即假設(shè)影像的起始行小于0,則從第0行開始加載影像,起始列、終止行及終止列的情況與此類似,需保證待提取的區(qū)域影像范圍不超出影像的整體范圍。
本文通過構(gòu)建影像金字塔解決地圖縮小時只讀取分辨率較小的影像,避免出現(xiàn)加載原始全圖大數(shù)據(jù)量影像造成加載緩慢,內(nèi)存溢出的問題。同時結(jié)合影像動態(tài)提取技術(shù),提取當(dāng)前地圖可視范圍內(nèi)的部分臨時影像文件,實現(xiàn)影像的快速加載與顯示,解決因原始影像數(shù)據(jù)量相當(dāng)大,即使構(gòu)建金字塔結(jié)構(gòu)后,仍然出現(xiàn)位于金字塔較底層影像數(shù)據(jù)量過大的問題。
海量影像快速加載及顯示策略如圖2所示。
圖2 海量影像加載及顯示策略Fig.2 Strategy of massive image loading and display
當(dāng)影像首次加載時,先構(gòu)建影像金字塔結(jié)構(gòu),當(dāng)顯示影像時需根據(jù)不同的縮放比例尺調(diào)用相應(yīng)的金字塔數(shù)據(jù),并應(yīng)用圖像分割技術(shù)只從原始數(shù)據(jù)流中截取顯示范圍內(nèi)的影像流信息,再將該流信息結(jié)合原始影像參數(shù)信息在內(nèi)存中生成新的臨時影像并顯示在地圖中。在進行加載與顯示過程中,還需要著重考慮以下幾個關(guān)鍵問題,以滿足金字塔文件的計算速度以及內(nèi)存控制的需要。
1) 金字塔級數(shù)確定:一般情況下,金字塔的級數(shù)越多,連續(xù)縮放的效果也相應(yīng)越好,顯示的影像也就越清晰,但同時數(shù)據(jù)冗余程度也越高,金字塔文件也需占用越多的空間。因此,在構(gòu)建影像金字塔結(jié)構(gòu)時,應(yīng)綜合考慮影像大小、采樣粒度等多種因素,以確定合適的金字塔級數(shù),在保證影像顯示清晰度的基礎(chǔ)上提高構(gòu)建速度,力求實現(xiàn)二者的最佳配置。
2) 待顯數(shù)據(jù)確定:在地圖縮放的過程中,會涉及到如何確定當(dāng)前比例尺下金字塔級別的問題。本文根據(jù)當(dāng)前比例尺與全圖比例尺的情況,結(jié)合金字塔的采樣粒度明確需要顯示的金字塔級別,以平衡影像的清晰度和顯示速度。
3.1 構(gòu)建影像金字塔
首先,依據(jù)影像大小確定金字塔文件的采樣粒度與級數(shù),寫入一些金字塔文件的相關(guān)信息;其次,讀入不大于緩存大小的影像數(shù)據(jù)流。
為了保證不會出現(xiàn)斷行讀取數(shù)據(jù)的情況,本文以行為最小單位讀取多行的數(shù)據(jù)流;根據(jù)采樣粒度,從緩存中讀取指定行列的影像數(shù)據(jù),采用最鄰近距離法計算新的像元值;將新像元值寫入緩存中;重復(fù)該步驟,完成所有級別的影像數(shù)據(jù)的寫入;最后,確保緩存中剩余的數(shù)據(jù)寫入文件中,結(jié)束。
3.2 影像動態(tài)顯示
首先,通過當(dāng)前地圖的顯示范圍以及影像的地理信息確定顯示范圍內(nèi)影像的行列;其次,根據(jù)當(dāng)前地圖顯示比例尺確定是否需要使用金字塔文件,若需要使用則調(diào)用相應(yīng)的金字塔文件并加載相應(yīng)級別的影像數(shù)據(jù),否則直接加載原影像的數(shù)據(jù)流;從原始數(shù)據(jù)流或金字塔數(shù)據(jù)流中讀取待顯示的影像行列的數(shù)據(jù);建立內(nèi)存流對象,寫入該部分的數(shù)據(jù)以及相關(guān)對象信息,最后,在地圖中加載該部分影像,結(jié)束。
3.3 對比測試3.3.1 測試數(shù)據(jù)
貴陽市的影像(1,886,513,752 字節(jié), 20 000×20 000 像素,TIFF影像格式)。
3.3.2 測試過程
分別利用ArcMap和FLoad打開影像,從構(gòu)建金字塔的耗時、全圖顯示影像耗時、放大縮小過程中是否延時、同時加載多幅影像內(nèi)存占用情況與耗時4個方面進行比較。
3.3.3 對比結(jié)果
測試結(jié)果如表1所示。從表1中可以看出,二者在加載海量影像時表現(xiàn)相當(dāng),ArcMap略延時,同時加載多幅影像時的內(nèi)存占用方面甚至稍占上風(fēng)。構(gòu)建金字塔ArcMap使用了更少的時間,但根據(jù)在逐級放大的過程中出現(xiàn)了延時的現(xiàn)象,原因估計是ArcMap構(gòu)建的金字塔級數(shù)較少。
表1 算法性能比較Tab.1 Comparison of algorithm performance
本文使用影像金字塔、數(shù)據(jù)緩存和動態(tài)提取技術(shù),提出一種快速加載和顯示大數(shù)據(jù)量的影像文件的策略,從而提高了影像加載的速度,縮短了等待的時間,提升用戶體驗感受。實驗測試結(jié)果表明,該策略在效率,內(nèi)存占用和可操作性上與ArcMap平臺性能相當(dāng),在用戶體驗上更具優(yōu)勢。在下一步的研究中,試圖將該策略應(yīng)用于Web數(shù)據(jù)服務(wù)發(fā)布過程中,從Web服務(wù)的角度開始研究工作。
[1] 許自舟,孫淑艷,梁斌,等. ArcGIS中海量影像數(shù)據(jù)儲存與發(fā)布技術(shù)[J].海洋環(huán)境科學(xué), 2014(1):99-104.
[2] 向和平.基于GIS的遙感影像快速瀏覽系統(tǒng)的設(shè)計與實現(xiàn)[D].蘇州:蘇州大學(xué),2012.
[3] 馬慶華, RS-Globe系統(tǒng)中空間數(shù)據(jù)調(diào)度和壓縮算法研究[D].開封:河南大學(xué),2009.
[4] 高崢, 海量遙感影像快速生成金字塔算法的研究與實現(xiàn)[D].上海:華東師范大學(xué),2012.
[5] 蔣紅成, 趙忠明,朱海青.用分塊調(diào)度置換算法快速瀏覽SAR帶狀海量影像[J].計算機工程與應(yīng)用, 2004(28):50-51,194.
[6] 胡偉忠, 劉南, 劉仁義.基于內(nèi)存映射文件技術(shù)的海量影像數(shù)據(jù)快速讀取方法[J]. 計算機應(yīng)用研究, 2005(2):111-112,107.
Strategy of Image Rapid Loading and Display
SHI Jing
(Guizhou Institute of Forestry Inventory and Planning, Guiyang 550002, China)
At present image pyramids were built widely to solve some problems emerged in the process of remote sensing image data loading and display. However, only using the strategy with pyramids model was deficient in the efficiency, system robustness, and so on. This paper proposed a flexible and efficient image loading and display strategy with image dynamic extraction technology and image pyramid technology, by which the system memory space was be used fully, unnecessary I / O operations were reduced, user experience of image loading and displaying with good system performance was improved greatly. Based on the comprehensive comparison of execution efficiency and program performance between the ESRI′s ArcMap software and FLoad, a program with C # language implementing the proposed strategy, the result was found that the proposed strategy achieved a good performance.
image dynamic extraction;structure of image pyramids; image loading; image display; image data; ArcMap software
2017-03-27.
師 靜(1984-),女,河南項城人,工程師.從事林業(yè)調(diào)查規(guī)劃工作.
10.3969/j.issn.1671-3168.2017.03.001
S771.8;TP751
A
1671-3168(2017)03-0001-03