rasterio open和skimage.io.read都返回我要打开的TIFF的NaN数组

问题描述 投票:0回答:1

我正在尝试从哨兵1打开SAR图像。我可以在QGIS中查看tiff文件,所以我知道数据在那里,但是当我打开并在python中查看/显示它时,我可以用来打开数据的所有模块都会产生一个NaN区域,这基本上意味着图像中没有数据。可视化图像会生成全黑图像,但是形状正确。

这是我在图像中读取的代码:

img = skimage.io.imread('NewData.tif', as_gray = True, plugin = 'tifffile')
with rio.open(r'NewData.tif') as src:
    img2 = src.read()
    imgMeta = src.profile

print(img)

skimage.io.imshow(img)

任何帮助将不胜感激。

谢谢

python-3.x tiff scikit-image rasterio
1个回答
0
投票
问题不在rasterioskimage导入图像的方式上,而是在显示图像的方式上。我想您正在使用未转换为分贝dB标度的校准SAR图像。这就是问题,您的数据的动态范围。

这里的问题是,默认情况下,根据光栅直方图中的值分布,色带不会处于拉伸状态。在QGISSNAP或许多其他与EO相关的软件中,颜色分布与直方图匹配以产生适当的可视化效果。

Solution:您可以在代码中做到这一点,或者只是将反向散射值转换为分贝(这是处理SAR数据时非常常见的过程)。可以在EO软件中完成转换,也可以直接在导入的图像中执行以下转换:

srcdB = 10*np.log10(src)
完成后,您可以正确显示图像:

import rasterio from rasterio.plot import show with rio.open(r'/.../S1B_IW_GRDH_1SDV_20190319T161451_20190319T161520_015425_01CE3C_A401_Cal.tif') as src: img2 = src.read() imgMeta = src.profile srcdB = 10*np.log10(src) # to decibel show(srcdB, cmap='gray') # show using rasterio

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.