当前位置: 首页 > news >正文

ICCV2025 特征点检测 图像匹配 RIPE

目测对刚性物体效果比较好

代码:https://github.com/fraunhoferhhi/RIPE
论文:https://arxiv.org/abs/2507.04839

import cv2
import kornia.feature as KF
import kornia.geometry as KG
import matplotlib.pyplot as plt
import numpy as np
import torch
from torchvision.io import decode_imagefrom ripe import vgg_hyper
from ripe.utils.utils import cv2_matches_from_kornia, resize_image, to_cv_kptsdev = torch.device("cuda" if torch.cuda.is_available() else "cpu")model = vgg_hyper().to(dev)
model.eval()image1 = resize_image(decode_image("assets/all_souls_000013.jpg").float().to(dev) / 255.0)
image2 = resize_image(decode_image("assets/all_souls_000055.jpg").float().to(dev) / 255.0)kpts_1, desc_1, score_1 = model.detectAndCompute(image1, threshold=0.5, top_k=2048)
kpts_2, desc_2, score_2 = model.detectAndCompute(image2, threshold=0.5, top_k=2048)matcher = KF.DescriptorMatcher("mnn")  # threshold is not used with mnn
match_dists, match_idxs = matcher(desc_1, desc_2)matched_pts_1 = kpts_1[match_idxs[:, 0]]
matched_pts_2 = kpts_2[match_idxs[:, 1]]H, mask = KG.ransac.RANSAC(model_type="fundamental", inl_th=1.0)(matched_pts_1, matched_pts_2)
matchesMask = mask.int().ravel().tolist()result_ransac = cv2.drawMatches((image1.cpu().permute(1, 2, 0).numpy() * 255.0).astype(np.uint8),to_cv_kpts(kpts_1, score_1),(image2.cpu().permute(1, 2, 0).numpy() * 255.0).astype(np.uint8),to_cv_kpts(kpts_2, score_2),cv2_matches_from_kornia(match_dists, match_idxs),None,matchColor=(0, 255, 0),matchesMask=matchesMask,# matchesMask=None, # without RANSAC filteringsinglePointColor=(0, 0, 255),flags=cv2.DrawMatchesFlags_DEFAULT,
)plt.imshow(result_ransac)
plt.axis("off")
plt.tight_layout()plt.show()

http://www.dtcms.com/a/276058.html

相关文章:

  • 【Elasticsearch 】search_throttled
  • Spark计算性能优化实战指南
  • 面试现场:奇哥扮猪吃老虎,RocketMQ高级原理吊打面试官
  • 一文理解锂电池充电、过放修复与电量测量:从原理到实战
  • Redis Cluster 手动部署(小白的“升级打怪”成长之路)
  • 工业软件出海的ERP-PLM-MES一体化解决方案
  • MCP实验
  • Java 大视界 -- Java 大数据机器学习模型在电商用户复购行为预测与客户关系维护中的应用(343)
  • LangChain 内存(Memory)
  • 小白入门:通过手搓神经网络理解深度学习
  • CCS-MSPM0G3507-4-串口通讯-实现收和发
  • Linux之如何用contOs 7 发送邮件
  • Gitee Push 失败 7 日谈:每天一个踩坑故事
  • (神作必看)深入剖析C++前缀和:原理、应用与高效学习实践
  • python的婚纱影楼管理系统
  • os.type详解
  • 初识JDBC
  • springboot面点连锁店管理系统-计算机毕业设计源码05135
  • 掌握现代CSS:变量、变形函数与动态计算
  • 【FPGA】LUT如何实现组合逻辑、时序逻辑
  • Nginx访问日志实时分析在云服务器环境的Python实现方案
  • 树状数组优化动态规划
  • 【技术面试提+HR面试题】Python中循环与循环嵌套的基础知识以及Python中循环的基础编程题
  • 【设计模式】适配器模式(包装器模式),缺省适配器模式,双向适配器模式
  • OneCode 3.0架构升级:注解驱动与开放接口生态详解
  • 1068万预算!中国足协大模型项目招标,用AI技术驱动足球革命
  • [es自动化更新] 策略体系 | 策略源(容器镜像)
  • Java_Springboot技术框架讲解部分(一)
  • 使用Java完成下面程序
  • Vue3 学习教程,从入门到精通,Vue3指令知识点及使用方法详细介绍(6)