16位遥感图像转8位显示 %2线性拉伸
来源:互联网 发布:好玩的网络手游 编辑:程序博客网 时间:2024/06/07 03:22
import cv2import gdalimport numpy as np#计算2% 98%处值作为最小 最大值def minmaximg(width,heigh,img): img_fla = img.flatten() #展成一维数组 #img_fla = np.sort(img_fla) #排序 len=img.max() print('max=%d' % len) num=np.zeros(len+1,dtype=np.int32) print('size=%d'%np.size(img_fla)) for i in np.arange(np.size(img_fla)): num[img_fla[i]]=num[img_fla[i]]+1 #print('img_fla= %d,%d'%(i,img_fla[i])) #print('num %d,%d' % (i, num[img_fla[i]])) p=0 min=0 max=0 print(np.sum(num)) for j in np.arange(len+1): p = num[j] / (width*heigh) + p #print('/n',num[j]) if p>=0.02: min=j break p=0 for j in np.arange(len+1): p = num[j] / (width * heigh) + p # print('/n,%', num[j]) # print('/n,%', p) # print('/n,%', j) if p >= 0.98: max = j break return min,maxdef linearstretching(img,min,max): img=np.where(img > min, img, min) img=np.where(img < max, img, max) img = (img - min) / (max - min) * 255 return imgdef readTif(fileName): dataset = gdal.Open(fileName) if dataset == None: print(fileName+"掩膜失败,文件无法打开") return im_width = dataset.RasterXSize #栅格矩阵的列数 im_height = dataset.RasterYSize #栅格矩阵的行数 im_bands = dataset.RasterCount #波段数 im_data = dataset.ReadAsArray(0,0,im_width,im_height)#获取数据 im_geotrans = dataset.GetGeoTransform()#获取仿射矩阵信息 im_proj = dataset.GetProjection()#获取投影信息 im_blueBand = im_data[0,0:im_height,0:im_width]#获取蓝波段 im_greenBand = im_data[1,0:im_height,0:im_width]#获取绿波段 im_redBand = im_data[2,0:im_height,0:im_width]#获取红波段 im_nirBand = im_data[3,0:im_height,0:im_width]#获取近红外波段 return im_width,im_height,im_bands,im_blueBand,im_greenBand,im_redBand,im_nirBandfileName='E:\SHIP\GF1_PMS1_E107.5_N10.4_20150313_L1A0000693445-MSS1.tiff'im_width,im_height,im_bands,im_blueBand,im_greenBand,im_redBand,im_nirBand = \readTif(fileName)bmin,bmax = minmaximg(im_width,im_height,im_blueBand)gmin,gmax = minmaximg(im_width,im_height,im_greenBand)rmin,rmax = minmaximg(im_width,im_height,im_redBand)im_blueBand=linearstretching(im_blueBand,bmin,bmax)im_greenBand=linearstretching(im_greenBand,gmin,gmax)im_redBand=linearstretching(im_redBand,rmin,rmax)img=cv2.merge([im_blueBand,im_greenBand,im_redBand])cv2.imwrite('GF1_PMS1_E107.5_N10.4_20150313_L1A0000693445-MSS1.jpg',img)
阅读全文
0 0
- 16位遥感图像转8位显示 %2线性拉伸
- 对遥感图像进行2%线性拉伸
- 16位彩色遥感影像显示
- 24位真彩色图像转8位灰度图像
- BMP图像的处理(24位转16位)
- C#的bitMap类.bmp图像 8位转24位 和 24位转8位
- 图像数据的拉伸显示
- 图像位数转换(16位到24位与24位到16位)
- 图像的模式(RGB和CMYK)、通道(8位、16位、32位)分别有什么作用
- 图像转置的SSE优化(支持8位、24位、32位),提速4-6倍
- Bayer图像处理,包括12位到8位映射
- C# 图像 24位转32位(真彩色)
- 8位数码管显示其中之一
- 二值图像、8位灰度图像和彩色图像!
- 关于Winows XP 显示PNG8 图像位深错误
- OpenCV显示图像时,不同位深度的影响
- 使用OpenCV 读取图片 ,再用OpenGL显示,图像有错位
- Symbian下16位bmp图像缩放
- 也许是国内最全“智能音箱”评测,教你如何选 AI 音箱?
- MHA0.57+Centos7 +Mysql5.7 实现Mysql的高可用
- 算法学习(3):动态规划DP
- JQuerymobile实例源代码
- 一种微信直播H5直播与存储回放的HLS摄像机方案
- 16位遥感图像转8位显示 %2线性拉伸
- leetcode 714 Best Time to Buy and Sell Stock with Transaction Fee
- 计算机图形学-直线裁剪(Cohen-Sutherland编码裁剪算法)
- GPX转换为GP5
- MYSQL 子查询返回多列显示
- 重识计算机【一】——分类
- Understanding the JVM(四)对象的访问定位
- 利用matlab做回归分析
- ubuntu遇到了 dpkg was interrupted, you must manually run 'dpkg..的问题