gpt4 book ai didi

python - 在 python 中读取 16 位或 32 位图像

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:40 24 4
gpt4 key购买 nike

我如何通过 python 读取 16 位或 32 位图像并获取正确的图像值作为数组?

我尝试使用 PIL + Numpy 和 GDAL + Numpy 等读取 SRTM(航天飞机雷达地形图任务)。我只需要一小块,所以我使用 ArcGIS 获取我需要的范围作为一个 tif 文件。

但是,通过上面的测试,数组中的值是不正确的。例如,我在CA中使用了一个SRTM,它的高程范围是136到737,但是当我使用numpy获取最大值和最小值时,数组值范围是-3.40到737,并且出现了很多负值。我能做些什么?我会犯一些错误吗?

我使用 ipython 的代码如下:

import Image
import numpy as num
im=Image.open('srtm.tif')
imarray=num.array(im)
imarray
array([[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
...,
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00]], dtype=float32)
import gdal
tif = gdal.Open('srtm.tif')
arr = tif.ReadAsArray()
arr
array([[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
-3.40282347e+38, -3.40282347e+38, -3.40282347e+38],
[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
6.11000000e+02, 6.17000000e+02, 6.17000000e+02],
[ -3.40282347e+38, -3.40282347e+38, 4.00000000e+02, ...,
6.11000000e+02, 6.17000000e+02, 6.17000000e+02],
...,
[ 1.50000000e+02, 1.50000000e+02, 1.48000000e+02, ...,
1.73000000e+02, 1.73000000e+02, 1.73000000e+02],
[ 1.49000000e+02, 1.49000000e+02, 1.48000000e+02, ...,
1.73000000e+02, 1.73000000e+02, 1.73000000e+02],
[ 1.49000000e+02, 1.49000000e+02, 1.48000000e+02, ...,
1.73000000e+02, 1.73000000e+02, 1.73000000e+02]], dtype=float32)

num.max(arr)
737.0
num.min(arr)
-3.4028235e+38

最佳答案

我猜这些值实际上是正确的。许多形式的科学图像使用极高或极低的特定值来表示空像素或饱和像素。我的建议是不将这些像素包括在任何计算中或将它们设置为零,如:arr[arr < 0] = 0 .

关于python - 在 python 中读取 16 位或 32 位图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com