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

相关文章:

  • dify 用postman调试参数注意
  • 【数据结构初阶】--顺序表(二)
  • Compose笔记(三十四)--LayoutModifier
  • Raft-领导者选举
  • 基于YOLO11的垃圾分类AI模型训练实战
  • C语言课程设计--电子万年历
  • 第十八天,7月12日,八股
  • Agent 设计模式
  • 卫星通信终端天线的5种对星模式之二:DVB跟踪
  • Mamba架构的模型 (内容由deepseek辅助汇总)
  • 关于赛灵思的petalinux zynqmp.dtsi文件的理解
  • C++ Primer(第5版)- Chapter 7. Classes -001
  • Web学习笔记3
  • Windows环境下JS计时器精度差异揭秘
  • Qt:QCustomPlot类介绍
  • LangChain极速入门:用Python构建AI应用的新范式
  • zcbus使用数据抽取相当数据量实况
  • Scrapy爬虫中间件核心技术解析:定制化爬虫的神经中枢
  • CCS-MSPM0G3507-2-基础篇-定时器中断
  • 69 局部变量的空间分配
  • 通俗范畴论13 鸡与蛋的故事番外篇
  • C++类模板继承部分知识及测试代码
  • Golang操作MySQL json字段优雅写法
  • Hap包引用的Hsp报签名错误怎么解决
  • 【数据分析】03 - Matplotlib
  • LangChain 内存(Memory)
  • Java 大视界 -- Java 大数据机器学习模型在电商用户复购行为预测与客户关系维护中的应用(343)
  • C语言基础知识--动态内存管理
  • AD芯片(模数转换器)的有效位数(ENOB)
  • scrapy项目开发流程