遥感图像拉伸python
时间: 2023-08-27 17:16:20 浏览: 109
在Python中,你可以使用OpenCV库来进行遥感图像的线性拉伸。下面是一个示例代码:
```python
import cv2
import numpy as np
def linear_stretch(image, new_min=0, new_max=255):
# 获取图像的最小值和最大值
min_value = np.min(image)
max_value = np.max(image)
# 线性拉伸计算
stretched_image = (image - min_value) * (new_max - new_min) / (max_value - min_value) + new_min
# 对像素值进行截断,确保在范围内
stretched_image = np.clip(stretched_image, new_min, new_max)
# 将像素值转换为整数类型
stretched_image = stretched_image.astype(np.uint8)
return stretched_image
# 读取遥感图像
image = cv2.imread('remote_sensing_image.jpg', cv2.IMREAD_GRAYSCALE)
# 进行线性拉伸
stretched_image = linear_stretch(image)
# 显示原始图像和拉伸后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Stretched Image', stretched_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先定义了一个名为`linear_stretch`的函数,该函数接受一个灰度图像和新的最小值和最大值作为输入。然后,我们使用`np.min`和`np.max`函数获取图像的最小值和最大值。接下来,我们根据线性拉伸的公式计算新的像素值,并使用`np.clip`函数将像素值截断到新的范围内。最后,我们将像素值转换为无符号8位整数类型,并返回拉伸后的图像。
在主程序中,我们首先使用`cv2.imread`函数读取遥感图像(请确保将图像路径替换为实际图像的路径)。然后,我们调用`linear_stretch`函数进行线性拉伸。最后,我们使用`cv2.imshow`函数显示原始图像和拉伸后的图像,并使用`cv2.waitKey`和`cv2.destroyAllWindows`等函数来控制图像显示。
阅读全文