QGis二次开发基础 -- 栅格图像增强显示

本文介绍了QGIS中如何进行栅格图像的增强显示,重点讨论了QgsRasterLayer类的setContrastEnhancement方法和QgsBrightnessContrastFilter类,用于调整对比度和亮度。文章还提到了histogramStretch和adjustBrightnessContrast两个关键函数的使用,并提供了QGIS二次开发的相关资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作为一个GIS软件,对栅格图像的基本支持也是必须的。QGis能够打开显示多种格式的栅格图像,包括常用的JPEG、PNG,以及遥感图像格式ENVI Image、GeoTIF等。今天想来聊一聊简单的几个调整栅格图像对比度、亮度以及拉伸增强显示的基本功能。
这里写图片描述

关于如何添加数据显示,请参考 栅格矢量数据显示

两个类

QgsRasterLayer

栅格图层 QgsRasterLayer 与 QgsVectorLayer 一样,都是 QgsMapLayer 的子类,是作为地图空间显示的图层对象。这个对象包含了许多栅格图层的属性以及显示方式等方法,今天我们关心的重点在于拉伸显示、对比度、亮度等调整,因此从API文档中,重点关注几个地方:

  • setContrastEnhancement 方法
  • 对比度和亮度的控制

setContrastEnhancement 是栅格图层控制拉伸显示的方法,它通过特定的拉伸方式、拉伸值域范围、显示图像的范围等参数来增强显示的样式。定义如下:
这里写图片描述
其中我们需要特别关注前三个参数。

QgsContrastEnhancement::ContrastEnhancementAlgorithm 为选用的拉伸算法,具体包括:

  • NoEnhancement –> 无增强
  • StretchToMinimumMaximum –> 最小最大值拉伸
  • StretchAndClipToMinimumMaximum –> 最小最大值拉伸并裁剪值域范围
  • ClipToMinimumMaximum –> 裁剪值域范围到最小最大值
  • UserDefinedEnhancement –> 用户自定义

而 QgsRaster::ContrastEnhancementLimits 为控制增强的值域范围,包括:

  • ContrastEnhancementNone –> 无增强
  • ContrastEnhancementMinMax –> 最小最大值(默认)
  • ContrastEnhancementStdDev –> 标准差方差范围
  • ContrastEnhancementCumulativeCut –> 累计裁剪范围

QgsRectangle 就是选择要统计值域的范围了,这个参数可以控制拉伸是用全图的值域拉伸还是仅仅根据当前显示范围的值域进行拉伸。

从QgsRasterLayer 的API文档中,我们看到分别包含一个控制对比度显示的类 QgsBrightnessContrastFilter 的引用,于是下面我们关注一下这个类。

QgsBrightnessContrastFilter

QGis中用于控制栅格图像对比度和亮度的对象为 QgsBrightnessContrastFilter ,来看看他的基本方法:
这里写图片描述
可以看到,调整栅格图层显示亮度的方法为 setBrightness(), 调整显示对比度的方法为 setContrast()。很明了,利用这两个方法就能控制亮度和对比度了,非常简单。

两个

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值