【记录】Tiff图像的前处理,median blur filter 及 linear stretch

news2025/7/15 11:34:58

文章目录

    • 读取Tiff
    • median blur filter 中值滤波器
    • 替换百分位值
    • 值域变成[0,255]

从Google Earth Engine上下载的sentinel-1遥感影像(float32)。对于SAR影像在使用前可以做如下前处理:

  1. 去除SAR噪点
  2. 替换百分位2%以下及百分位98%以上的点
  3. linear stretch 将sentinel-1的值域转化为0-255

当然也可以不做,应该不影响。

读取Tiff

import os
import cv2
import numpy as np
from osgeo import gdal
from scipy import ndimage
import matplotlib.pyplot as plt
def read_Tiff(filename):
    dataset = gdal.Open(filename)
    im_width = dataset.RasterXSize
    im_height = dataset.RasterYSize
    im_data = dataset.ReadAsArray(xoff = 0, yoff = 0, xsize = im_width, ysize = im_height)
    return dataset, im_data
    
tiff_file = $FILE_DIR
tiff_dataset, tiff_data = read_Tiff(tiff_file)

median blur filter 中值滤波器

median blur filter 是一种去除SAR影像噪点的方法,具体是用 以某一个点为中心,周围m*n大小的矩阵的中值来代替某一个点的值。具体可以用scipy中的ndimage实现。

filter_data = ndimage.median_filter(tiff_data, size = 5, mode = 'nearest')

左图为原图,右图为中值滤波器作用后的结果。

左图为原图,右图为中值滤波器作用后的结果。

替换百分位值

我也不知道为什么要做这个,但论文里是这么写的。好像是可以边缘增强。

import copy
per2 = np.percentile(filter_data[np.isnan(filter_data)==False],2)
per98 = np.percentile(filter_data[np.isnan(filter_data)==False],98)
print(per2, per98)
>> -21.94152530670166 2.2695427560806287

new_tiff_data = copy.deepcopy(filter_data)
new_tiff_data[new_tiff_data < per2] = per2
new_tiff_data[new_tiff_data > per98] = per98
print(np.nanmin(new_tiff_data), np.nanmax(new_tiff_data))
>> -21.941525 2.2695427

左图为中值滤波器作用后的结果,右图为百分数作用后的结果。

左图为中值滤波器作用后的结果,右图为百分数作用后的结果。

值域变成[0,255]

将值域为[-22.294464, 2.497968]的tiff图像转换到[0,255]。这里使用最简单的linear stretch。可以用专门的函数实现:cv2.normalize(),参考这里,也可以按以下关系式自己写:
x ′ = x − m i n m a x − m i n ∗ ( m a x ′ − m i n ′ ) + m i n ′ x' = \frac{x-min}{max-min} * (max'-min') + min' x=maxminxmin(maxmin)+min 其中,max和min是原数组最大最小值,max‘ min’ 对应255 和 0。

value_convert_data = ((new_tiff_data - np.nanmin(new_tiff_data))/(np.nanmax(new_tiff_data) - np.nanmin(new_tiff_data))) * 255 + 0

在这里插入图片描述

转换为0-255以后的结果。
最后画一下像素的直方图
hist = cv2.calcHist([value_convert_data[np.where(np.isnan(value_convert_data)==False)]],[0],None,[256],[0,255])
plt.figure()
plt.plot(hist)

不做百分位处理的直方图

不做百分位处理的直方图。

做百分位处理的直方图

做百分位处理的直方图。

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

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

相关文章

【web3】使用web3.js发布并执行智能合约

前言 昨天我们学习了使用 web3.js 库查询链上区块和交易的用法&#xff0c;今天我们来介绍一下使用 web3.js 与智能合约的交互。在学习本节前&#xff0c;你应该对智能合约有一定的了解。 智能合约的生命周期包括 创建、发布、执行 以及 销毁。 创建&#xff1a;在 Remix 中…

华为云CDN,助力电商平台无惧流量洪峰

对于电子商务平台来说&#xff0c;接连不断的促销活动支撑着电子商务的基本运作&#xff0c;并且频率越来越高。618、双11、双12等越来越多的购物节创造了消费高峰&#xff0c;这就要求企业的网络基础设施能够承受住用户流量的洪峰。 目前&#xff0c;电子商务在网站运营上常常…

JavaWeb学习之MVC、jstl、El表达式06

目录 1.MVC:开发模式 2 mvc三层架构 2.EL表达式 1.使用 2.获取值 1.${域名称.键名} 2 ${键名} 3.隐式对象 3.jstl学习 1.概念 2.作用 3.使用步骤 4,常用的]STL标签 1.MVC:开发模式 1.jsp演变历史 1,早期只有servlet,只能使用response输出标签数据&#xff0c;非常…

艾美捷 24孔细胞划痕试验试剂盒检测原理说明

受伤的组织会引发一系列复杂而结构化的事件&#xff0c;以修复受损的组织区域这些事件可能包括血管生成因子增加血管化增殖和细胞外基质沉积&#xff0c;以及炎症免疫细胞的浸润破坏坏死组织的过程。伤口愈合过程开始于细胞向伤口&#xff0c;开始突出&#xff0c;迁移&#xf…

Html+JavaScript+Css 二手车价格评估系统设计开发

目录 一、系统设计技术及平台介绍 二、系统总体设计图 三、软件模块实现 3.1 登陆注册模块 3.2 主界面 3.3 车辆评估界面 3.4 评估记录界面 3.5 评估结果界面 3.6 个人信息界面 四、数据库实体设计 五、重置成本法简介 六、相关代码 6.1 登陆界面代码 6.2 主界面…

【TypeScript】TS安装与使用

目录 初识TypeScript TypeScript给JS添加类型支持的原因 TypeScript相比JS的优势 TS工具包的安装 TS文件的编译和运行 简化TS的运行步骤 初识TypeScript TypeScript&#xff08;简称&#xff1a;TS&#xff09;是JavaScript的超集&#xff08;JS有的TS都有&#xff09;。…

Python编程 制作一个超级浪漫的新年倒计时(附源代码)

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.新年介绍 二.代码介绍 1.应用的技术 &#xff08;1&#xff09;Pyga…

Java项目:springboot电影推荐网站

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 springboot电影推荐网站。本系统采用企业级开发标准&#xff0c;使用SpringBoot架构&#xff0c;数据访问层采用Spring Data Jpa&#xff0c;业…

工具(二):Nginx 扩展 OpenResty

OpenResty 介绍OpenResty 原理Nginx 模块Nginx的 lua插载点案例 配置模板nginx.conf通过Lua找到静态文件 — 商品页通过Lua 获取 redis 只返回 — 库存test 其他Demo MysqlOps.luaRedisExtOps.luaredisOps.lua 辅助工具类说明 自动生成静态页FTP 工具 Nginx_有5大优点&#x…

职场经验:游戏测试的主要工作及主要流程

01 游戏测试主要内容 1、功能测试 功能测试是游戏测试中最常见的模式&#xff0c;主要测试方法为黑盒测试 功能测试主要用来验证功能是否符合需求设计 功能测试主要考虑正确性&#xff0c;而不考虑游戏底层结构及代码错误 功能测试通常从界面着手开始测试&#xff0c;尽量…

【架构师(第五十一篇)】 服务端开发之技术方案设计

接口设计 把 server 端当做一个黑盒&#xff0c;它将如何与前端通讯&#xff1f; 功能范围 B 端&#xff0c;用户注册&#xff0c;作品管理&#xff0c;模板管理编辑器&#xff0c;单个作品的内容获取&#xff0c;修改&#xff0c;预览和发布 功能拆分 用户信息相关作品管…

线上牛奶配送

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 基于Java的线上牛奶配送系统的设计与实现 风网站前台&#xff1a;网站介绍、联系我们、公告信息、套餐类型、牛奶套餐、…

Linux-4 文件管理

Linux-4 文件管理 文件管理概述 谈到Linux文件管理&#xff0c;首先我们需要了解的是&#xff0c;我们要对文件做些什么事&#xff1f;其实无非就是对一个文件进行创建&#xff0c;复制&#xff0c;移动&#xff0c;查看&#xff0c;编辑&#xff0c;压缩&#xff0c;查找&am…

自己个人拥有一个可以支付功能的网站?当然可以了!保姆级演示!

文章目录前提条件演示应用申请开通和配置应用创建应用配置代码开发后端实例前端代码实例源码前提条件 这是必要条件&#xff01;&#xff01;&#xff01; 这是必要条件&#xff01;&#xff01;&#xff01; 这是必要条件&#xff01;&#xff01;&#xff01; 开通当面付&am…

人脸检测和对齐算法MTCNN

1. 概述 人脸识别在实际的生活中有着广泛的应用&#xff0c;得益于深度学习的发展&#xff0c;使得人脸识别的准确率得到大幅度提升。然而&#xff0c;为了做好人脸识别&#xff0c;第一步需要做的是对人脸检测&#xff0c;主要是通过对图片分析&#xff0c;定位出图片中的人脸…

Java项目:springboot网上点餐系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 SpringBoot在线订餐系统项目。主要功能说明&#xff1a; 分为两个角色&#xff0c;餐厅老板、普通用户 餐厅老板可以登录&#xff0c;注册&…

质量不错的蓝牙耳机有哪些?2023年值得选购的四款蓝牙耳机

现如今&#xff0c;蓝牙耳机越多人使用&#xff0c;不同于有线耳机&#xff0c;蓝牙耳机更为方便&#xff0c;没有线束的困扰&#xff0c;走到哪也不用带上手机一起&#xff0c;特别便利。然而&#xff0c;随着蓝牙耳机市场的旷大&#xff0c;各种类型各种样式的耳机五花八门&a…

C++ 实现并查集结构

前言 并查集一般用于多元素&#xff0c;多集合的查找问题&#xff1b; 听说很有用&#xff0c;但是平时好像确实没有怎么见过。。 leetcode典型例题&#xff1a;岛屿数量 一、原理 其实并查集的每个小集合就是一张有向图&#xff0c;只不过是所有子节点指向父节点的图结构。…

认证鉴权对于 API 网关的重要性

认证鉴权作为 API 网关不可或缺的能力&#xff0c;已然成为用户在选型 API 网关时考量的重要因素之一。 作者钱勇&#xff0c;API7.ai 开发工程师&#xff0c;Apache APISIX Committer 在当下云原生越发成熟的环境下&#xff0c;API 网关最核心的功能可以概括为&#xff1a;连接…

高品质蓝牙耳机排行榜,值得入手的四款蓝牙耳机分享

2023年即将到来&#xff0c;还有哪些蓝牙耳机值得大家购买呢&#xff1f;蓝牙耳机在我们日常生活中发挥着很大作用。无论是听歌还是通话&#xff0c;又或者是运动健身、玩游戏等&#xff0c;都常见大家使用。同样也伴随着蓝牙耳机市场的壮大&#xff0c;五花八门的耳机层出不穷…