计算两幅图像在特定交点位置的置信度评分。置信度评分反映了该位置特征匹配的可靠性,通常用于图像处理任务(如特征匹配、立体视觉等)

这段代码定义了一个名为compute_confidence的函数,用于计算两幅图像在特定交点位置的置信度评分。置信度评分反映了该位置特征匹配的可靠性,通常用于图像处理任务(如特征匹配、立体视觉等)。以下是逐部分解析:

3. 结果打分系统# 为每个交点添加置信度评分def compute_confidence(img1, img2, point):x, y = pointpatch1 = img1[max(0,y-2):y+3, max(0,x-2):x+3]patch2 = img2[max(0,y-2):y+3, max(0,x-2):x+3]intensity1 = np.sum(patch1) / patch1.sizeintensity2 = np.sum(patch2) / patch2.sizereturn min(intensity1, intensity2) / 255.0
  1. 函数目的

• 输入:

• img1, img2:两幅待比较的图像(通常为灰度图)。

• point:一个坐标点 (x, y),表示需要计算置信度的位置(如特征点或匹配点)。

• 输出:

• 返回一个0到1之间的浮点数,表示置信度评分(值越大表示匹配越可靠)。

  1. 实现原理

代码通过以下步骤计算置信度:

  1. 提取局部图像块:
    • 以点 (x, y) 为中心,从两幅图像中分别提取一个 5×5 的像素块(若靠近边界则截断):
    patch1 = img1[max(0,y-2):y+3, max(0,x-2):x+3] # 图像1的局部块
    patch2 = img2[max(0,y-2):y+3, max(0,x-2):x+3] # 图像2的局部块

    • 例如,若 point = (10, 20),则提取 img1[18:23, 8:13] 和 img2[18:23, 8:13] 的像素区域。

  2. 计算平均亮度强度:
    • 对每个局部块,计算其所有像素的亮度平均值:
    intensity1 = np.sum(patch1) / patch1.size # 图像1局部块的平均亮度
    intensity2 = np.sum(patch2) / patch2.size # 图像2局部块的平均亮度

    • 亮度值范围取决于图像格式(如8位灰度图为0-255)。

  3. 计算置信度:
    • 取两局部块平均亮度的较小值,并归一化到 [0, 1] 范围:
    confidence = min(intensity1, intensity2) / 255.0

    • 除以 255.0 是将亮度值从 0-255 映射到 0-1(假设图像为8位)。

  4. 设计意图与适用场景

• 核心假设:

• 若两幅图像在匹配点附近的局部区域亮度较高,说明该位置特征明显(如边缘、角点等),匹配结果更可靠。

• 反之,若局部区域亮度很低(如暗区或纹理缺失区域),则特征区分度低,匹配可能不可靠。

• 典型应用:

• 特征匹配:在SIFT、ORB等算法中,对匹配点进行置信度过滤,剔除低置信匹配。

• 立体视觉:在视差计算后,标记低置信区域(如弱纹理区域)以指导后续优化。

• 图像拼接:评估重叠区域匹配质量,避免错位。

  1. 优缺点分析

优点 缺点

计算简单高效,仅需局部像素操作 仅依赖亮度,未考虑纹理、结构等信息

适合实时系统(如视频处理) 对光照变化敏感,亮度差异大时评分偏低

结果可解释性强 局部块大小固定(5×5),可能忽略更大范围特征

  1. 改进方向

若需提升置信度评估的鲁棒性,可参考以下方法:

  1. 融合多特征:
    • 结合梯度、纹理统计量(如方差)或特征描述符响应值(如SIFT的特征强度)。

    • 例如:
    gradient1 = np.mean(np.abs(cv2.Sobel(patch1, cv2.CV_64F, 1, 1)))
    confidence = (intensity + gradient) / 2 # 综合亮度和梯度

  2. 自适应局部块:
    • 根据图像内容动态调整块大小(如纹理丰富时用小块,平滑区域用大块)。

  3. 机器学习方法:
    • 使用训练好的模型预测置信度(如基于匹配代价曲线、左右一致性检查等特征)。

示例调用

import numpy as np

假设有两幅灰度图 img1, img2 和匹配点 (50, 100)

confidence = compute_confidence(img1, img2, (50, 100))
print(f"Confidence at (50,100): {confidence:.2f}") # 输出:0.75(范围0-1)

总结

该函数通过比较局部亮度强度快速评估匹配点可靠性,适用于对效率要求高的场景。但在复杂光照或弱纹理环境下需结合更高级方法提升鲁棒性。

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

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

相关文章

计算机视觉第一课opencv(三)保姆级教学

简介 计算机视觉第一课opencv(一)保姆级教学 计算机视觉第一课opencv(二)保姆级教学 今天继续学习opencv。 一、 图像形态学 什么是形态学:图像形态学是一种处理图像形状特征的图像处理技术,主要用于描…

24.早期目标检测

早期目标检测 第一步,计算机图形学做初步大量候选框,把物体圈出来 第二步,依次将所有的候选框图片,输入到分类模型进行判断 选择性搜索 选择搜索算法(Selective Search),是一种熟知的计算机图像…

Java基础知识点汇总(三)

一、面向对象的特征有哪些方面 Java中面向对象的特征主要包括以下四个核心方面:封装(Encapsulation) 封装是指将对象的属性(数据)和方法(操作)捆绑在一起,隐藏对象的内部实现细节&am…

GEO优化专家孟庆涛:让AI“聪明”选择,为企业“精准”生长

在生成式AI席卷全球的今天,企业最常遇到的困惑或许是:“为什么我的AI生成内容总像‘模板套娃’?”“用户明明想要A,AI却拼命输出B?”当生成式AI从“能用”迈向“好用”的关键阶段,如何让AI真正理解用户需求…

【交易系统系列04】交易所版《速度与激情》:如何为狂飙的BTC交易引擎上演“空中加油”?

交易所版《速度与激情》:如何为狂飙的BTC交易引擎上演“空中加油”? 想象一下这个场景:你正端着一杯热气腾腾的咖啡,看着窗外我家那只贪睡的橘猫趴在阳光下打着呼噜。突然,手机上的警报开始尖叫,交易系统监…

windows下jdk环境切换为jdk17后,临时需要jdk1.8的处理

近段时间,终于决定把开发环境全面转向jdk17,这不就遇到了问题。 windows主环境已经设置为jdk17了。 修改的JAVA_HOME D:\java\jdk-17CLASSPATH设置 .;D:\java\jdk-17\lib\dt.jar;D:\java\jdk-17\lib\tools.jar;PATH中增加 D:\java\jdk-17\bin但是有些程序…

Android URC 介绍及源码案例参考

1. URC 含义 URC 是 Unsolicited Result Code(非请求结果码)的缩写。 它是 modem(基带)在不需要 AP 主动请求的情况下向上层主动上报的消息。 典型例子:短信到达提示、网络状态变更、来电通知、信号质量变化等。 URC 一般以 AT 命令扩展的形式从 modem 发到 AP,例如串口…

VB.NET发送邮件给OUTLOOK.COM的用户,用OUTLOOK.COM邮箱账号登录给别人发邮件

在VB.NET中通过代码发送邮件时,确实会遇到邮箱服务的身份认证(Authentication)要求。特别是微软Outlook/Hotmail等服务,已经逐步禁用传统的“基本身份验证”(Basic Authentication),转而强制要求…

【网络运维】Shell:变量进阶知识

Shell 变量进阶知识 Shell 中的特殊变量 位置参数变量 Shell 脚本中常用的位置参数变量如下: $0:获取当前执行的 Shell 脚本文件名(包含路径时包括路径)$n:获取第 n 个参数值(n>9 时需使用 ${n}&#xf…

部署Qwen2.5-VL-7B-Instruct-GPTQ-Int3

模型下载 from modelscope import snapshot_download model_dir snapshot_download(ChineseAlpacaGroup/Qwen2.5-VL-7B-Instruct-GPTQ-Int3)相关包导入 import os import numpy as np import pandas as pd from tqdm import tqdm from datetime import datetime,timedelta fro…

sourcetree 拉取代码

提示:文章旨在于教授大家 sourcetree 拉取代码的方式,关于代码的提交合并等操作后续会补充。 文章目录前言一、sourcetree 安装二、http 与 ssh 拉取代码1.http 方式(1)生成 token(2)拼接项目的 url&#x…

epoll模型网络编程知识要领

1、程序初始化创建监听socket调用bind函数绑定ip地址、port端口号调用listen函数监听调用epoll_create函数创建epollfd调用epoll_ctrl函数将listenfd绑定到epollfd上,监测listenfd的读事件在一个无限循环中,调用epoll_wait函数等待事件发生2、处理客户端…

15-day12LLM结构变化、位置编码和投机采样

多头机制transformer结构归一化层选择 归一化层位置归一化层类型激活函数Llama2结构MoE架构 混合专家模型DeepSeek MLA为何需要位置编码目前的主流位置编码正余弦位置编码可学习位置编码ROPE旋转位置编码推导参考: https://spaces.ac.cn/archives/8265 https://zhua…

记录 docker容器打包成镜像 在其他服务器快速启动镜像和容器

我有个nginx服务器 需要在其他服务器直接部署使用 里面都是完整的 使用 docker ps 查看容器id 进行打包成镜像docker commit [容器ID或名称] 新镜像名:版本 docker commit 28f60e2206b2 my-nginx-custom:v1镜像保存成文件 docker save -o my-nginx-custom.tar my-nginx-custom:…

使用LLaMA-Factory对大模型进行微调-详解

书接上回 启动llama Factory可视化页面 llamafactory-cli webui 如果想后台运行 使用 nohup llamafactory-cli webui &浏览器访问 http://127.0.0.1:7860/配置项主要参数: 参考: https://docs.coreshub.cn/console/compute_platform/help/llama_factory/ 模型路径 : 解…

【AI】录制自动生成UI自动化脚本

命令行输入:npx playwright codegen https://myerp.dmyc.XXX.com:9443/打开的浏览器上操作,会自动录制,并生成自动化脚本

深度剖析字节跳动VeOmni框架

背景与设计动机 随着推荐系统和AI模型走向多模态、多任务的趋势,字节跳动面临着训练、迭代效率和系统复杂度的双重挑战。一方面,各类业务(如新闻推荐、短视频、图文广告、电商带货等)都需要处理文本、图像、视频、音频等多种输入模…

OCR库pytesseract安装保姆级教程

本文将介绍使用工具安装OCR库pytesseract的详细流程。 Anaconda安装教程参考Anaconda安装保姆级教程。 目录 一、工具安装 二、创建虚拟环境 三、安装pytesseract 总结 一、工具安装 点击链接前往官网codetou.com,下载安装最新版即可,本篇博客以抠头…

开源im即时通讯软件开发社交系统全解析:安全可控、功能全面的社交解决方案

在即时通讯与社交需求日益增长的今天,一款安全、稳定、功能全面的聊天软件成为不少团队和开发者的刚需。但市面上多数聊天 APP 要么依赖第三方插件,面临数据安全隐患和高额服务费;要么功能单一,难以满足复杂社交场景。今天给大家推…

残差神经网络(ResNet)

残差神经网络(Residual Neural Network,简称 ResNet)是深度学习领域的里程碑式模型,由何凯明等人在 2015 年提出,成功解决了深层神经网络训练中的梯度消失 / 爆炸问题,使训练超深网络(如 152 层…