吳迪,陳密密,宋杰麗
(1.北京61683部隊,北京 100094;2.北京61512部隊,北京 100088)
在大區(qū)域遙感影像處理中,影像鑲嵌是通過在相鄰影像的重疊區(qū)內定義鑲嵌線來實現(xiàn)影像的拼接,并將鑲嵌后的影像整體按照標準分幅或自定義范圍進行裁切。隨著遙感影像鑲嵌成果的應用范圍越來越廣,對遙感影像鑲嵌信息(如景號、攝影時間及偏移量等)的查詢要求也越來越高。而現(xiàn)有的遙感影像處理軟件(Image Station、PCI、ERDAS等)生成的鑲嵌信息均以文本格式記錄,不便于瀏覽和信息的查詢。為此,可以開發(fā)軟件將文本格式的鑲嵌信息轉換為柵格圖像,并制作鑲嵌線索引圖,使信息的瀏覽和查詢更加直觀、方便。
軟件主要功能如圖1所示。該軟件能在圖幅內精確顯示鑲嵌線的位置,同時在由鑲嵌線和圖廓線形成的各閉合區(qū)域內標注鑲嵌信息,最后將鑲嵌信息以鑲嵌線索引圖的形式批量輸出。
鑲嵌線索引圖是將鑲嵌線按照圖幅(圖像)范圍輸出的柵格圖像,用以標明圖幅(圖像)中鑲嵌線的分布情況及所用影像的相關信息,如圖2所示。圖中顯示了索引圖中鑲嵌線與圖廓線構成的多個閉合區(qū)域,分別代表相鄰影像在鑲嵌圖幅中的使用范圍,同時對鑲嵌信息進行了標注。

圖2 鑲嵌線索引圖示例
軟件的開發(fā)應用了OpenGL、GDAL(Geospatial Data Abstraction Library)函數(shù)庫和Microsoft Visual C++6.0編程環(huán)境。解決了以下幾個關鍵問題。
遙感影像的鑲嵌信息可以分為兩類:矢量信息和文字信息。矢量信息指的是鑲嵌過程中定義的鑲嵌線和圖幅(影像)的輪廓。文字信息對應的是鑲嵌所用的影像名稱、攝影時間、相機的偏移量及鑲嵌圖幅名稱等等。在進行信息的繪制之前,首先要進行信息格式的轉化。由于我們采用的是OpenGL頂點數(shù)組繪制技術,因此需要提取鑲嵌矢量信息并構建繪制所需的頂點數(shù)組和索引數(shù)組。
①鑲嵌線信息的提取與轉化
遙感影像鑲嵌軟件生成的鑲嵌信息如圖3所示,其中包括:鑲嵌線所在的影像名、節(jié)點的坐標、鑲嵌線緩沖區(qū)寬度。

圖3 鑲嵌線信息格式
第一個結點坐標 55.0319056 36.0582056
第二個結點坐標 55.1385778 36.0582056
第三個結點坐標 55.1385778 35.9865556……
尾結點坐標 55.0319056 36.0582056
我們將其按照頂點數(shù)組的結構重新進行組織,并建立相應的索引數(shù)組,結構表1所示。
②圖幅(圖像)輪廓的提取與轉化
我們采用GDAL(Geospatial Data Abstraction Library)函數(shù)庫來讀取各種格式的鑲嵌圖幅(圖像)文件,獲取圖像的寬高信息,并根據(jù)影像分辨率計算四個角點的坐標。同時,生成相應的頂點數(shù)組,其結構與表1相同。
應用OpenGL實現(xiàn)鑲嵌線和圖幅(圖像)范圍的繪制,需要初始化OpenGL環(huán)境,設置投影方式,生成頂點數(shù)組與索引數(shù)組并完成圖形的繪制。其繪制流程如圖4所示,其中最為關鍵的部分是對投影方式的設置。對于二維圖形的繪制,一般采用正射投影方式。通過指定OpenGL窗口實際對應的坐標范圍來控制圖形在窗口中的顯示。為了能夠在OpenGL窗口中顯示鑲嵌線和相應的圖幅(圖像)范圍,需要用鑲嵌區(qū)域的最小外接矩形的信息來設置正射投影中的相關參數(shù)。此時,我們通過對鑲嵌線的頂點數(shù)組進行坐標比較得到整個鑲嵌區(qū)域的最小外接矩形。對于頂點數(shù)組的構建如①節(jié)所示,這里不再贅述。繪制的結果如圖5所示。

圖4 矢量信息繪制流程

圖5 鑲嵌矢量信息的繪制
為了提高鑲嵌信息表達的示意性,還必須對每個圖幅(圖像)的鑲嵌信息進行標注。這部分功能可以分為鑲嵌信息的提取、顯示、選擇和標注四部分。%
(1)鑲嵌信息的提取與顯示
在讀取鑲嵌線文件時開辟一個動態(tài)數(shù)組用于存儲每塊影像的影像名、攝影時間及相機偏移量等鑲嵌信息。通過對頂點數(shù)組中的坐標進行比較、計算得出每景影像上所有鑲嵌線形成閉合多邊形的最小外接矩形,將其中心點作為鑲嵌信息的顯示位置。并應用OpenGL的文字(英文)顯示功能將鑲嵌信息顯示在該位置上(如圖6所示)。
(2)鑲嵌信息的選擇與標注
鑲嵌信息的選擇與標注通過點選該信息獲取相應的字符串,并將其標注在圖幅(圖像)中適當?shù)奈恢谩|c選影像名時,需要我們記錄鼠標點擊時的位置(地理坐標),并計算其與影像名的定位點(最小外接矩形的中點)之間的距離,當該距離小于我們給定的閾值時,就視為該影像名被選定,并提取相應的字符串。而信息的標注,與前面所述的顯示方法相同,這里不再贅述。

圖6 鑲嵌文字信息的繪制
在OpenGL環(huán)境中實現(xiàn)鑲嵌線索引圖的輸出,需要實現(xiàn)單幅鑲嵌線索引圖的柵格化輸出,然后在此基礎上完成輸出操作的批量化。
(1)單幅鑲嵌線索引圖的柵格化輸出
應用OpenGL保存柵格圖像與在OpenGL窗口上進行繪制圖形的過程是相似的。不同之處在于,它是將圖形繪制在內存中,作為柵格圖像進行保存,而非顯示在屏幕上。當顯示和標繪鑲嵌線圖幅時,我們用整個鑲嵌區(qū)域來設置OpenGL窗口的投影區(qū)域;當輸出鑲嵌線索引圖時,我們在內存中用輸出圖幅 (圖像)的范圍來設置OpenGL窗口的投影區(qū)域。這樣在保存圖幅(圖像)時,鑲嵌線與圖幅標注只能顯示在圖幅(圖像)范圍內的部分,從而實現(xiàn)了單幅鑲嵌線索引圖的柵格化輸出。
(2)批量輸出的實現(xiàn)
在繪制鑲嵌圖幅(圖像)時,我們采用遍歷文件夾的方式提取每個圖幅(圖像)的名稱和寬高信息,并開辟動態(tài)數(shù)組保存該信息。批量輸出鑲嵌線索引圖,只需我們給定文件保存的路徑,并利用循環(huán)結構對每個索引圖進行名稱與尺寸的設定,同時采用單個索引圖的保存原理來實現(xiàn)所有圖幅的柵格化輸出。
遙感影像鑲嵌要求原始影像在接邊處的顏色保持一致,這樣鑲嵌成果在顏色上才能自然過渡。然而在鑲嵌前期的預調色工序中,對后期鑲嵌線所在的位置不明確,因此只能針對重疊區(qū)進行整體的色彩調整,容易導致鑲嵌線附近的顏色不能達到鑲嵌的要求。這就要求在鑲嵌后期,根據(jù)鑲嵌線的位置在顏色差異大的地方對影像進行精調色。此時按照影像范圍輸出的鑲嵌線索引圖,可以實現(xiàn)鑲嵌線與原始影像的疊加(如圖7所示),為精調色中待處理影像范圍的精確選取提供準確的依據(jù)。

圖7 鑲嵌線與原始影像的疊加
對鑲嵌圖幅進行檢查,需要沿著鑲嵌線查看地物的接邊精度及顏色過渡的情況。將鑲嵌線按照圖幅范圍輸出成鑲嵌線索引圖,在Photoshop中可以將鑲嵌線的位置以選區(qū)的方式直觀地顯示在鑲嵌圖幅上,從而大大提高成果檢查的精度和效率。
鑲嵌圖幅圖歷薄用于記錄鑲嵌圖幅中鑲嵌影像的影像名、鑲嵌質量、作業(yè)員完成情況等多方面信息,為鑲嵌成果的評定提供了重要依據(jù)。在圖歷薄中加入鑲嵌線索引圖可以增強其示意性,便于使用者直觀地了解影像拼接情況(如圖8所示)。

圖8 鑲嵌圖幅圖歷薄
應用OpenGL實現(xiàn)鑲嵌線索引圖的制作與批量輸出,彌補了鑲嵌軟件在鑲嵌線格式轉換與柵格化輸出方面的不足,為鑲嵌生產(chǎn)及成果檢查帶來了方便。OpenGL的圖形繪制原理只要求繪制單位的統(tǒng)一,對具體的坐標系及投影方式不做要求,加強了程序的通用性。同時,OpenGL還可以實現(xiàn)整個區(qū)域鑲嵌線的快速瀏覽。
[1]Paul Martz,鄧鄭祥(譯).OpenGL2.0精髓[M].北京:人民郵電出版社,2006.
[2]Richard S,Wright Jr,Benjamin Lipchak,徐波(譯).OpenGL超級寶典(第三版).北京:人民郵電出版社,2005.
[3]陳鷹.遙感影像的數(shù)字攝影測量.上海:同濟大學出版社,2004.