当前位置: 首页 > 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.xdnf.cn/news/1112491.html

相关文章:

  • 缺陷特征粘贴增强流程
  • 过拟合 跷跷板 幻觉 混合精度
  • 学习笔记 Datewhale MCP Server Task2
  • Windows安装SSH
  • 【Java入门到精通】(二)Java基础语法(上)
  • [ABC267F] Exactly K Steps
  • 零基础 “入坑” Java--- 九、类和对象(二)
  • 车载操作系统 --- Linux实时化与硬实时RTOS综述
  • 数据结构——散列表
  • 【PTA数据结构 | C语言版】用两个栈实现队列
  • 【GESP】C++ 2025年6月一级考试-客观题真题解析
  • MoE(混合专家模型):大模型时代的“模块化超级大脑”——从原理到实战的深度革命
  • 初识JDBC
  • GPU编程入门:CUDA与OpenCL全面解析
  • C语言基础知识--动态内存管理
  • 【时间之外】AI在农机配件设计场景的应用
  • bp使用爆破模块破解pikachu的登陆密码
  • java堆的创建与基础代码解析(图文)
  • BKD 树(Block KD-Tree)Lucene
  • TCP与UDP协议详解:网络世界的可靠信使与高速快递
  • UnityShader——SSAO
  • 微信小程序121~130
  • 时序分解 | Matlab基于GWO-FMD基于灰狼算法优化特征模态分解-2025-7-12
  • 直播录屏技术揭秘:以抖音直播录屏为例
  • LLM 不知道答案,但是知道去调用工具获取答案?
  • 基于STM32F412+RT-Thread的智能汽车CAN通信仪表盘
  • ADSP-1802这颗ADI的最新DSP应该怎么做开发(一)
  • JavaScript 常见10种设计模式
  • TCP详解——各标志位
  • linux 系统找出磁盘IO占用元凶 —— 筑梦之路