2025年AEI SCI1区TOP,改进麻雀搜索算法MSSA+建筑三维重建,深度解析+性能实测

目录

    • 1.摘要
    • 2.麻雀搜索算法SSA原理
    • 3.整体框架
    • 4.改进SSA算法
    • 5.结果展示
    • 6.参考文献
    • 7.代码获取
    • 8.读者交流


1.摘要

对现有建筑进行高质量的三维重建对于其维护、修复和管理至关重要。图像采集中的有效视角规划会显著影响基于摄影测量的三维重建质量。复杂的建筑结构常常导致传统视角规划方法下的区域采样不足,而过多的视角又会显著增加计算资源和数据采集的负担。为了解决这些问题,本文提出了一种新的先探索、后开发的视角规划策略,以在尽可能少的视角下实现高质量的建筑重建。在探索阶段,通过对图像和粗模型的语义与几何分析,识别出无人机禁飞区域与建筑关注区域。随后结合建筑关注区域和重建相关因素(包括距离、入射角、视差角和图像重叠度),构建了一个优化适应度函数。本文提出了一种改进麻雀搜索算法(MSSA),在优化机制上进行了增强,并融合了视角规划的物理模型,从而能够有效生成最优的视角集合。在开发阶段设计了无碰撞的最短飞行路径,使无人机能够采集图像并完成高质量的三维模型重建。

2.麻雀搜索算法SSA原理

【智能算法】麻雀搜索算法(SSA)原理及实现

3.整体框架

本文提出了一种优化的探索—开发无人机视角规划策略,用来实现高质量的建筑三维重建。整个过程首先通过初步的环绕飞行采集图像并构建粗略模型,在此基础上,通过语义分析与几何建模识别出建筑的关键关注区域与无人机禁飞区域,进而指导后续的精细规划。在视角优化方面,本文构建了一个融合多种重建影响因素(包括距离、入射角、视差角和图像重叠度)以及建筑关注区域的适应度函数,并引入了改进麻雀搜索算法(MSSA),用在连续可飞行空间中直接优化无人机视角的位置与朝向。此外,研究还设计了一种无碰撞的最短路径规划方法,确保无人机在执行任务时能够高效、安全地穿越各个视角点。最后,通过执行优化后的第二次飞行,完成图像采集并生成高质量的三维重建模型。

优化的无人机视野规划策略框架

4.改进SSA算法

改进SSA融合视角规划的物理模型,增强对初始视角分布的均匀性与多样性控制,将优化过程划分为全局探索与局部开发两个阶段,并设置动态可调的更新机制与角色比例。此外引入大小步长结合的局部开发策略,并取消仅接受更优解的限制,从而提高算法跳出局部最优的能力。算法以多个视角集合为优化对象,每个集合包含若干视角点,每个视角由位置与目标方向两个三维坐标构成。为实现初始视角的空间均匀分布,无人机可飞行区域被划分为多个子区域,每个区域内随机生成等量的视角点,同时其目标方向则在建筑物的三维包围盒中随机设定。

改进SSA

改进SSA中生产者承担全局搜索,通过对每个视角的位置与目标方向进行扰动,生产者能够在搜索空间内广泛探索,提升解的多样性与覆盖性。在优化初始阶段,设置了较多的生产者 P N 1 PN_1 PN1,相比于后期的数量 P N 2 PN_2 PN2显著增加,从而确保算法在早期具备更强的全局探索能力:
X i , j , k t + 1 = { X i , j , k t + α ∙ Q , S T > R 2 X i , j , k t + Q , S T ≤ R 2 X_{i,j,k}^{t+1}= \begin{cases} X_{i,j,k}^t+\alpha\bullet Q,ST>R_2 \\ \quad X_{i,j,k}^t+Q,ST\leq R_2 & \end{cases} Xi,j,kt+1={Xi,j,kt+αQ,ST>R2Xi,j,kt+Q,STR2

觅食者主要承担局部开发任务,围绕当前最优视角集合进行小步长的精细搜索:
X i , j , k t + 1 = X b e s t t + 1 d ∑ k = 1 d ∣ X i , j , k t − X b e s t t ∣ ∙ r a n d ( { − 1 , 1 } ) X_{i,j,k}^{t+1}=X_{best}^t+\frac{1}{d}\sum_{k=1}^d\left|X_{i,j,k}^t-X_{best}^t\right|\bullet rand(\{-1,1\}) Xi,j,kt+1=Xbestt+d1k=1d Xi,j,ktXbestt rand({1,1})

探索者在早期生成新的视点集来探索解空间,并在后期围绕最佳视点集进行大步局部开发:
X i , j , k t + 1 = { i n i t ( ) , t < T max ⁡ / 2 X b e s t t + β ∙ ∣ X i , j , k t − X b e s t t ∣ , t ≥ T max ⁡ / 2 \left.X_{i,j,k}^{t+1}=\left\{ \begin{array} {c}init(),t<\mathrm{T}_{\max}/2 \\ X_{best}^t+\beta\bullet\left|X_{i,j,k}^t-X_{best}^t\right|,t\geq\mathrm{T}_{\max}/2 \end{array}\right.\right. Xi,j,kt+1={init(),t<Tmax/2Xbestt+β Xi,j,ktXbestt ,tTmax/2

伪代码

MSSA伪代码

5.结果展示

虚拟实验中的四种比较策略

现实世界实验中的两种比较策略

之前做的案例:




6.参考文献

[1] Liang Z, Yang L, Liang Z, et al. Optimized UAV view planning for high-quality 3D reconstruction of buildings using a modified sparrow search algorithm[J]. Advanced Engineering Informatics, 2025, 65: 103344.

7.代码获取

8.读者交流

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

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

相关文章

鸿蒙开发:如何实现列表吸顶

前言 本文基于Api13 列表吸顶功能&#xff0c;在实际的开发中有着很大的作用&#xff0c;比如可以让列表层级之间更加分明&#xff0c;减少一定程度上的视觉混乱&#xff0c;由于吸顶的标题会随着滚动固定在顶部&#xff0c;可以让用户无需反复滑动回顶部确认分组位置&#xff…

使用Zotero的RSS订阅功能快速了解感兴趣领域最新文章

文章目录 写在前面中文期刊的RSS订阅英文期刊的RSS订阅回到Zotero有啥用&#xff1f; 写在前面 作为一名研究生或者科研工作者&#xff0c;肯定需要经常检索自己研究领域的最新文献&#xff0c;相比于不定期的去各大数据库检索文献&#xff0c;借助RSS订阅功能则更加便捷。 R…

Windows安装Docker Desktop开启 Kubenetes制作并部署本地镜像

1、安装Docker Desktop docker desktop官方下载链接&#xff0c;下载后一路点下来安装就好了。 2、制作本地镜像 跟着docker步骤制作镜像&#xff0c;需要先配置docker 镜像源&#xff0c;因为网络问题 {"builder": {"gc": {"defaultKeepStorage&…

嵌入式学习笔记 - freeRTOS 列表,链表,节点跟任务之间关系

一 下图说明了 freeRTOS 就绪列表&#xff0c;链表&#xff0c;节点跟任务之间关系 一个任务对应一个节点&#xff0c;一个链表对应一个优先级&#xff0c;一个任务根据优先级可以插入任何一个链表中。 插入函数为&#xff0c;这也是freeRTOS的核心函数&#xff0c;对每个任务…

scikit-learn pytorch transformers 区别与联系

以下是 scikit-learn、PyTorch 和 Transformers 的区别与联系的表格形式展示: 特性/库scikit-learnPyTorchTransformers主要用途传统机器学习算法深度学习框架预训练语言模型与自然语言处理任务核心功能分类、回归、聚类、降维、模型选择等张量计算、自动微分、神经网络构建与…

【C/C++】从零开始掌握Kafka

文章目录 从零开始掌握Kafka一、Kafka 基础知识理解&#xff08;理论&#xff09;1. 核心组件与架构2. 重点概念解析 二、Kafka 面试重点知识梳理三、C 使用 Kafka 的实践&#xff08;librdkafka&#xff09;1. librdkafka 简介2. 安装 librdkafka 四、实战&#xff1a;高吞吐生…

Spyglass:目标文件(.spq)的结构

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 预备知识 为了方便检查&#xff0c;Spyglass向用户提供Guideware作为检查参考&#xff1b;Guideware又包含各种方法(Methodology)&#xff0c;应用于设计的不同阶段&…

一些Dify聊天系统组件流程图架构图

分享一些有助于深入理解Dify聊天模块的架构图 整体组件架构图 #mermaid-svg-0e2XalGLqrRbH1Jy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0e2XalGLqrRbH1Jy .error-icon{fill:#552222;}#mermaid-svg-0e2XalGLq…

地理空间索引:解锁日志分析中的位置智慧

title: 地理空间索引:解锁日志分析中的位置智慧 date: 2025/05/24 18:43:06 updated: 2025/05/24 18:43:06 author: cmdragon excerpt: 地理空间索引在日志分析中应用广泛,涉及用户登录IP定位、移动端位置轨迹和物联网设备位置上报等场景。MongoDB支持2dsphere和2d两种地理…

分库分表深度解析

一、为什么要分库分表&#xff1f; 通常&#xff0c;数据库性能受到如下几个限制&#xff1a; 硬件瓶颈&#xff1a;单机的 CPU、内存、磁盘 I/O 等资源总是有限。例如&#xff0c;当单表中的记录达到上亿、甚至更高时&#xff0c;表扫描、索引维护和数据迁移会变得非常慢。单…

QListWidget的函数,信号介绍

前言 Qt版本:6.8.0 该类用于列表模型/视图 QListWidgetItem函数介绍 作用 QListWidget是Qt框架中用于管理可交互列表项的核心组件&#xff0c;主要作用包括&#xff1a; 列表项管理 支持动态添加/删除项&#xff1a;addItem(), takeItem()批量操作&#xff1a;addItems()…

ModbusRTU转profibusDP网关与RAC400通讯报文解析

ModbusRTU转profibusDP网关与RAC400通讯报文解析 在工业自动化领域&#xff0c;ModbusRTU和ProfibusDP是两种常见的通信协议。ModbusRTU以其简单、可靠、易于实现等特点&#xff0c;广泛应用于各种工业设备之间的通信&#xff1b;而ProfibusDP则是一种高性能的现场总线标准&am…

Python容器

一、容器 1. 列表【】&#xff1a;有序可重复可混装可修改 [元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;...] • 可以容纳多个元素 • 可以容纳不同类型的元素&#xff08;混装&#xff09; • 数据是有序存储的&#xff08;有下标序号&#xff09; • 允许重复数…

webpack面试问题

一、核心概念 Webpack的构建流程是什么? 答案: 初始化:读取配置,创建Compiler对象编译:从入口文件开始,递归分析依赖关系,生成依赖图模块处理:调用Loader转换模块(如babel-loader)输出:将处理后的模块组合成Chunk,生成最终文件Loader和Plugin的区别? Loader:文件…

uniapp-商城-66-shop(2-品牌信息显示,数据库读取的异步操作 放到vuex actions)

完成页面的显示&#xff0c;但是还需要进行修改&#xff0c;这里涉及到修改中的信息同步显示。也会涉及到数据的读取&#xff0c;修改和同步。 本文介绍了如何使用Vuex管理品牌数据&#xff0c;实现数据的同步显示和修改。主要内容包括&#xff1a;1.将获取品牌数据的异步操作封…

使用Pyinstaller打包python,全过程解析【2025最详细】

一、如何使用 Pyinstaller 打包 Python 程序 1.打开终端 右键点击文件夹空白处&#xff0c;选择 打开于 > 打开终端 2.安装 pyinstaller 在打开的终端中&#xff0c;输入命令【pip install pyinstaller】 使用 Python 包管理工具 pip 来安装 Pyinstaller。等待安装过程结…

GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展

容器编排与GPU计算的结合&#xff0c;为追求性能优化的企业开辟了战略转型的新路径 基于GPU的托管Kubernetes集群不仅是技术选择&#xff0c;更是彻底改变企业处理高负载任务的战略部署方式。 随着人工智能和机器学习项目激增、实时数据处理需求的剧增&#xff0c;以及高性能媒…

LINUX 524 rsync+inotify 调试(问题1:指定端口无法同步/已通过;问题2:rsync.log文件中时间不显示/已显示)

怎么把java文件夹给传过去了 rsync inotify 监控代码实时传输调试 没看到日志 这里面有了 rsync -e"ssh -p 3712" -av /root/app/java/ code192.168.235.100:/home/code/backup/java_backup/ 文件夹后面的/要加上 [rootlocalhost java]# cat /var/log/rsync.log…

Python入门手册:条件判断

条件判断是编程中不可或缺的一部分&#xff0c;它允许程序根据不同的条件执行不同的代码块。Python提供了if、elif和else语句来实现条件判断。通过这些语句&#xff0c;你可以控制程序的流程&#xff0c;使其能够根据不同的情况做出相应的反应。本文将详细介绍Python中的条件判…

x-cmd install | cargo-selector:优雅管理 Rust 项目二进制与示例,开发体验升级

目录 功能亮点安装优势特点适用场景总结 还在为 Rust 项目中众多的二进制文件和示例而烦恼吗&#xff1f;cargo-selector 让你告别繁琐的命令行&#xff0c;轻松选择并运行目标程序&#xff01; 功能亮点 交互式选择&#xff1a; 在终端中以交互方式浏览你的二进制文件和示例&…