遥感影像的缨帽(K-T)变换Python实现

news2025/4/21 9:59:46

(1)介绍

缨帽变换(Kirchhoff Transform,K-T变换) 是一种在遥感图像处理中常用的技术,它可以有效地提取地物的空间特征和频谱信息。本文将对遥感缨帽变换的提出者、原理方法、公式、现在的发展、作用进行详细介绍,并附有相应的图解。

(2)利用程序结果进行出图展示

TM影像的前三个分量的物理意义:
●亮度:TM的6个波段的加权和,反映了总体的反射值。
●绿度: 反映了近红外与可见光部分的差值,绿色生物量的特征。
●湿度:反映了可见光和近红外(1-4波段)与较长的红外(第5, 7波段)的差
值,定义为湿度的根据是第5,7两个波段对土壤湿度和植物湿度最为敏感
在这里插入图片描述

(3)缨帽(K-T)变换变换原理详解

一、提出者

缨帽变换是由德国地球物理学家Gottfried Kirchhoff在19世纪50年代首次提出的。他将电磁波在介质中传播的过程进行了详细研究,并提出了一种计算电磁波在介质表面反射和透射的方法,即遥感缨帽变换。

二、原理方法

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、公式

在这里插入图片描述

(4)Python程序

在这里插入图片描述

# coding=utf-8
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: LIFEI
@time: 2023/8/23 13:28
@file: yincat.py
@project: main.py
@describe: CWNU
"""
import os
import cv2 as cv
import numpy as np

# 构建缨帽变换的转换系数
compose = [[0.3037,0.2793,0.4743,0.5585,0.5082,0.1863],      #对应的亮度分量
          [-0.2848,-0.2435,-0.5436,0.7243,0.0840,-0.1800],  # 对应的植被分量
          [0.1509,0.1973,0.3279,0.3406,-0.7112,-0.4572]]    #对应的湿度分量
compose = np.array(compose) # 将列表转为矩阵

# 获取影像数据存储于列表
def get_img_list(path):
    is_image_file = lambda x : any(x.endswith(extension)
                                   for extension in ['tif'])
    tm = [x for x in os.listdir(path) if is_image_file(x)]
    tm_list = []
    for j in range(0,len(tm)):
        tm_path = path + '/' + tm[j]
        print('the reading img is:',tm_path)
        tm_list.append(tm_path)
    print('Successfully reading')
    return tm_list

# 批量读取矩阵并将其存储于列表
def hat_change(list_path):
    img_base = []
    for k in range(0,len(list_path)):
        # print(list_path[k])
        #  !!!!!一定要记住flags=0,不然会返回三通道
        img = cv.imread(list_path[k],flags=0)
        # cv.imshow('tif',img)
        # cv.waitKey(0)
        img_base.append(img)
    return img_base

# 缨帽变换
def compose_hat(compose_x,img):
    res_list = []
    result_list = []
    for i in range(0,len(img)):
        # 获取影像的行列大小
        row, col = img[i].shape
        # 将影像转为一维行向量
        reshape_img = img[i].reshape(row*col)
        # 传入列表res_list
        res_list.append(reshape_img)
    # 波段6不参与,也就是列表的第5行,删除第5行以不参与运算
    delete_res_list = np.delete(res_list, 5, axis=0)
    for j in range(0,len(compose_x)):
        result_data = compose_x[j]@delete_res_list
        # 判断影像中的空值和0值,用均值代替,防止影像信息缺失
        for p in range(0,len(result_data)):
            if result_data[p] == 0 and result_data[p] == None:
                result_data[p] = np.nanmean(result_data)
            else:
                result_data[p] = result_data[p]
        # 维度转换逆变换,从向量转为二维
        result_data_data = result_data.astype('uint8').reshape(row,col)
        # 传给result_list
        result_list.append(result_data_data)
    return result_list

# 输出影像
def output(out_path,list):
    for m in range(0,len(list)):
        filepath = out_path+'/'+str(m+1)+'.TIF'
        # cv库写出图像
        cv.imwrite(filepath,list[m])
        print('the exporting img is:',filepath)
    print('Successfully exported!')

if __name__ == '__main__':
    path = "D:/data/result" # 存放TM影像的文件夹路径
    list = get_img_list(path)
    img_list = hat_change(list)
    re_list = compose_hat(compose, img_list)
    outpath = "D:/data/hat" # 输出路径
    output(outpath, re_list)

四、现在的发展
随着遥感技术的发展和广泛应用,遥感缨帽变换也得到了进一步的研究和改进。近年来,研究人员结合机器学习、深度学习等技术,提出了一系列基于缨帽变换的新方法,用于地物分类、目标检测、变化检测等应用。同时,缨帽变换在图像处理领域也得到了拓展,可以应用于医学图像分析、遥感图像融合等多个领域。

五、作用
遥感缨帽变换在遥感图像处理中具有广泛的作用。它可以提取地物的空间特征和频谱信息,有助于实现地物的分类、目标检测、变化检测等应用。通过遥感缨帽变换,可以充分利用遥感图像中的信息,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/923711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis (3)-----分页的运用

目录 一、分页查询 二,特殊的字符处理 三、总结 前言:在我们上篇已经学的动态sql的基础上,今天继续讲解关于maybatis的分页,特殊的字符处理。希望这篇博客可以帮助到大家哦! 一、分页查询 为什么要重写mybatis的分…

ATFX汇市:美国PMI数据不及预期,非农基数又遭下修,经济前景堪忧

环球汇市行情摘要—— 昨日,美元指数下跌0.22%,收盘在103.38点, 欧元升值0.17%,收盘价1.0864点; 日元升值0.7%,收盘价144.85点; 英镑贬值0.06%,收盘价1.2725点; 瑞郎…

基于Visual studio创建API项目

API(英文全称:Application Programming Interface,中文:应用程序编程接口) 为什么要 通过API接口可以与其他软件实现数据相互通信,API这项技术能够提高开发效率。 本文是基于vs2017 .net平台搭建API。希望可以帮助到学…

Python Opencv实践 - 图像直方图自适应均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/cat.jpg", cv.IMREAD_GRAYSCALE) print(img.shape)#整幅图像做普通的直方图均衡化 img_hist_equalized cv.equalizeHist(img)#图像直方图自适应均衡化 #1. 创…

一、MQ的基本概念

1、初识MQ MQ全称是Message Queue,消息队列,多用于系统之间进行异步通信。队列的概念数据结构中有详细介绍过,先进先出,消息队列就是存储消息的数据结构。 同步调用和异步调用两者之间的区别: 同步调用:发…

使用yapi生成漂亮接口文档

YApi-教程 1. 进入yapi 的菜单 2. 从微服务中导出swagger的json 从浏览器页面访问http://localhost:端口/服务/swagger-ui.html,然后打开浏览器的控制台,查看network,刷新下页面,找到XHR中的api-docs,然后查看res…

【代码】Java中的动态代理实战

文章目录 1. JDK 动态代理2、CGLIB 动态代理 动态代理允许你在运行时创建代理对象,来代替原始对象执行某些操作。这在AOP(面向切面编程)中非常有用,用于实现日志记录、性能监控、事务管理等功能。 Java提供了两种主要的动态代理实…

缓存的设计方式

问题情况: 当有大量的请求到内部系统时,若每一个请求都需要我们操作数据库,例如查询操作,那么对于那种数据基本不怎么变动的数据来说,每一次都去数据库里面查询,是很消耗我们的性能 尤其是对于在海量数据…

【0基础入门Python Web笔记】一、python 之基础语法、基础数据类型、复合数据类型及基本操作

一、python 之基础语法、基础数据类型、复合数据类型及基本操作 基础语法规则基础数据类型数字类型(Numbers)字符串类型(String)布尔类型(Boolean) 复合数据类型List(列表)Tuple&…

【C++代码】有序数组的平方,长度最小的子数组,螺旋矩阵 II--代码随想录

题目:有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 题解 数组其实是有序的, 只不过负数平方之后可能成为最大数了。那么数组平方的最大值就在数组的…

shell 编写一个带有进度条的程序安装脚本

需求 使用 shell 写一个 软件安装脚本,带有进度条 示例 #!/bin/bash# 模拟软件安装的步骤列表 steps("解压文件" "安装依赖" "配置设置" "复制文件" "")# 计算总步骤数 total_steps${#steps[]}# 安装进度的初…

JVM——类加载与字节码技术—类加载器+运行期优化

5.类加载器 jdk的类加载器具有层级关系。 启动类加载器》扩展类加载器》应用程序类加载器》自定义类加载器 对应类加载器只会负责加载对应目录的类。 双亲委派上级机制 应用程序类加载器加载一个类之前会先查询上级加载器是否已经加载过了该类。然后再让上级询问上上级。都…

代码随想录算法训练营第四十四天|LeetCode 309,714

目录 LeetCode 309.最佳买卖股票时机含冷冻期 动态规划五步曲: 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 5.打印dp数组 LeetCode 714.买卖股票的最佳时机含手续费 动态规划五步曲: 1.确定dp[i]的含义 2.找出递推公式 3.初始…

项目构建工具:CMake的核心用法

Golang有go mod、Python有pip、Java有maven。但C语言没有这么好用的包管理工具。当然Conan大概可以算是一个,但其也有自身的局限性,使用起来并不简单。 这就导致我们在写C代码的时候,老是要把心思放在怎么构建项目上。比如有一个项目&#x…

重磅!亚马逊将于10月再次举行秋季会员大促!

今年亚马逊7月份的Prime Day大促出乎卖家意料,效果出奇之好,大促确实有提振销量和信心的奇效。 而在近期,亚马逊宣布,将在今年10月,继续为亚马逊Prime会员带来“Prime秋季会员大促”。 19个国家(包括澳大…

使用BeanShell写入内容到文件【JMeter】

一、前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

使用代理突破浏览器IP限制

一、实验目的: 主要时了解代理服务器的概念,同时如何突破浏览器IP限制 二、预备知识: 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站,特别是它具有一个cac…

【Python】从入门到上头—Python基础(2)

文章目录 一.基础语法1.编码2.标识符3.保留字4.注释5.行与缩进6.多行语句7.数字(Number)类型8.字符串(String)9.空行10.等待用户输入11.同一行显示多条语句12.多个语句构成代码组13.print 输出14.import 与 from...import 二.基本数据类型1.变量和赋值2.多个变量赋值3.标准数据…

win10某个软件字体模糊修复

1、在桌面找到该软件,右键选择属性,如下: 2、打开后选择兼容性--更改高DPI设置。 3、点击高DPI缩放替代--应用程序。 4、点击应用,然后退出属性设置。重新打开软件,发现软件字体变得清晰了。

MySQL 保存日期用哪种数据类型

写在前面 在设计数据库表时不可避免的需要用到时间类型,到底选择那种数据类型来表示时间是一个值的讨论的问题,本文就一起来看下! 1:能用哪些数据类型 1:字符串:不要用,占用空间大,至少需要19个字节&…