基于PyTorch设计的全景图合成系统【文末完整工程源码下载】

news2025/1/16 1:54:14

前言

本项目实现基于PyTorch将多张图片合成为一张全景图。(图像存储路径为/images/1)。

作者:阿齐Archie(联系我+微信公众号:阿齐Archie)

使用的图片为:

合成后为:

这个全景图项目主要由四个文件组成:`task.py`、`stitching.py`、`utils.py` 和 `task.json`。以下是对每个文件的详细总结和软件设计细节的描述。

目录

前言

1. `task.py` 文件

1.1主要功能

1.2代码结构

2.`stitching.py`文件

2.1主要功能

2.2代码结构

3.`utils.py` 文件

3.1主要功能

3.2代码结构

4.`task.json` 文件

效果与总结

工程源码下载


1. `task.py` 文件

`task.py` 是项目的主入口文件,负责解析命令行参数、读取输入图像、调用全景图拼接函数并保存结果。

1.1主要功能

1.解析命令行参数:使用 `argparse` 库解析输入路径、输出路径和 JSON 文件路径。

2.读取输入图像:调用 `utils.read_images` 函数读取指定路径下的图像。

3.调用全景图拼接函数:调用 `stitching.py` 中的 `panorama` 函数进行图像拼接。

4.保存结果:调用 `utils.write_image` 保存拼接后的图像,并将结果保存到 JSON 文件中。

1.2代码结构

from stitching import panorama

    import argparse

    import json

    import os

    import sys

    import utils

    

    def parse_args():

        # 解析命令行参数

        ...

    

    def save_results(result_dict, filename):

        # 保存结果到 JSON 文件

        ...

    

    def main():

        # 主函数

        ...

    

    if __name__ == "__main__":

        main()

2.`stitching.py`文件

`stitching.py` 文件包含全景图拼接的核心算法。使用了 `torch` 和 `kornia` 库进行图像处理和特征匹配。

2.1主要功能

1.图像拼接:通过特征匹配和 RANSAC 算法计算图像之间的变换矩阵,并将图像拼接在一起。

2.计算重叠区域:计算图像之间的重叠区域,用于后续的拼接。

2.2代码结构

import torch

    import kornia

    import utils

    from utils import show_image

    

    def stitch_background(imgs: torch.Tensor) -> torch.Tensor:

        # 拼接两张图像

        ...

    

    def panorama(imgs: torch.Tensor):

        # 全景图拼接

        ...

    

3.`utils.py` 文件

`utils.py` 文件包含一些辅助函数,用于图像的读取、显示和保存。

3.1主要功能

1.显示图像:使用 `matplotlib` 库显示图像。

2.读取图像:使用 `torchvision.io` 读取单张图像或目录下的所有图像。

3.保存图像:使用 `torchvision.io` 保存图像。

4.BGR 转 RGB:转换图像的颜色通道。

3.2代码结构

   

 import os, torch

    import zipfile, argparse

    import matplotlib.pyplot as plt

    from torchvision.transforms import functional as F

    import torchvision.io as io

    

    def show_image(img: torch.Tensor, delay=1000):

        # 显示图像

        ...

    

    def read_image(img_path):

        # 读取单张图像

        ...

    

    def read_images(img_dir):

        # 读取目录下的所有图像

        ...

    

    def write_image(input_image: torch.Tensor, output_path: str):

        # 保存图像

        ...

    

    def bgr_to_rgb(img: torch.Tensor):

        # BGR 转 RGB

        ...

    

    def parse_args():

        # 解析命令行参数

        ...

    

    def files2zip(files: list, zip_file_name: str):

        # 压缩文件

        ...

    

    if __name__ == "__main__":

        args = parse_args()

        file_list = ['stitching.py', 'outputs', 'images', 'task2.json', 'bonus.json']

        files2zip(file_list, 'submission_' + args.ubit + '.zip')

    

4.`task.json` 文件

`task.json` 文件是一个示例 JSON 文件,存储了图像之间的重叠信息。在这个项目中,它是一个 4x4 的矩阵,每个元素都是 1.0,表示图像之间的完全重叠。

    [

        [1.0, 1.0, 1.0, 1.0],

        [1.0, 1.0, 1.0, 1.0],

        [1.0, 1.0, 1.0, 1.0],

        [1.0, 1.0, 1.0, 1.0]

    ]

效果与总结

这个全景图项目通过模块化的设计,将图像拼接的各个功能分离到不同的文件中。`task.py` 负责整体流程控制,`stitching.py` 负责核心算法实现,`utils.py` 提供辅助函数,`task.json` 存储图像重叠信息。

工程源码下载

下载链接:基于PyTorch设计的全景图合成系统.rar(完整源码、设计文档,毕设/课设/竞赛/大创/立项/项目开发)资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/m0_61712829/89474677?spm=1001.2014.3001.5503

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

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

相关文章

eNSP启动设备失败,错误代码40,网卡配置正常,虚拟机导致的错误解决过程

安装eNSP后出现以下错误。 按照帮助文档,查看了相关软件,尤其是vitualbox的版本以及网卡问题。网卡设置正常,vitualbox也匹配成功。 附:vitualbox各个版本的下载地址: 关于网卡名称的修改方法,参照博客 …

python实现技术指标(简单移动平均,加权移动平均线,指数移动平均线)

移动平均线是最常见的技术指标,它能够去除时间序列的短期波动,使得数据变得平滑,从而可以方便看出序列的趋势特征。常见的移动平均线有简单移动平均线,加权移动平均线,指数移动平均线。 一. 简单移动平均(SMA) 简单移…

2.超声波测距模块

1.简介 2.超声波的时序图 3.基于51单片机实现的代码 #include "reg52.h" #include "intrins.h" sbit led1P3^7;//小于10,led1亮,led2灭 sbit led2P3^6;//否则,led1灭,led2亮 sbit trigP1^5; sbit echo…

电容的命名规则

给如下参数给采购,就可以获取 还有一些参数需要重视 容值随着环境温度而保持的程度 常规应用时是可以不用看材质,但是如果使用在新能源汽车和极端环境下的电子产品,就需要关注材质,曾有供应商把可用级电容供应车企,导致…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广

6 图片增广 import matplotlib.pyplot as plt import numpy as np import torch import torchvision from d2l import torch as d2l from torch import nn from PIL import Image import liliPytorch as lp from torch.utils.data import Dataset, DataLoaderplt.figure(cat)…

8.DELL R730服务器对RAID5进行扩容

如果服务器的空间不足了,如何进行扩容?我基本上按照如何重新配置虚拟磁盘或添加其他硬盘来进行操作。我的机器上已经有三块硬盘了,组了Raid5,现在再添加一块硬盘。 先把要添加的硬盘插入服务器,无论是在IDRAC还是管理…

基于S7-200PLC的全自动洗衣机控制系统设计

wx供重浩:创享日记 那边对话框发送:plc洗衣 获取完整无水印设计说明报告(含程序梯形图) 1.自动洗衣机PLC控制的控制要求 1.1全自动洗衣机的基本结构、工作流程和工作原理 1.自动洗衣机的基本结构 2.自动洗衣机的工作流程 自动洗…

RepVGG论文阅读笔记

目录 RepVGG: Making VGG-style ConvNets Great Again摘要INTRODUCTION—简介RepVGG BlockModel Re-parameterization -- 模型重参数化融合Conv2d和BN,将三个分支上的卷积算子和BN算子都转化为卷积算子(包括卷积核和偏置)多分支融合&#xff…

【Python】已解决:pymssql引发的MSSQLDatabaseException错误

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:pymssql引发的MSSQLDatabaseException错误 一、分析问题背景 在Python中使用pymssql库与Microsoft SQL Server数据库交互时,有时会遇到pymssql._mss…

k8s 部署 ruoyi 前后端分离项目

本文视频版 https://www.bilibili.com/video/BV17ugkePEeN 参考 https://blog.csdn.net/qq_50247813/article/details/136934090 https://gitee.com/nasaa/RuoYi-Vue-cloud https://www.itsgeekhead.com/tuts/kubernetes-129-ubuntu-22-04-3/ https://kubernetes.io/docs/se…

安装react之nvm版本低引起的问题

1.背景 准备搭建一个react,然后看官网文档 创建项目,使用命令行 npx create-next-applatest 创建项目的流程都是正常的。当我准备运行项目的时候,报错了 原先的报错没有了,从网上找了一个类似的 重要的内容是:当前…

【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍

游戏介绍 植物大战僵尸杂交版 for Mac是一款非常受欢迎的策略塔防游戏,植物大战僵尸游戏以其独特的主题、幽默的风格和富有挑战性的关卡设计而著称。玩家需要种植各种植物来防御入侵的僵尸,每种植物都有其特定的功能和攻击方式。植物大战僵尸杂交版&…

5.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这一节介绍雷达的使用,我们使用的雷达型号是ydlidar x3 1.进入工作空间 cd catkin_ws/src2.下载官方提供的SDK文件 git clone https://github.com/YDLIDAR/YDLidar-SDK.git3.安装cmake sudo apt install cmake pkg-config4.编译和安装 进入YDLidar-SDK文件夹后如…

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

BL104应用在智慧零售多协议采集监控远程实时查看

在智慧零售领域,如今的市场竞争日益激烈,传统的零售模式已经难以满足消费者对服务和体验的高需求。智能化技术的引入,尤其是基于物联网的解决方案,成为提升零售业务效率和服务质量的关键。钡铼BL104 Modbus转MQTT网关作为一种先进…

Vue65-组件之间的传值

1、收数据 2、传数据 3、批量的数据替换 若是info里面有四个数据,传过来的dataObj里面有三个数据,则info里面也只有三个数据了 解决方式: 该写法还有一个优势:传参的时候,顺序可以随意!

MySQL中的ibd2sdi—InnoDB表空间SDI提取实用程序

ibd2sdi 是一个用于从 InnoDB 表空间文件中提取序列化字典信息(Serialized Dictionary Information, SDI)的实用程序。这个实用程序可以用于提取存储在持久化 InnoDB 表空间文件中的 SDI 数据。 可以对以下类型的表空间文件使用 ibd2sdi: 每…

【Vision AI v2开箱之SenseCraft AI猫狗识别Arduino教程】

【Vision AI v2开箱之SenseCraft AI猫狗识别Arduino教程】 1. 前言2. 实验材料2.1 Grove Vision AI Module V22.1.1 特征2.1.2 硬件概述2.1.3 启动/重置/程序2.1.4 驱动 2.2 ESP32C32.2.1 引脚图2.2.2 组件概述2.2.3 电源引脚 2.3 SenseCraft AI Model Assistant2.3.1 部署的模…

百度网盘的文件该怎么整理?不如试试这个整理工具

科学的文件架构 一键生成文件夹层级工具 极具妥帖的秩序感受 又是一周,好久不见,正琢磨着这次给大家带来点什么好东西,突然百度网盘的整理让我头疼不已,从我记事以来,这网盘已经整理过N遍了,总是乱了整理…

嵌入式学习——数据结构(队列)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2 5. 算法设计 5.1 正确性 5.2 可读性(高内聚、低耦合) 5.3 健壮性 5.4 高效率(时间复杂度&am…