趙衛東
(河北省地質礦產勘查開發局第一地質大隊,河北 邯鄲)
Mapgis 中影像的鑲嵌融合功能非常強大[1],只要有足夠的控制點或其文件(*.gcp)[2],可以隨心所欲的將msi 影像進行平移、旋轉、縮放,甚至局部伸縮、揉皺。Mapgis 影像文件(.msi 文件)鑲嵌融合控制點文件[3],可用記事本打開,其格式見圖1。

圖1 gcp 文件格式
該文件第一行為表頭,各列間以空格與制表符兩個字符分隔,下面為控制點信息,以英文豆點與制表符兩個字符分隔。經試驗,表頭及下面控制點信息各列之間有英文豆點分隔即可。gcp 文件最關鍵的信息即是控制點的圖像坐標、理論坐標,相關的坐標系稱為像素坐標系、圖形坐標系,其意義如下。
(1) 圖像坐標,在鑲嵌融合控制點采集窗口左窗口狀態欄顯示稱為“圖像坐標”,即msi 影像像素的坐標,以像素為單位。像素坐標系以影像左上角為像素坐標系的坐標原點,向右、向下為正向。msi 文件的像素信息與msi 影像轉換前的原光柵圖像相同,將鼠標懸停于光柵圖像可出現像素列數、行數等信息。
(2) 理論坐標,為目標圖形坐標。圖形坐標是在鑲嵌融合控制點采集窗口中右側窗口的Mapgis 的圖形坐標,亦即mapis 點、線、面文件編輯窗口顯示的坐標,以mm 為單位。圖形坐標系橫向x 軸向右為正,縱向y 軸向上為正。當地圖圖面比例尺為1:1 000,且沒有旋轉、平移,則圖形坐標(以mm 為單位)的數值即為公里網坐標數值(以m 為單位)。
所謂控制點,即是同一點具備這兩種坐標,將影像的像素坐標進行校正與理論坐標對應。
以上,明確了像素坐標系與圖形坐標系,以及控制點文件*.gcp 格式,現在需要獲取控制點信息。
設一光柵地圖其四角為經緯度坐標,圖中有已知坐標的公里網格,本文研究推薦的獲取控制點步驟如下。
將光柵圖像初轉換的msi 文件添加至Mapgis 點、線、面文件編輯窗口,用合適的子圖(如十字絲形)標記控制點:第1,標記msi 影像右上角點;第2,標記右下角點;第3,從左下按逆時針順序標記圖框四角經緯度角點(此順序只是建議);第4,標記足夠的公里網格交點,可隨機性標記。
第5,利用Mapgis 二次開發程序section 中“1 輔助工具”→“導入導出功能”→“點位置轉屬性”,讓每個控制點子圖具備圖形坐標屬性;第6,增加控制點文件“像素x”、“像素y”、“經度”、“緯度”、“理論Y”、“理論X”、“備注”等屬性;第7,將msi 影像的右上、右下角點根據原光柵圖像的像素行列信息賦予像素坐標,將“第3”步的四角賦予經度緯度坐標屬性。
第8,section 中“1 輔助工具”→“導入導出功能”→“導出屬性數據(EXCEL)”,將剛標記的控制點信息導出至excel。
在導出的Excel 表格中將圖框四角經緯度換算為公里網坐標,注意換算時與原光柵地圖投影參數一致。這步需要經緯度與公里網坐標正反算的軟件,如Mapgis、二次開發的Excel、CoordTools_7.0.0.exe、arcgis等,資源豐富。
設msi 影像有m 列、n 行像素,初始未校正的msi影像右上角P 的圖形坐標為(xP,yP),E 為任一點,其圖形坐標為(xE,yE),像素坐標(xF,yF),顯然,初轉換的msi 影像像素坐標系相對圖形坐標系只有平移、縮放,沒有旋轉,則:
利用式(1)可計算各控制點的像素坐標系坐標。
控制點的理論坐標即是將原msi 影像的控制點的圖形坐標,計算至目標圖形坐標(理論坐標)。根據任兩個已知理論公里網坐標的控制點,計算各控制點的公里網坐標,然后按公里網格間距取整,即得各控制點的理論公里網坐標。圖框四角點的理論公里網坐標,即2.3 節正算的結果,不能取整,若有其它特殊的控制點,也需要像圖框四角一樣,單獨賦予其理論公里網坐標。
總之,本研究正是基于地圖圖面上有規律的公里網或經緯網,利用其規律獲取其交點的理論公里網坐標或經緯度坐標,根據需要的比例尺縮放至理論坐標(目標圖形坐標),與計算而得的各控制點的圖像坐標,形成控制點gcp 文件,用于影像校正。
前面2.1~2.4 節的步驟均易實現,本小節問題較為復雜,這是本研究要解決的關鍵問題之一。抽象化后此問題即:平面坐標系有一組點形成“剛體”,其中兩點對齊這組點外另兩點,求這組點中其它點對齊后的坐標,這種變換稱為平面兩點對齊變換,下面闡述。
設A(xA,yA)、B(xB,yB)、C(xC,yC)、D(xD,yD)為平面坐標系xoy 中不重合的四點,E(xE,yE)為另外任意一點,現令A、C、E 三點組成“剛體”,做變換:A 點對齊B 點、C 點對齊D 點,則E 點將對齊F(xF,yF)點,現在已知A、B、C、D、E 五點的坐標,求F 點坐標。引用矢量的內積、外積定義與性質,及矢量旋轉矩陣[4],經推導,有
式中:
式(2)即可完成平面二點對齊變換,其中ABCDE五點的坐標均為已知,可求得F 點坐標。
雖然,式(2)在Excel 中編輯公式可以實現,但若應用Excel 內置的VBA[5]編輯自定義函數,更加方便快捷。
利用式(2),可求得對應F 點坐標(xF,yF),即該控制點的公里網坐標,但不是最終理論公里網坐標,需要將其按公里網格間距取整。理論公里網坐標一般為整數,甚至是10、100、1 000、…的倍數,比如,公里網格間距為500 m,按100 m 取整,即可獲得正確的理論公里網坐標。
各控制點的xF、yF 坐標還可以繼續變換,如縮放(可控制msi 影像校正后的比例尺)、換帶計算、不同坐標系轉換(簡單的平移)等,這些在Excel 中容易實現。這樣事情做好一次后,在Excel 中可以復制,極方便形成gcp 校正文件,這才是本研究倡導的這種獲取gcp文件方法的方便快捷之處。
圖2 為獲取msi 影像校正gcp 文件的實例截圖(圖中設置了小數位數顯示,實際小數未顯示全)。

圖2 計算像素坐標系坐標、理論公里網坐標實例
該msi 影像有m=12 153 列、n=9 697 行像素,msi影像右上角的圖形坐標(12 153,9 697),第1 行為表頭,注意:大寫的X、Y 表示南北向、東西向坐標,后面有114、117 表示該公里網坐標的投影中央子午線經度,小寫的x、y 表示東西向、南北坐標,經度、緯度以“d.ffmmm”格式表示,如114.123 456 表示114°12′34.56″。第2 行為要校正的地圖名稱。第3、4 行為msi 影像右上、右下角點坐標信息。第5~8 行為地圖圖框四角點坐標信息,已知其經緯度坐標,公里網坐標為正算獲得。第9 行及之下為公里網交點的控制點,圖中公式欄中顯示單元格H9:I9 的數組公式編輯狀態,當“ctrl+shift+enter”后,公式編輯欄顯示見圖3。

圖3 公式編輯欄中顯示的數組公式
表明自定義函數xFyF_from_AtoB_CtoD_EtoF 存在于工作簿《Hong2024.xlsm》中。在其它工作簿中引用該自定義函數時,必須同時將《Hong2024.xlsm》打開,否則找不到該函數。
計算像素坐標所引用的公式顯示見圖4、圖5。

圖4 D5 單元計算像素x 坐標

圖5 E5 單元格計算像素y 坐標
上面已經獲取了形成gcp 文件的要素,要形成gcp 文件,只需將這些要素提取至gcp 文件中。可在圖2 中的后面列如PQRS 四列中直接重現前面像素坐標與理論公里網坐標的四列內容(令該單元“=”另外的單元格即可),在O 列形成以1 起始的序號列,將這五列復制到已有的gcp 文件中,代替gcp 文件中原有內容,再將這五列分隔符(tab 制表符)替換為英文豆點,保存。也可編輯公式直接形成這五列內容,代替某gcp文件中原有內容,形成新的gcp 文件。
本研究倡導的這種獲取gcp 文件的方法有如下特點:
(1) 矢量化控制點比傳統方法簡化了很多切換窗口、縮放窗口、平移窗口、點擊鼠標的步驟,也不必制作參照文件,控制點采集不考慮順序,能有效避免人工錯誤,大大改善了控制點采集體驗,當有大量的msi 文件需要校正時,更能提高效率。
(2) 形成一次獲取gcp 文件工作表后,注意公式中對單元格的相對引用、絕對引用,在Excel 中可以復制整個實例,只粘貼替換圖形坐標兩列與msi 影像的像素列數、行數,處理好特殊情況如圖框四角點的經緯度坐標,即可自動計算,極方便形成gcp 校正文件,這是本研究倡導的這種獲取gcp 文件方法的方便快捷之處。
(3) 理論公里網坐標還可以再次轉換,如:將1954 北京坐標系坐標轉換為CGCS2000 坐標,或者六度帶換算為三度帶等,獲得最終的理論公里網坐標,可輕易實現msi 影像的坐標變換、比例縮放。
(4) 若將圖形坐標與理論坐標組成坐標對,可形成誤差校正文件,用于Mpagis 圖形文件的誤差校正。