卫星图像重叠区域的插值

4 投票
2 回答
995 浏览
提问于 2025-04-17 06:16

我在处理卫星图像的插值时遇到了一些问题。我明白卫星是如何拍摄地球图像的:

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

你难道不能把这9个拍摄的数据都合在一起,然后一次性处理吗?我觉得没有必要把这9个数据集分开来处理。如果你真的有这样的理由,那我觉得你最好还是做9张不同的图片。

1

如果你的图片有地理范围的数据,比如说GeoTIFF文件,你可以考虑使用GDAL库。这个库是用C/C++写的,但也有一个Python包

它可以处理很多不同的格式,并且有几种不同的图像处理方法,可以用来扭曲和转换图片。

撰写回答