影像糾正配準功能的開發
將近兩年前,我開發了一個影像糾正配準功能,可以說是本人開發的軟件中為數不多的具有一定挑戰性的功能,不記下來實在有點可惜,所以現在憑借有限的記憶作一個記錄吧。
當時公司正在為某城市做一個土地利用調查的項目,采用的比例尺是1/5000,數據的建庫、生產與管理軟件均由我單位提供。生產工藝流程:航攝->生產分幅影像->影像打印成分幅圖件->現場調查、在圖件上線劃標記->掃描圖件->圖件糾正與鑲嵌->在GIS中線劃接邊(下面步驟略)。當時感覺這幾個步驟挺傻的,外業人員直接帶上筆記本電腦、裝好GIS系統、套上幅影像,邊調查邊線劃不就得了嗎?打印費都可以省幾百萬啊。當然,這個我們也管不了,但其中“圖件糾正與鑲嵌”功能是我們軟件中所沒有的,必須進行開發。這個功能我當時開發了兩個版本,第一個是用VB+MO開發的,第二個是是Delphi開發的,不需要GIS平臺。其實兩件版本的操作都挺方便的,主要是因為VB的圖像操作功能比較弱,什么都要用API,當時只能整體糾正,有些地方精度達不到要求;第二版本采用了逐格網糾正,精度很高,下面只介紹第二個版本。
首先當然是要弄清楚究竟是要做什么。由于接手時,經驗很少,這個問題真難住了我幾天,后來慢慢學習體會,總結下來大概有以下幾個功能點:一、對影像進行糾正,消除圖像在打印和掃描過程中產生的變形。二、以糾正后的結果進行裁切,只留下內圖幅范圍所需要內容;三、為影像生成坐標文件,以方便加載到地圖中。
對于影像的糾正,實際上是根據選定的公式,對圖片每一個像素點進行轉換,放到目標圖片相應的位置上,或者反過來,遍歷目標圖片的像素點,根據公式,計算它對應在原始圖片的哪個位置上,然后取得灰度值 。顯然第二種方法比較理想,不會產生空白區域。我最后選擇的是第二種方法。由于是按公式進行轉換,對應到原始圖像上時,不一定是整數,在計算灰度值的時候,可以先擇一定的方法,例如取最鄰近的像素點,或按一些方法進行計算。我最后提供了最鄰近法與雙線性內插法兩種計算灰度的方法。
影像糾正最重要的一點還是轉換公式的選擇。 有很多公式可以選擇,如仿射變換、雙線性變換、二次多項式法、三次多項式法等。但公式所需參數是公式的參數需要計算的,越復雜的公式,精度會越高,但計算的難度越大。由于項目很緊,對于高次冪的公式,我也實在算不過來,最后選擇一個精度不錯,復雜度不高的算法:雙線性變換法,公式為:X = axy + bx +cy + d Y = exy + fx + gy + h需要八參數,正好四組控制點可以搞定。
至于裁切和生成坐標文件,不再詳述。看看以前寫的幫助文件吧,太懶了,哈哈~
推薦按照以下步驟來進行影像的糾正配準操作。
第一步:打開要糾正的影像圖
影像圖打開后,首先需要定位內圖廓的四個角點在影像上的位置。第二步到第四步是配準的過程。這個過程要做的事情實際上就是將所有可以用于參與糾正的控制點找出來,并確定這些控制點在圖像上的位置以及它們真實的地圖坐標。
控制點配準的操作方法:
1、 鼠標靠近要配準的控制點,鼠標形狀會由箭頭形狀![]()
,這表示系統捕捉到了該控制點。
2、 點擊控制點,鼠標形狀會變成十字絲中間有圓形的形狀
。這表示確定對該點進行配準。這里,在圖像點任一處點擊,該點都會移動到點擊的位置。為了使用控制點能精確定位到每個像素,可以點擊鼠標右鍵打開輔助窗口,如下圖所示:
如果正確配準的話,輔助窗口中會用十字絲標識出正在配準的點的位置。輔助窗口打開時是以鼠標右鍵點擊位置為中心的,所以,鼠標右擊的位置最好離正在配準的點的位置比較近。這時,可以通過AWDS四個鍵或方向鍵對輔助窗口中的圖像進行移動。在輔助窗口中點擊控制點的位置,該點就配置成功了,這里,標識該點的十字絲會變成白色。
第三步:設置圖幅信息
點擊“糾正”菜單下的“設置圖幅信息”。

經過第二步,已經知道了內圖廓的影像坐標,但還不知道它們的地理坐標。設置圖幅信息,首要目的就是為了確定圖幅的地圖坐標范圍。這樣,影像坐標就和地圖坐標建立起了一個整體的對應關系。然后系統計算出該圖幅內包含的控制點的地理坐標,并通過建立的對應關系,確定它們在影像上的位置。這樣,就建立起了一個網狀分布控制點格網。
如下圖所示。

設置圖幅后,系統自動建立的控制點格網
第四步:配準所有控制點
配準的方法與第二步相同。通過這步操作,所有控制點的就建立了一個精確的地圖坐標和影像坐標的對應關系。坐標點在配準之前,以紅色顯示,配準完成的以白色顯示。
第五步:糾正
“裁切范圍”的顯示數據為系統根據所輸入的圖幅號計算得出,默認是圖幅四個角點構成的多邊形的最小外接矩形。勾選“啟用載切”對圖幅外的周邊進行載切,糾正后的圖像文件只包啟該范圍中的內容;如不勾行選,則不進行裁切,糾正的結果會包含整幅圖的內容。
單擊“糾正”按扭,進度條顯示糾正進度(見圖22)

(圖22)
糾正時,系統會自動保存內圖廓在影像上的位置,下次打開影像時,會自動以該位置作為默認的內圖廓位置。
糾正完畢后,會包含兩個文件,一個是糾正后的影像文件,一個是定位文件,tfw格式。
整體糾正:如果進行整體糾正,第四步可以省略。
----------------------------------------------------------------------------------
記得偶剛準備開發的時候,我也是一頭霧水,很多概念都搞不清。我先把這個功能交給部門里另一個同事,這個同事剛進公司不久,硬是把他給嚇跑了(辭職),呵呵。沒辦法,只好自己動手。當時我們的一個合作伙伴也想開發這玩藝兒,組織了一個團隊進行開發,開發了一段時間,影子也沒見著,就停工了。這些是插曲。其實開發完畢后,覺得并不是很難,算法上也還可以進一步改進。只是沒以接觸過的人,做起來真的很痛苦,就像蠶蛹破繭成蝶,是不斷掙扎的過程,使上全身的力氣,才能慢慢的展開翅膀,達到成功。
寫得亂七八糟,主要因為不能靜下心來寫,要做的事情還很多啊。
浙公網安備 33010602011771號