大倾斜视角航拍图像像素级定位

第一步对图像进行读取:

研究数据集:

ARCGIS上观察倾斜程度:

PIL 对路径的支持更友好:PIL 在处理文件路径(尤其是包含中文字符的路径)时通常更加健壮。OpenCV 在某些版本或特定环境下可能会对非英文路径处理不当,导致读取或保存失败。
跨平台兼容性:PIL 在不同操作系统(如 Windows、Linux、macOS)上的路径处理更为一致,这在开发跨平台应用时是一个优势 

import pandas as pd
from PIL import Image# 专业红外图像读取方式
def read_ir_image(file_path):try:# 先用PIL读取pil_img = Image.open(file_path)# 转换为numpy数组img_array = np.array(pil_img)# 检查是否为单通道红外数据if len(img_array.shape) == 2:  # 单通道print("检测到单通道红外数据")# 归一化处理示例(根据实际传感器数据调整)img_array = (img_array - img_array.min()) / (img_array.max() - img_array.min()) * 255img_array = img_array.astype(np.uint8)# 转换为OpenCV格式return cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) if len(img_array.shape) == 3 else cv2.cvtColor(img_array,cv2.COLOR_GRAY2BGR)except Exception as e:print(f"红外图像处理错误: {e}")# 将 OpenCV 图像转换为 PIL 图像并保存(支持中文路径)

第二步对卫星图像进行分割:

分割可以提高处理效率:将大尺寸的卫星图像分割成多个小块(tiles),每个小块的尺寸与无人机图像相近,可以显著降低单次处理的数据量,加快处理速度。
并行处理:分割后的图像块可以进行并行处理,进一步提升整体处理效率。 

局部匹配更精确:在大尺寸图像上直接进行匹配可能会因为场景复杂性高、特征点分布不均等原因导致匹配精度下降。而通过分割,可以在每个小块内进行更精细的特征提取和匹配,提高匹配精度。

 

读取匹配文件:
使用 pd.read_csv 读取 matches.csv 文件。
matches_df['coordinate'] 列存储了裁剪中心坐标,并通过 apply 解析为元组形式 (x_center, y_center)。

# 读取 matches.csv 文件
matches_df = pd.read_csv(r'E:\倾斜\倾斜\Match-Dataset-train\gs20251-ir\matches.csv')# 打印列名以确认
print("Columns:", matches_df.columns)# 解析 coordinate 列
matches_df['coordinate'] = matches_df['coordinate'].apply(lambda x: tuple(map(int, x.strip('()').split(', '))))

对裁剪图片进行填充并保存:

  # 计算裁剪区域half_crop = crop_size // 2x1 = max(0, x_center - half_crop)y1 = max(0, y_center - half_crop)x2 = min(satellite_img.shape[1], x_center + half_crop)y2 = min(satellite_img.shape[0], y_center + half_crop)# 裁剪卫星图cropped_satellite = satellite_img[y1:y2, x1:x2]# 如果裁剪区域小于指定尺寸,进行填充if cropped_satellite.shape[0] < crop_size or cropped_satellite.shape[1] < crop_size:padded_satellite = np.zeros((crop_size, crop_size, 3), dtype=np.uint8)padx1 = (crop_size - cropped_satellite.shape[1]) // 2pady1 = (crop_size - cropped_satellite.shape[0]) // 2padx2 = crop_size - cropped_satellite.shape[1] - padx1pady2 = crop_size - cropped_satellite.shape[0] - pady1padded_satellite[pady1:pady1 + cropped_satellite.shape[0],padx1:padx1 + cropped_satellite.shape[1]] = cropped_satellitecropped_satellite = padded_satellite

 第三步对图片进行倾斜校正:

要根据无人机的姿态角(yaw、pitch、roll)将图像修正为正射投影(orthorectification),需要进行一系列的几何变换。

Yaw 角影响图像的水平旋转,可以通过简单的旋转来修正。

Pitch 和 Roll 的修正较为复杂,需要进行三维旋转。可以使用 OpenCV 的 warpPerspective 函数来实现。

上述方法基于简单的几何变换,对于复杂的地形和高精度要求,可能需要更专业的正射纠正算法(如使用 DEM 数据)。

    # 读取姿态角数据csv_path = 'drone.csv'df = pd.read_csv(csv_path)image_name = '000000.jpg'image_data = df[df['drone_name'] == image_name].iloc[0]yaw, pitch, roll = image_data['yaw'], image_data['pitch'], image_data['roll']# Yaw 修正corrected_yaw = rotate_image(ir_image, -yaw)# Pitch 和 Roll 修正corrected_pitch_roll = correct_pitch_roll(corrected_yaw, pitch, roll)

 第四步进行训练学习

可以适当调整训练轮次改到100,然后每一个批次可以改为8,以提高训练效率。

        # Eval Configparser.add_argument('--batch_size_eval', default=128, type=int)parser.add_argument('--eval_every_n_epoch', default=1, type=int)parser.add_argument('--normalize_features', default=True, type=bool)parser.add_argument('--eval_gallery_n', default=-1, type=int)

 第五步扩大数据集:

历史影像地图数据提供了更多的样本,可以帮助模型更好地学习和泛化。特别是在数据集较小或特定场景数据不足的情况下,历史影像可以作为补充数据。

寻找历史影像数据,将历史影像的数据格式、分辨率等与现有数据集一致,可以直接将其加入数据集中进行训练。

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

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

相关文章

Redis 缓存进阶篇,缓存真实数据和缓存文件指针最佳实现?如何选择?

目录 一. 场景再现、具体分析 二. 常见实现方案及方案分析 2.1 数据库字段最大存储理论分析 2.2 最佳实践方式分析 三. 接口选择、接口分析 四. 数据库设计 4.1 接口缓存表设计 4.1.1 建表SQL 4.1.2 查询接口设计 4.2 调用日志记录表设计 4.2.1 建表SQL 4.2.2 查询…

Redis常用数据结构以及多并发场景下的使用分析:Hash类型

文章目录前言hash 对比 String简单存储对象【秒杀系统】- 商品库存管理【用户会话管理】- 分布式Session存储【信息预热】- 首页信息预热降级策略总结前言 上文我们分析了String类型 在多并发下的应用 本文该轮到 Hash了&#xff0c;期不期待 兄弟们 hhh Redis常用数据结构以…

双因子认证(2FA)是什么?从零设计一个安全的双因子登录接口

前言在信息系统逐渐走向数字化、云端化的今天&#xff0c;账号密码登录已不再是足够安全的手段。数据泄露、撞库攻击、社工手段频发&#xff0c;仅靠「你知道的密码」已不足以保证账户安全。因此&#xff0c;双因子认证&#xff08;2FA, Two-Factor Authentication&#xff09;…

stack栈练习

为了你&#xff0c;我变成狼人模样&#xff1b; 为了你&#xff0c;染上了疯狂~ 目录stack栈练习栈括号的分数单调栈模板框架小结下一个更大元素 I&#xff08;单调栈哈希&#xff09;接雨水stack栈练习 栈 一种先进后出的线性数据结构 具体用法可参考往期文章或者维基介绍i…

详细页智能解析算法:洞悉海量页面数据的核心技术

详细页智能解析算法&#xff1a;突破网页数据提取瓶颈的核心技术剖析引言&#xff1a;数字时代的数据采集革命在当今数据驱动的商业环境中&#xff0c;详细页数据已成为企业决策的黄金资源。无论是电商商品详情、金融公告还是新闻资讯&#xff0c;​​有效提取结构化信息​​直…

ubuntu环境如何安装matlab2016

一、下载安装文件&#xff08;里面包含激活包CRACK&#xff09;可从度盘下载&#xff1a;链接:https://pan.baidu.com/s/1wxmVMzXiSY4RIT0dyKkjZg?pwd26h6 复制这段内容打开「百度网盘APP 即可获取」注&#xff1a;这里面包含三个文件&#xff0c;其中ISO包含安装文件&#x…

Mybits-plus 表关联查询,嵌套查询,子查询示例演示

在 MyBatis-Plus 中实现表关联查询、嵌套查询和子查询&#xff0c;通常需要结合 XML 映射文件或 Select 注解编写自定义 SQL。以下是具体示例演示&#xff1a;示例场景 假设有两张表&#xff1a; 用户表 userCREATE TABLE user (id BIGINT PRIMARY KEY,name VARCHAR(50),age IN…

Stable Diffusion Web 环境搭建

默认你的系统Ubuntu、CUDA、Conda等都存在&#xff0c;即具备运行深度学习模型的基础环境 本人&#xff1a;Ubuntu22.04、CUDA11.8环境搭建 克隆项目并且创建环境 https://github.com/AUTOMATIC1111/stable-diffusion-webui conda create -n sd python3.10运行过程自动安装依赖…

嵌入式系统中实现串口重定向

在嵌入式系统中实现串口重定向&#xff08;将标准输出如 printf 函数输出重定向到串口&#xff09;通常有以下几种常用方法&#xff0c;下面结合具体代码示例和适用场景进行说明&#xff1a; 1. 重写 fputc 函数&#xff08;最常见、最基础的方法&#xff09; 通过重写标准库中…

static补充知识点-代码

public class Student {private static int age;//静态的变量private double score;//非静态的方法public void run(){}public static void go(){}public static void main(String[] args) {new Student().run();Student.go();} } public class Person {//2 &#xff1a; 赋初始…

使用泛型<T>,模块化,反射思想进行多表数据推送

需求&#xff1a;有13个表&#xff0c;其中一个主表和12细表&#xff0c;主表用来记录推送状态&#xff0c;细表记录12种病例的详细信息&#xff0c;现在需要把这12张病例表数据进行数据推送&#xff1b;普通方法需要写12个方法分别去推送数据然后修改状态&#xff1b;现在可以…

光流 | RAFT光流算法如何改进提升

RAFT(Recurrent All-Pairs Field Transforms)作为ECCV 2020最佳论文,已成为光流估计领域的标杆模型。其通过构建4D相关体金字塔和GRU迭代优化机制,在精度与泛化性上实现了突破。但针对其计算效率、大位移处理、跨场景泛化等问题,研究者提出了多维度改进方案,核心方向可系…

linux/ubuntu日志管理--/dev/log 的本质与作用

文章目录 **一、基本概念****二、技术细节:UNIX域套接字****三、在不同日志系统中的角色****四、应用程序如何使用 `dev/log`****五、查看和验证 `/dev/log`****六、总结 `/dev/log` 的核心作用**一、基本概念 /dev/log 是一个 UNIX域套接字(Unix Domain Socket),是Linux系…

EMC整改案例之(1):汽车NFC进入模块BCI整改

EMC整改案例(1):汽车NFC进入模块BCI整改 在汽车电子系统中,NFC(Near Field Communication)进入模块用于实现无钥匙进入功能,但它在电磁兼容(EMC)测试中常面临挑战。本案例聚焦于BCI(Bulk Current Injection)测试整改,该测试模拟大电流注入对设备的影响。以下是基于…

2025年INS SCI2区,灵活交叉变异灰狼算法GWO_C/M+集群任务调度,深度解析+性能实测

目录1.摘要2.灰狼算法GWO原理3.灵活交叉变异灰狼算法GWO_C/M4.结果展示5.参考文献6.代码获取7.算法辅导应用定制读者交流1.摘要 随着云计算的快速发展&#xff0c;受自然现象启发的任务调度算法逐渐成为研究的热点。灰狼算法&#xff08;GWO&#xff09;因其强大的收敛性和易于…

Java常用加密算法详解与实战代码 - 附可直接运行的测试示例

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

2025开发者工具链革命:AI赋能的效率跃迁

目录引言&#xff1a;效率焦虑下的开发者生存现状一、智能代码编辑器&#xff1a;从辅助到主导的进化1.1 GitHub Copilot&#xff1a;全能型AI助手1.2 Cursor Pro&#xff1a;极致编码体验1.3 飞算JavaAI&#xff1a;垂直领域颠覆者二、版本控制革命&#xff1a;Git的AI进化论2…

“虚空”的物理、哲学悖论

一、虚空并非“完全真空”&#xff1a;量子场论揭示的“真空不空” 物理真空的本质 现代物理学中的“真空”并非绝对的空无一物&#xff0c;而是量子场的基态&#xff08;能量最低状态&#xff09;。根据量子场论&#xff1a; 虚粒子涨落&#xff1a;真空中持续发生量子涨落&am…

CSP-S模拟赛二总结(实际难度大于CSP-S)

T1 很简短&#xff0c;也很好做&#xff0c;第一题直接场切。 我的方法 首先要明确一件事&#xff1a;就是如果选了 ax,ya_{x,y}ax,y​&#xff0c;那么就必然要选 ay,xa_{y,x}ay,x​&#xff0c;所以第一步就在 ax,ya_{x,y}ax,y​ 的基础上加上 ay,xa_{y,x}ay,x​。 然后我…

旋转屏幕优化

1.问题背景 从google原生算法&#xff0c;可以知道其有2个比较大的缺陷&#xff1a; 1) 通过重力传感器传来的x&#xff0c;y&#xff0c;z轴的加速度合成之后只有一个垂直往下的加速度&#xff0c;如果此时用户在别的方向上有加速度&#xff0c;那么通过反余弦、反正切等计算…