<button id="p74tc"></button>

<strike id="p74tc"></strike>

<strike id="p74tc"></strike>

<strike id="p74tc"></strike>

<button id="p74tc"></button>

<strike id="p74tc"><dfn id="p74tc"><option id="p74tc"></option></dfn></strike><delect id="p74tc"><noframes id="p74tc"><label id="p74tc"><noframes id="p74tc">
<label id="p74tc"></label>
<delect id="p74tc"></delect>

<button id="p74tc"></button>

<label id="p74tc"><noframes id="p74tc">

<delect id="p74tc"></delect>
<delect id="p74tc"></delect>

<button id="p74tc"></button>

<strike id="p74tc"><xmp id="p74tc"><strike id="p74tc"></strike>
當前位置: 首頁 > 新聞資訊 > 常見問題解答

柵格數據有效/無效掩膜的計算與表達

發布日期:2023-07-11 18:16 瀏覽量:3212

因為多種原因,柵格數據中經常存在一些無效像素。在航天測繪遙感中,遙感器獲取的單景影像在經過投影坐標變換后往往會存在黑邊(見圖 1(a)),黑邊內的像素為無效像素。在航空測繪遙感中,位于測區外的像素也可能被拍攝/掃描到,但是在成果交付時往往只需要輸出測區內的像素,測區外的像素即為無效像素(見圖 2(a))。柵格數據常采用二值的掩膜來表達像素有效或無效。

基于像素值的掩膜計算

單個波段的掩膜的計算非常簡單。設對于某個波段,值為0代表無效值,值非0代表有效值,則利用Envi的band math功能計算掩膜的方法為:

byte((b1 ne 0)*255)

設值范圍在[M,N]內的為有效值,其它值為無效值,則計算掩膜的方法為:

byte((b1 ge M and b1 le N)*255)

基于各個波段的掩膜,可以計算出整個數據集的掩膜。對于3波段真彩色影像,計算方法為:

byte((b1 eq 255) and (b2 eq 255) and (b3 eq 255))*byte(255)

在生成的掩膜中,255代表有效像素,0代表無效像素。相關示例可見圖 1。

圖 1 基于像素值的掩膜計算示例

基于矢量邊界的掩膜計算

無論是基于測區邊界,圖幅邊界還是ROI生成掩膜,均可以歸結為基于矢量邊界的掩膜計算。如果矢量邊界對應的面狀幾何元素存在多個不重疊的部分,例如測區由多個不聯通、不重疊的子測區構成[1],則矢量邊界可以表達為OGC簡單特征規范定義的多多邊形(MultiPolygon),否則可以表達為多邊形(Polygon),多邊形允許帶有空洞[2]。

基于矢量邊界計算掩膜,可以采用矢量到柵格轉換的方法(需要確保兩種柵格數據的分辨率一致),也可以采用幾何分析的方法。下面介紹幾何分析的方法。

文獻[3]提出一種基于四叉樹的方法,其核心思想是對柵格數據進行四叉樹分割,判斷分割出的每個部分對應的矩形和矢量邊界對應的面狀幾何元素之間是否存在重疊。如果存在重疊,則對矩形再次進行四叉樹分割,直至分割出的每個部分所含像素數目低于指定閾值。由于該算法是遞歸執行的,在柵格數據行列數較多時,對??臻g的需求較大,容易發生棧溢出。為提高計算穩定性,可以逐塊(Block)計算。對于支持按塊存儲的格式,例如Tiff,按塊存儲柵格數據可以有效降低計算對??臻g的需求。設每塊大小為256*256,則四叉樹最大深度為8層。對于Asc格式,雖然其不支持按塊存儲,但該方法仍然可用,只不過一行為一個塊,四叉樹分割變為二叉樹分割。

判斷單個像素是否在矢量邊界內,可采用如下兩種判斷方法:

(1)基于像素中心的方法。如果像素中心在矢量邊界對應的面狀幾何元素內,則認為像素為有效像素,否則為無效像素;

(2)基于像素邊界的方法。計算像素邊界對應的矩形和矢量邊界對應的面狀幾何元素之間的重疊面積。如果重疊面積占像素面積的比例大于指定閾值p,則認為像素為有效像素,否則為無效像素。其中,如果p取0,則意味著如果像素有任何一部分在矢量邊界內,像素即為有效像素;如果p取0.5,且在單個像素內的矢量邊界為直線段,則此時該判斷方法和基于像素中心的方法等價。

圖 2是利用矢量邊界裁剪DEM數據的效果圖。

圖 2 基于矢量邊界的裁剪DEM的效果,紅線為矢量邊界

掩膜的表達形式

掩膜的主要表達形式包括:

(1)掩膜文件。GDAL采用后綴為msk,但實質為TIFF格式的柵格文件(簡稱掩膜文件)存儲掩膜數據。掩膜文件的行列數、塊大小、路徑與對應的柵格數據相同,但文件名比柵格數據多“.msk”。掩膜文件存儲的數據類型為1字節無符號整型(下文簡稱uint_8t),0代表像素無效,非0(一般是255)代表像素有效。掩膜文件的波段數要么為1,適用于整個柵格數據,要么和柵格數據的波段數相同,第K個波段適用于柵格數據的第K個波段。

(2)無數據值(nodata value)。在GeoTiff、Asc、ERDAS IMAGINE等格式中,支持無數據值屬性。有的格式支持對單個波段設置無數據值(如GeoTiff),有的格式只支持對數據集整體設置無數據值(如Asc)。常見的GIS和遙感軟件均支持該屬性(見圖 3),在讀取波段數據時,如果某像素在某波段的值為指定的無數據值,則認為該像素在該波段無效。在使用該方式時,需要將無效像素的值設置為無數據值。在DEM/DSM中,通常選擇一個明顯不合理的高程值作為無數據值,例如-9999 m。在數據類型為uint_8t的3波段真彩色DOM中,通常選擇0或255作為無數據值。但是該做法的風險在于,DOM中的有效像素的波段值也可能為0或255。例如,陰影、水體等低光部分在某些波段可能值為0(見圖 4(a)),白車車頂、云等高光部分在某些波段可能值為255。所以,為確保有效像素不會出現無數據值,有可能需要修改像素值[3]。

圖 3 常見GIS遙感軟件對無數據值的支持

(3)alpha波段。在數據類型為uint_8t的影像中,alpha波段常被用來存儲不透明度(0代表完全透明,255代表完全不透明)。當使用alpha波段存儲掩膜時,GDAL規定無效像素表示為0值,有效像素表示為非0值(效果見圖 4(b))。該方法在非遙感GIS領域內應用較多。但缺點在于,一來只能用于數據類型為uint_8t的真彩色影像或灰度影像;二來會變相增加1個波段,占用較多的存儲空間。

(4)全部像素均有效。在無特殊標記/說明的情況下,全部像素均為有效像素。

在GDAL中,按(1)、(2)、(3)、(4)的優先順序識別掩膜。

圖 4 采用不同方式的掩膜的效果


參考文獻

[1]程曉光,魏婧,嚴明,等. 應用地表覆蓋數據估算LiDAR內業工作量的方法研究[J]. 地理信息世界, 2021, 28(2): 89-94.

[2]程曉光,陸泉源,鄭誠慧,等. 使用開源軟件的地圖分幅軟件設計與實現[J]. 測繪地理信息, 2021, 46(4): 122-127.

[3]佘佐明,程曉光,王艷軍. 基于GDAL開源庫的海量DOM分幅裁剪[J]. 城市勘測, 2023, No.195(1): 74-78.

猜你喜歡

相關設備
推薦服務
相關案例
新聞資訊

聯系方式

電話:025-83216189

郵箱:frank.zhao@feiyantech.com

地址:江蘇省南京市玄武區紅山街道領智路56
號星河World產業園3號樓北8樓

微信公眾號

總經理微信

025-83216189
精品一级毛片久久久久久_色色色色色综合_国产精品久久久久久久久久软件_韩国黄色电影麻豆一级

<button id="p74tc"></button>

<strike id="p74tc"></strike>

<strike id="p74tc"></strike>

<strike id="p74tc"></strike>

<button id="p74tc"></button>

<strike id="p74tc"><dfn id="p74tc"><option id="p74tc"></option></dfn></strike><delect id="p74tc"><noframes id="p74tc"><label id="p74tc"><noframes id="p74tc">
<label id="p74tc"></label>
<delect id="p74tc"></delect>

<button id="p74tc"></button>

<label id="p74tc"><noframes id="p74tc">

<delect id="p74tc"></delect>
<delect id="p74tc"></delect>

<button id="p74tc"></button>

<strike id="p74tc"><xmp id="p74tc"><strike id="p74tc"></strike>