利用GDAL進行多項式幾何校正校正新思路

2021-06-12 08:31:14 字數 1151 閱讀 7213

首先說一下最簡單的幾何校正模型---仿射校正模型(叫法可能不對,大家明白即可)。所謂仿射校正,即是通過地理座標來確定轉換關係的。首先根據控制點陣列用gdalgcptogeotransform得到轉換係數,然後代入待校正影像的四個角點座標(0,0),(w,0),(0,h),(w,h)得到八個地理座標值,對八個地理座標值進行簡單排序得到水平方向和豎直方向的四個最值。我覺得在做幾何校正時最好能保持像元解析度不變,因而通過將之前得到的地理座標最值除以解析度即可得到目標影像或結果影像的行列數,此時得到的行列數未必是整數,所以需要做下取整處理,處理之後別忘了對結果影像的像元解析度做下調整,即根據地理範圍與實際行列數重新計算一下,再結合待校正影像的其他四個地理係數即得到結果影像的地理座標轉換係數,這是個關鍵。之後便可逐像元進行座標轉換和重取樣啦,我的重取樣是自己寫的,不一定有gdal的好,不過感覺測試效果不差。也可以到gdal的原始檔裡找它的重取樣函式直接copy過來用的,不過自己之前寫了,就懶得去看gdal的重取樣了。

上面說廢話多了點,其實上面的方法只能做一次的校正,不能(或許是我不知道)做多項式校正。那為什麼我還要介紹它呢?很簡單,因為上面的方法給了我們乙個新的解決思路。檢視gdal的api你會發現,gdal它能夠根據由控制點係數得到的地理轉換係數來進行待校正影像影像地理座標到校正影像(結果影像)的行列號影像座標的轉換,也就是說仿射校正中的待校正影像與結果影像座標之間的轉換計算可以通過gdal來完成(看gdal api 的gdalgcptransform函式解析說明),而gdal在獲取地理轉換係數時是可以多次的,那麼只要我們對用gdal計算出來的待校正影像座標進行重取樣再賦給對應的結果影像像元,這不就達到多項式幾何校正的目的了嗎?在重取樣時我用的是自己的重取樣函式,二次多項式校正的結果與原影像對比如下左邊的是標準影像,中間的是仿射校正結果,右邊的是gdal二次多項式校正結果,測試資料是envi4.5自帶的示例資料,畸變影像其實是對原影像進行了簡單的重投影後得到的:

不過也不知道為什麼得到的多項式校正結果雖然基本校正過去了,但居然比仿射校正的還差。唉,也許是自己的細節處理還不夠好吧。不夠先這樣吧,以後有時間再優化。

),不用積分的。**質量有點水,大家參考下就行了,當然有改良的想法的最好能告訴我一下啦。最近正打算將分類的模組新增進去,到時候會共享出來與大家分享的,期待中。。。

利用單鏈表進行多項式運算

1.什麼是運算子過載函式?2.什麼是友元函式 3.const函式的使用與作用 4.單鏈錶能為大家做些什麼 總所周知資料結構由某一資料元素的集合和該集合中資料元素之間的關係組成,在資料儲存上我們將物理記憶體單元連續的儲存方式稱之為線性結構,例如陣列。物理記憶體單元不連續的稱之為離散結構,資料之間的鏈結...

利用matlab進行多項式求根 符號解

問題描述 對於乙個方程,比如 ax2 bx c 0ax 2 bx c 0 ax2 bx c 0 我們想要求出關於x的表示式 求根 如果a,b,c是已知的,或者說是某個確定的數值,那麼我們就可以直接用roots函式進行求根 數值解 p 1 2 1 roots p 返回結果是 ans 1 1 顯然這裡的...

利用numpy對已知樣本點進行多項式擬合

import matplotlib.pyplot as plt import numpy as np 1.假設有如下樣本點 使用隨機數產生樣本點x 1,2,3,4,5,6,7,8,9,10 y 2,25,16 3,35 6,91 39,20,0 print 樣本點橫座標為 print x print...