卫星图像与重叠区域的插值

时间:2011-11-14 05:43:42

标签: python image-processing interpolation

我在插入卫星图像方面遇到了问题。我理解卫星如何拍摄地球的图像:

enter image description here

我正在尝试使用以下代码执行插值:

import scipy as sc
import scipy.interpolate as spi
import numpy as np

def interpolate_data(img, lat, lon):

p_x, p_y = sc.mgrid[-1:1:lat.shape[0]*1j, -1:1:lon.shape[1]*1j] 
n_x, n_y = sc.mgrid[-1:1:img.shape[0]*1j, -1:1:img.shape[1]*1j] 
n_lat = spi.griddata((p_x.ravel(), p_y.ravel()), lat.ravel(), (n_x, n_y), method='linear') 
n_lon = spi.griddata((p_x.ravel(), p_y.ravel()), lon.ravel(), (n_x, n_y), method='linear')
print "n_lat:",n_lat.shape
print "n_lon:",n_lon.shape
print "img:",img.shape
return n_lat, n_lon

但如果我以这种方式进行插值,我将得到不正确的数据。

在我的情况下,卫星将拍摄9次地球。在曲线A和曲线B之间是卫星在第一次拍摄中拍摄的区域。在曲线C和曲线D之间是卫星在第二次拍摄中所占的面积。 E和F是重叠的区域。

如果我使用上面的代码进行插值,我会计算两次重叠区域并给出错误的数据。所以我想问一下是否有办法只计算一次这些重叠区域。感谢。

enter image description here

如果我使用上面的代码进行插值,我会计算两次重叠区域并给出错误的数据。所以我想问一下是否有办法只计算一次这些重叠区域。感谢。

2 个答案:

答案 0 :(得分:1)

如果您的图片附有地理范围数据(例如GeoTIFF文件),您可以考虑使用GDAL library,此库是用C / C ++编写的,但也有python package

它可以使用许多不同的格式,并有几种不同的图像处理方法用于图像变形和转换。

答案 1 :(得分:0)

难道你不能只连接所有9个镜头的数据,并一次插入所有数据吗?我认为没有理由分别处理这九个数据集。如果你有一个,我认为你最好创建9个不同的图像。