基于深度学习Superpoint 的Python图像全景拼接

2023-05-16

pip install opencv-python==3.4.2.16

pip install opencv-contrib-python==3.4.2.16

参考
https://github.com/kushalvyas/Python-Multiple-Image-Stitching
https://github.com/MagicLeapResearch/SuperPointPretrainedNetwork
https://github.com/syinari0123/SuperPoint-VO
用superpoint方法代替surf提取图像特征,进行Python版本的图像拼接。
匹配效果很好,只是python没有图像拼接的需要的光束平差法,融合,曝光补偿模块。而这些在C++早已集成好了,似乎没人用python造轮子了。因此,Python版本图像拼接效果并不好,本博客只是学习记录。
**

源代码及数据链接https://download.csdn.net/download/qq_33591712/11638762

https://download.csdn.net/download/qq_33591712/11592396

**
改动后的matchers.py如下:

import cv2
import numpy as np 
from sp_extractor import SuperPointFrontend
class matchers:
	def __init__(self):
		self.surf = cv2.xfeatures2d.SURF_create()
                self.detector = SuperPointFrontend(weights_path="superpoint_v1.pth",
                                           nms_dist=4,
                                           conf_thresh=0.015,
                                           nn_thresh=0.7,
                                           cuda=True)
		FLANN_INDEX_KDTREE = 0
		index_params = dict(algorithm=0, trees=5)
		search_params = dict(checks=50)
		self.flann = cv2.FlannBasedMatcher(index_params, search_params)

	def match(self, i1, i2, direction=None):
		imageSet1 = self.getSURFFeatures(i1)
		imageSet2 = self.getSURFFeatures(i2)
		print "Direction : ", direction
		
                matches = self.flann.knnMatch(
			np.asarray(imageSet2['des'],np.float32),
			np.asarray(imageSet1['des'],np.float32),
			k=2
			)
		good = []
		for i , (m, n) in enumerate(matches):
			if m.distance < 0.7*n.distance:
				good.append((m.trainIdx, m.queryIdx))

		if len(good) > 4:
			pointsCurrent = imageSet2['kp']
			pointsPrevious = imageSet1['kp']

			matchedPointsCurrent = np.float32(
				[pointsCurrent[i] for (__, i) in good]
			)
			matchedPointsPrev = np.float32(
				[pointsPrevious[i] for (i, __) in good]
				)

			H, s = cv2.findHomography(matchedPointsCurrent, matchedPointsPrev, cv2.RANSAC, 4)
			return H
		return None

	def getSURFFeatures(self, im):
		gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
                pts, desc, heatmap = self.detector.run(gray)
		#kp, des = self.surf.detectAndCompute(gray, None)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于深度学习Superpoint 的Python图像全景拼接 的相关文章

随机推荐

  • python无报错但是主函数没有执行

    python无报错但是主函数没有执行 是不是遇到过python没有报错 xff0c 但是主函数没有执行 xff0c 完全没有结果的情况 遇到这种情况很有可能就是你没有添加if name 61 61 main 这个东西 xff0c 或者格式不
  • 2018.2.2PHPstrom破解版

    作者 xff1a 聽 雨 来源 xff1a CSDN 原文 xff1a https blog csdn net qq 39439751 article details 82758330 版权声明 xff1a 本文为博主原创文章 xff0c
  • python3中 print不加括号报错!

    python 3和python 2的print是有区别 xff0c python3需要加括号 xff0c 但python2不需要 span class token operator gt gt span span class token o
  • leetcode 772 基本计算器3 双栈解析表达式 单调栈

    此题是比较难的一个题 xff0c 不能简单的用递归来做 假设我们已经能把数字分离出来 xff0c 并且解决了其他无关细节 此时我们要考虑 xff0c 如何处理括号和运算优先级 此题最强的一点是 xff0c 当你看到一个符号时 xff0c 你
  • 自然场景OCR检测(YOLOv3+CRNN)

    自然场景OCR检测 YOLOv3 43 CRNN xff08 中文 43 英文模型 xff09 前言 最近对于自然场景下的OCR比较有兴趣 xff0c 所以总结了一些目前OCR现状 xff0c 并且找了一个自然场景OCR的项目练练手 本人新
  • Tx2刷机及安装Jetpack4.5教程

    描述 xff1a 由于项目需要在工控机上运行目标检测程序 xff0c 所需配置需要包括Cuda OpenCV等软件配置 目前Nvidia已经将cuda opencv等相关用于图像处理 深度学习 计算机视觉所需的软件及文件集成到Jetpack
  • ROS gazebo 模型加载报错

    我的ros装的是ros kinetic desktop full版本 xff0c 所以不用另装gazebo 但是用命令 roscore rosrun gazebo ros gazebo 启动后 xff0c 出现如下错误 xff1a Erro
  • excel对比两边数据去重

    需求 筛选重复数据 xff0c A列是1000条数据 xff0c C列是100条数据 xff0c 删除重复的数据 xff0c 只剩900条 首先 xff0c A列数据要分列 xff0c 因为数据格式不一样 xff0c 会导致后面的问题 xf
  • GVIM的配置/使用

    关于GVIM的配置 使用 以我个人喜好配置 配置文件在用户目录下的 vimrc里 配置完后 xff0c 保存并bash一下即可 一 配置 xff1a 根据自己的喜好配置了一点点 colorscheme darkblue span class
  • 小白科研笔记:简析PointRCNN的基于Bin的误差机制

    1 前言 PointRCNN是一篇做3D目标检测的CVPR2019的文章 目前位居KITTI目标检测榜首的是PV RCNN 这个算法的前身就是PointRCNN 它们的作者都是同一个人 考虑到PV RCNN算法有些复杂 xff0c 于是我想
  • ROS基础:获取全局与局部launch Parameter

    在launch 参数配置中 xff0c 分为有全局参数和局部参数 私有参数 xff0c 两者参数的获取是不同的 xff0c 参数示例如下 xff1a lt launch gt lt 全局参数 gt lt param name 61 34 p
  • Redis分布式锁系列

    1 压力测试出的内存泄漏及解决 xff08 可跳过 xff09 使用jmeter对查询产品分类列表接口进行压力测试 xff0c 出现了堆外内存溢出异常 我们设置的虚拟机堆内存100m xff0c 并不是堆外内存100m 产生堆外内存溢出 x
  • java核心技术卷1基础知识整理

    java核心技术卷1基础知识整理 1 java概述2 java程序设计3 对象与类4 继承5 接口 lambda 表达式与内部类6 并发 1 java概述 1 Java 剔除了 C 43 43 中许多很少使用 难以理解 易混淆的特性 xff
  • 【论文笔记】—目标姿态估计—EPro-PnP—2022-CVPR

    论文介绍 该论文被评为 CVPR 2022 最佳学生论文 将PnP位姿优化问题转变为预测位姿概率密度的问题 对于一个基于PnP的物体位姿估计网络 xff0c 可以通过反向传播位姿的概率密度从而学习物体的2D 3D关联 xff0c 实现稳定的
  • STM32 HAL库串口回调函数配置失效(HAL_UART_RxCpltCallback)

    小编实际操作中 xff0c 用HAL UART RxCpltCallback函数配置接收串口数据 xff0c 在测试过程中用手碰了单片机引脚之后无法再接收到数据 xff0c 终于找到了解决办法 xff0c 就是自己使能接收中断和自己定义中断
  • PADS2.4版本,软件打开无法操作问题记录

    小编将pads2 4软件打开后 xff0c 放大和缩小不能使用 xff0c 查找相关资料后汇总方法 xff0c 如果有侵权请联系 xff0c 谢谢 xff0c 解决方法如下 xff1a 方法1 xff1a 设置微软键盘兼容性 xff08 小
  • 学习记录《Simulink 快速入门 —— 官方Help文档》

    Simulink 快速入门 官方Help文档 1 Simulink 模块图2 创建简单模型2 1 打开新模型2 2 打开 Simulink库浏览器2 2 1将模块添加到模型2 2 2 连接模块2 2 3 添加信号查看器2 2 4 运行仿真2
  • 深度学习中的优化问题(Optimization)

    文章目录 1 优化中的挑战1 1 优化问题1 2 挑战1 3 解决方法 2 优化算法2 1 优化算法的分类2 1 1 批量大小的选择2 1 2 学习率调整2 1 3 梯度估计修正 2 2 自适应学习率算法2 2 1 AdaGrad2 2 2
  • 基于MIMO讲解信道估计基本原理

    为什么要进行信道估计 xff1f 信号在通过信道传输的时候 xff0c 会受到信道中种种因素产生的噪声以及可能发生的多径效应 xff0c 弄清信号经过的信道的特性 xff0c 表征信道的技术 过程称为信道估计 xff08 Channel E
  • 基于深度学习Superpoint 的Python图像全景拼接

    pip install opencv python 61 61 3 4 2 16 pip install opencv contrib python 61 61 3 4 2 16 参考 https github com kushalvyas