栅格影像处理

本文介绍了如何使用Python中的GDAL和OpenCV库解决栅格影像转换为常见图像格式时颜色发白的问题,通过伽马变换和对比度自适应直方图均衡化(CLAHE)进行色彩校正,并提供离线安装GDAL的方法。
摘要由CSDN通过智能技术生成

业务需求:解决栅格影像转换为jpg,bmp,png等图像时,出现颜色发白的问题

from osgeo import gdal
import numpy as np
import cv2
# 伽马变换
# 伽马变换:解决图像过度曝光问题
def gamma(image):
    fgamma = 1.15# 根据需要自行调节
    image_gamma = np.uint8(np.power((np.array(image) / 255.0), fgamma) * 255.0)# 对像素值进行gamma变换
    cv2.normalize(image_gamma, image_gamma, 0, 255, cv2.NORM_MINMAX)#将图片的值放缩到 0-255 之间
    cv2.convertScaleAbs(image_gamma, image_gamma)#通过线性变换将数据转换成8位
    return image_gamma
# 限制对比度自适应直方图均衡化CLAHE
# 直方图均衡化:增强图像细节
def clahe(image):
    b, g, r = cv2.split(image)#波段拆分
    clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8))# 生成自适应均衡化图像;参数可根据需要自行调节
    b = clahe.apply(b)# 取蓝色波段
    g = clahe.apply(g)# 取绿色波段
    r = clahe.apply(r)# 取红色波段
    image_clahe = cv2.merge([b, g, r])#波段融合
    return image_clahe
def dealImage(tiffFilePathName)
    '''
    tiffFilePathName:路径+文件名称
    '''
	dataset = gdal.Open(tiffFilePathName)# 读取栅格影像
	b = dataset.GetRasterBand(1).ReadAsArray()# 取蓝色波段,并保存到数组中
	g = dataset.GetRasterBand(2).ReadAsArray()# 取绿色波段,并保存到数组中
	r = dataset.GetRasterBand(3).ReadAsArray()# 取红色波段,并保存到数组中
	bgr = cv2.merge([r, g, b]) # 波段融合
	bgr=bgr/bgr.max() # 除以最大值
	bgr=bgr*255 -0.001 # 将图片的值放缩到 0-255 之间
	bgr=bgr.astype(np.uint8) # 类型转换
	image_gamma = gamma(bgr)
	image_clahe = clahe(image_gamma)
	cv2.imencode('.bmp', image_clahe)[1].tofile("result.bmp")

依赖库:opencv库和gdal
安装方式:

  1. opencv安装比较容易,略过
  2. gdal库离线安装,安装包地址:
    • windows包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal
    • linux包:https://sourceforge.net/projects/gdal-wheels-for-linux/files/
  3. 或者在自己的conda环境下安装gdal,例如:
# 激活已经创建好的名为gdalEnv的conda环境
conda activate gdalEnv
# 执行安装gdal
conda install gdal
#conda离线安装第三方库
conda install --offline 下载好的第三方库文件路径
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值