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 批量等距离裁剪影像-续