Python遥感图像处理应用篇:python如何使用numpy对遥感图像做卷积运算

Posted 空中旋转篮球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python遥感图像处理应用篇:python如何使用numpy对遥感图像做卷积运算相关的知识,希望对你有一定的参考价值。

本篇接着上一篇(Python遥感图像处理应用篇(四):python如何使用numpy读取遥感图像光谱值)继续深入,对遥感图像做卷积运算处理

1.基本思路

1.1 设置卷积核

这里就用3*3大小的卷积核吧,可以根据需求任意设置卷积核数据达到图像均衡化、锐化、边缘增强等不同效果。

1.2 中心像元周围像元对应位置读取

中心像元位置为i,j

2.通过代码进行计算

代码如下,没有包装成函数,这里直接顺序计算了:

这里计算的是第一波段的遥感影像数据:

import io
import numpy as np

data=np.genfromtxt("OLI8_12340_20190817_testData.txt" ,delimiter=',')
#print(data.astype(int))
    
#图像锐化卷积核
kernel_arr=np.array([[-1,-1,-1],[-1,9,-1],[-1,-1,-1]])


#for band in range(2,9):
newdata=data[0:307980,2]#读取第1波段
newdata.astype(int)
image_arr=newdata.reshape(531,580)
print("第一波段为:",image_arr)

#创建相同大小的空数组
newimage_arr0=[0]*307980
newimage_arr=np.array(newimage_arr0)
newimage_arr1=newimage_arr.reshape(531,580)
for i in range(1,530):
    for j in range(1,579):       
        newimage_arr1[i][j]=kernel_arr[0][0]*image_arr[i-1][j-1]+kernel_arr[0][1]*image_arr[i-1][j]+kernel_arr[0][2]*image_arr[i-1][j+1]+kernel_arr[1][0]*image_arr[i][j-1]+kernel_arr[1][1]*image_arr[i][j]+kernel_arr[1][2]*image_arr[i][j+1]+kernel_arr[2][0]*image_arr[i+1][j-1]+kernel_arr[2][1]*image_arr[i+1][j]+kernel_arr[2][2]*image_arr[i+1][j+1]
print("卷积运算结果为:")
print(newimage_arr1.astype(int))

np.savetxt('001.txt',(newimage_arr1.astype(int)))

3.数组转换为图像

使用arcgis重新转换为图像数据对比效果:

原图

卷运算结果图

 

以上是关于Python遥感图像处理应用篇:python如何使用numpy对遥感图像做卷积运算的主要内容,如果未能解决你的问题,请参考以下文章

Python遥感图像处理应用篇(二十一):Python+GDAL 批量计算遥感图像NDVI指数

Python遥感图像处理应用篇(二十五):Python+GDAL 波段组合

Python遥感图像处理应用篇(二十五):Python+GDAL 波段组合

Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像-续

Python遥感图像处理应用篇(二十二):Python+GDAL 批量等距离裁剪影像-续

Python遥感图像处理应用篇(二十四):Python绘制遥感图像各波段热力图(相关系数矩阵)