影像金字塔

影像金字塔

影像金字塔由原始影像按一定規則生成的由細到粗不同解析度的影像集。

定義


多解析度來解釋圖像的一種有效但概念簡單的結構就是影像金字塔。一幅圖像的金字塔就是一系列以金字塔形狀排列的解析度逐漸降低的圖像集合。金字塔的底部是圖像的高解析度表示,也就是原始圖像,而頂部是低解析度的近似。最底層的解析度最高,並且數據量最大,隨著層數的增加,其解析度逐漸降低,數據量也按比例減少。理論上,金字塔是一種連續解析度模型,但在構建金字塔時很難做到解析度連續變化,並且這樣做也沒有實際意義。
金字塔模型最初應用於機器視覺和圖像壓縮,目前很多商業影像資料庫系統都採用了金字塔結構來管理影像,例如 MrSID,TerraServer[TerraServer online],TerraShare [TerraShare online]等。但應用最廣泛的是圖像金字塔

深入理解


指在同一的空間參照下,根據用戶需要以不同解析度進行存儲與顯示,形成解析度由粗到細、數據量由小到大的金字塔結構。影像金字塔結構用於圖像編碼和漸進式圖像傳輸,是一種典型的分層數據結構形式,適合於柵格數據和影像數據的多解析度組織,也是一種柵格數據或影像數據的有損壓縮方式。如圖所示:
影像金字塔
影像金字塔
從圖中可以看出, 從金字塔的底層開始每四個相鄰的像素經過重採樣生成一個新的像素, 依此重複進行, 直到金字塔的頂層。重採樣的方法一般有以下三種: 雙線性插值、最臨近像元法、三次卷積法。其中最臨近像元法速度最快, 如果對圖像的邊緣要求不是很高的話,最適合使用該方法。三次卷積由於考慮的參考點數太多、運算較複雜等原因, 速度最慢, 但是重採樣後圖像的灰度效果較好。
每一層影像金字塔都有其解析度的,比如說放大(無論是拉框放大、還是固定比例放大)、縮小、漫遊(此操作不涉及到影像解析度的改變)計算出進行該操作后所需的影像解析度及在當前視圖範圍內會顯示的地理坐標範圍,然後根據這個解析度去和已經建好的影像金字塔解析度匹配,哪層影像金字塔的解析度最接近就用哪層的圖像來顯示,並且根據操作后當前視圖應該顯示的範圍,來求取在該層影像金字塔上,應該對應取哪幾塊,然後取出來畫上去就可以了。

構建方法


目前影像金字塔的構建方法有兩種:一種是多解析度的數據源自動構建金字塔;另一種是除了金字塔最底層數據是原始影像數據之外,其他層的影像數據是從底層數據通過採樣抽取出來構建的。
從原始影像數據中抽取數據構建金字塔時,通常採用重採樣方法構建,形成一個多個解析度層次。從金字塔的底層到頂層,解析度越來越低,但是表示的範圍卻是一致的,可以用一個公式來表示各層的解析度。設影像數據的原始解析度為 r0,重採樣率為 m,則第 j 層的解析度 rj= r0×mj,其中重採樣率可以是任何大於 1 的整數。
影像金字塔構建的具體方法是把原始影像作為影像金字塔的最底層,定義為 0層,通過對原始影像採用重採樣方法,建立起一系列反應不同解析度的影像,即生成影像的第 1,2,3……層,直至最終建立的影像數據層解析度滿足要求,其中第 0 層即原始影像層解析度最高,最清晰,經重採樣得到的影像解析度隨著金字塔層數的增加解析度依次降低,數據量也依次減少,但表示的範圍卻是不變的。如果生成的影像金字塔最頂層的影像是由一個像素構成的話,在不考慮壓縮的情況下,建立金字塔后的影像數據將近增加原始目標影像大小的 1/3。

應用概況


影像金字塔是以塊為單位的一系列圖像序列,其實現方法是將原始圖像按照一定的壓縮比例,將圖像抽樣生成出一系列圖像序列,然後將圖像序列按照固定的像素大小分塊。分塊后的數據按照一定的方式在磁碟上組織成便於系統查找和存取的文件。因此,對構建影像金字塔一般從三個方面考慮:
(1) 圖像的分層採樣
對圖像的分層,一般要考慮數據讀取方式和圖像採樣方法。有學者實現分層採樣時,每一層的分層採樣都是以原始圖像為對象的,分層和分塊過程結合在一起,在抽取下一層的某塊數據時,將原始圖像中屬於該塊數據範圍的數據全部導入內存,然在內存中完成採樣,輸出該塊數據。這種方法最大的缺陷在於,如果圖像過大,圖像分層過多,越往上層,每一塊數據對應的原始數據量以採樣率的 2 次方速度增長,數據在原始圖像中所佔的行數以 2 的倍數增長。這就造成了大的內存佔用和數據讀取時磁碟磁頭移動次數的增加,極有可能造成系統崩潰。
對於圖像的採樣方法,大部分文獻資料所採用的採樣比例為 4:1,即將四個像素合成一個像素,同時也不乏 2:1,3:1 等採樣比例。採樣比例的選擇要根據系統應用的需要進行選擇。一般不做圖像處理,只用於顯示的系統,採樣比例都為 4:1,這樣既可以保證採樣時方便計算,也可以方便上下層之間建立父子關係。採樣的計算方法,一般有線性插值法平均值法,最近鄰域法等。
(2) 層數據的分塊
圖像的分塊一般要考慮數據讀取方式、分塊方式和分塊大小。對於讀取方式,可以每次讀取圖像層的一行數據,然後將屬於該塊的數據提取出來。這種方法增加了數據讀取次數,減少了內存佔用量。也可以一次讀取多行數據,然後將屬於該塊的數據提取出來。這種方法減少了從磁碟讀取次數,但是加大了內存佔用量。
對於分塊方式,目前主要有兩種分塊方式,一種是帶狀分塊方式。這種方法是將圖像數據的若干行作為一個單元形成一個帶狀。帶狀條可以順序的編址並且可以單獨地索引。這種劃分方法在幾種數據格式中已經使用(例如,TIFF 格式)。
一種是塊狀劃分,塊狀劃分的方法是影像數據按照網格劃分成小塊,圖像塊通常是方形的,有時也可以是矩形的。目前有的數據格式也支持這種劃分方法(例如 TIFF 格式)。相對於帶狀劃分,塊狀劃分更適合圖像索引和鑲嵌。而且劃分后的圖像塊具有良好的聚集特性。
對於分塊大小,圖像分塊的大小通常取 2 的冪次方,具體的大小在選擇時要考慮到操作系統數據存儲格式的特點以及內存管理的最小單位。一般採用的分塊大小為 128×128、256×256、512×512、124×1024。
(3) 數據的組織方式
獲取了分層分塊后的數據后,需要對數據按照一定的方式組織,使得數據的獲取和查找變得方便容易,很多文獻按照四叉樹的方式組織數據,但是不能很快地完成數據的存取。

演演算法研究概況


影像金字塔原理雖然在眾多GIS軟體中都廣泛應用,但是由於其具體的應用環境不同,具體實現的演演算法也不相同,除了處理速度相對比較慢以外,佔用資源大也是一個問題。同時,用於在文件和內存中定義的結構不一樣,其實現細節也會不一樣。

意義


為大的柵格影像建立了金字塔的話,這些影像便能快速進行顯示。除了在屏幕上顯示外,金字塔還包含了很多其他信息。如果沒有金字塔,那麼在顯示時就要訪問整理柵格數據集,然後進行大量計算來選擇哪些柵格像元被顯示。金字塔是一種能對柵格影像按逐級降低解析度的拷貝方式存儲的方法。通過選擇一個與顯示區域相似的解析度,只需進行少量的查詢和少量的計算,從而減少顯示時間。