colmap代码解读

2023-10-26

clomap是作者在ECCV2016年发表的基于两个概率的深度值和法线估计的论文(开源),下面就开源代码Patch_match_cuda.cu文件做简单的介绍

 

  1. 产生随机法向量和随机深度值
  2. 扰动法向量(产生随机三个方位角度)和扰动深度值
  3. 根据像素坐标计算三维空间坐标
  4. 传播深度(Since depth θl and normal nl define a local planar surface in 3D, we propagate the depth θlprp -1 of the intersection of the ray of the current pixel xl with the local surface of the previous pixel (θl-1; nl-1)
  5. 计算入射角(当前参考图像的法向量和原始图像的光线的夹角)和夹角(当前参考图像光线和原始图像光线夹角)
  6. 原始图像和参考图像的单应矩阵

  

 

 

Step1 工作空间的初始化

  1. 读入模型
  2. 建立缓冲区
  3. 图像下采样(根据精度来设置采样后的大小)
  4. 法线图和深度图的路径确定
  5. 深度图范围确定

5.1遍历模型中的三维点,找出这些点所对的图像ID,依次将这些点投影到对应图像的相机坐标系求出对应的深度值

5.2每张图像对应深度范围 ,升序排序深度值

最小值 = 深度值[size*0.01]

最大值 = 深度值[size*0.99]

最小值 = 最小值*(1-0.25)

最大值 = 最大值*(1+0.25)

Step2待处理的问题problem

  1. 获取model,获取patchmatch配置,像对个数和图像名字
  2. 构造参考图像和原始图像个数结构体
  3. 遍历参考图像,计算重叠度(参考图像和左右原始图像的重叠度,稀疏点的角度出发)计算每幅图像夹角(用图像的投影中心和三维点构成的夹角,然后取出所有顺序夹角的75%位置作为最后的夹角)
  4. 通过图像的夹角和重叠度,夹角大于阈值的情况下,重叠度按照降序排列获取重叠度最高的20张影像作为参考影像的原始影像

Step3 获取cuda个数(API调用)

Step4 初始化线程池

Step5 向线程池仍任务处理

  1. problem存放原始图像序列和参考图像(缓冲区)深度图,法线图
  2. patchMatchOption对应配置信息
  3. 构造 patchMatchCuda

假设 像对 pairCount= 5

3.1按照计算能力设置最好的显卡

 

3.2 初始化参考图像

参考图像分配显存、参考图像和分配显存、参考图像平方和分配显存

转换行数组,对参考图像进行滤波

滤波结果:

得到双边滤波后的图像,原始图像,双边滤波后的像素平方

 

3.3初始化原始图像序列

 

1、颜色图像

2、深度图像

 

3.4初始化转换矩阵

 

四个方向的内参矩阵,投影中心,相对转换矩阵和平移矢量,投影矩阵和逆投影矩阵

 

3.5初始化工作空间

随机状态,深度图,根据每张图像最小值最大值范围随机初始化深度图W*H,初始化法线图W*H*3,概率图W*H* pairCount,前一次概率图(0.5) W*H* pairCount 初始化代价图W*H* pairCount

  1. 开始执行patchmatch

4.1、计算初始化cost

输入:代价图、深度图、法线图、参考图的局部平方和,参考图局部双边权重和、空域权重、颜色权重

输出:代价图、深度图、法线图

细节:求出单应矩阵,对单应矩阵的颜色值求出NCC,NCC 的值给原始图像row col id

4.2、开始迭代

从上到下开始扫描

4.2.1、定义联合概率函数,计算概率图(反向信息)和初始化前向信息(0.5)

4.2.3 、估算出剩下行计算选择概率

读取反向信息计算概率,并且修正概率

用代价图计算和前向信息计算alpha, betal  =概率图

选择概率用alpha betal   权重球的

计算入射角,夹角,图像块面积比例对应的概率

采样概率(ID) = f(选择概率)*f(s1(入射角))*f(s2(夹角))*f(s3(比例))

归一化采样概率并计算累计分布概率

找出产生随机值大于累计分布概率的ID值,累计对应的cost,对剩下的深度值计算对应的cost,找出所有cost最小值对应的深度值和法线,用新的cost来更新选择概率图和前向信息

每张影像,根据深度值求出入射角和夹角,根据这些角度和概率值约束来判断这张影像是不是稳定点,判断这些点的个数是否满足要求来选择当前深度值和法向量

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

colmap代码解读 的相关文章

  • weblogic 任意文件上传漏洞复现(CVE-2018-2894)

    weblogic 任意文件上传漏洞复现 CVE 2018 2894 漏洞介绍 WebLogic管理端页面 ws utc begin do ws utc config do下可上传任意getshell 复现环境 vulhub的docker环境
  • 可以新建文本的管理器_「通达信」自定义数据管理器的制作方法

    自定义数据管理器制作的数据可以实现在板块中 K线主图上显示我们制作的数据 对于记性不好的股友起到很好的提醒作用 非常使用 譬如下图中在板块中显示你自定义的数据 调出路径 功能 公式系统 自定义数据管理器 如下图 打开 自定义数据管理器 面板
  • Java注解:Java注解的基本认识

    Java的注解从1 5就有了 算不上新特性 应该算是 老特性 基本业务代码写的时候也可以说是 最熟悉陌生人 我们最起码会经常用到spring的注解来开发 比如说我们定一个 service来作为我们处理逻辑 实现服务接口的 但是可能会对自己使
  • 9 万字 208 道 Java 经典面试题总结 (附答案), 看到就是赚到

    前言 最近有很多粉丝问我 有什么方法能够快速提升自己 通过阿里 腾讯 字节跳动 京东等互联网大厂的面试 我觉得短时间提升自己最快的手段就是背面试题 最近总结了Java常用的面试题 分享给大家 希望大家都能圆梦大厂 加油 下面篇幅较长 有需要
  • rosserial_arduino的安装及使用

    本文主要是使用rosserial arduino包 可以通过msp430launchpad for arduino IDE直接使用ROS 此ide和audrino ide 的使用方法大同小异 rosserial提供了一个通信协议 它通过ar
  • matlab pcacov排序,matlab中pcacov这个命令的作用???

    满意答案 5a3d010 2013 09 12 采纳率 43 等级 12 已帮助 16369人 pcacov Principal components analysis PCA using the covariance matrix Syn

随机推荐

  • JS中原型对象中的constructor的作用?

    最近被同事问道一个问题 function Father this color red green function Child this test 1 Child prototype new Father let instance new
  • Linux内核配置——menuconfig

    1 menuconfig介绍 menuconfig的作用是提供一个图像化的界面去配置内核 也就是修改 config文件 其实你直接去修改 config文件 不用menuconfig也是可以的 但是 config里的配置项太多了 靠人根本记不
  • Maven 设置仓库地址

    修改本地仓库地址 maven 用来管理我们的 Java 第三方库 我们需要设置仓库的本地地址来存放这此第三方库 打开 Maven 目录下的配置文件 apache maven 3 5 0 conf settings xml 找到 标签
  • 光纤信号衰减的原理及分析

    光纤信号衰减是指随着光信号在光纤中传输的距离增加 光信号的强度逐渐减弱的现象 光纤信号衰减的原理主要包括以下两个方面 1 光纤的损耗 光纤在传输过程中会出现一定程度的损耗 主要包括以下几种 1 吸收损耗 光信号在传输过程中会被光纤材料吸收
  • js的FileSaver.saveAs()方法:监听保存进度,进度条等方法

    在使用FileSaver saveAs保存表格到本地时 如果想要获取导出 保存进度可以如下操作 FileSaver js的saveAs 方法是一个异步操作 它将文件保存到用户设备上 在调用saveAs 方法后 可以通过使用回调函数 Prom
  • 【SSM】【4】前端后端数据流转

    前后端数据流转图 业务流转图 前端控制器接受用户请求响应 doJsonRequest ursuser login json json function data if getUrlParam session 1 history back e
  • 最新版 phpstudy V8.0如何禁止或允许站点目录列表显示

    phpstudy V8 0如何禁止或允许站点目录列表显示 localhost下显示文件目录 如何在浏览器中打开 最新版phpstudy V8 0 的文件目录 如果你像我一样是小白 这篇文章对你或许有用 1 当你删除了phpstudy pro
  • 《数据库系统内 幕》事务恢复与处理

    数据库系统内幕 章五 缓冲区管理 页缓存 回收 锁定页 页置换策略 同os中的置换策略 恢复 检查点 steal和force策略 不太理解 要回看 并发控制 异常 专栏 数据库系统内 幕 存储引擎 数据库系统内 幕 事务恢复与处理 数据库系
  • 2022Java笔试题选择题整理(附答案解析)走过路过不要错过了喂!

    2022Java笔试题选择题 一 个人主页 编程ID 个人简介 大家好 我是编程ID 一个想要与大家共同进步的程序员儿 欢迎大家 这里是CSDN 我总结知识的地方 欢迎来到我的博客 望能帮到各位想要找工作或者提高自己的小伙伴儿们 如果有什么
  • 将无序数列升序排列,并输出排列结果和排列后的下标

    include
  • mysql驱动协议之loadbalance和replication

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 背景 偶然下和朋友聊到了mysql多节点集群架场景 对应我们各系代码如何去使用它 牵扯到mysql的驱动包中已经支持的策略 发现这块的概念有些模糊 索性就梳理了一番留着后用
  • 如何防止mq的消息丢失

    分为两种情况 1 主要在消费方 当消息从mq传到消费者时 消费者可能消费消息失败 这时mq中的消息已经自动删除了 导致消息的丢失 需要使用ack机制来保证消息不会丢失 当消费者从mq中拿到消息时 这个消息在mq中不删除 而是消费者对消息进行
  • Qt实现2D绘图

    一 介绍 Qt中提供了强大的2D绘图系统 可以使用相同的API在屏幕和绘图设备上进行绘制 它主要基于QPainter QPaintDevice和QPaintEngine这三个类 其中QPainter用来执行绘图操作 QPaintDevice
  • 科技抗老新突破,香港美容仪品牌内地重磅上市

    近年来 新消费时代 颜值经济 的火热促使美容行业市场规模增长迅速 越来越多的人愿意为 美 买单 对美的需求也随之增长 美容行业已经成为成长最快的新锐产业 随着经济和科技的发展 快捷 也成为了当今社会的时代特征 美容行业也从传统的美容院向家用
  • 竞赛选题 opencv 图像识别 指纹识别 - python

    0 前言 优质竞赛项目系列 今天要分享的是 基于机器视觉的指纹识别系统 学长这里给一个题目综合评分 每项满分5分 难度系数 3分 工作量 3分 创新点 4分 该项目较为新颖 适合作为竞赛课题方向 学长非常推荐 更多资料 项目分享 https
  • 前端安装vue-cli报错:npm ERR! notarget No matching version found for vue@cli.

    安装vue cli的版本3以上的内容 命令中 在最前 不在中间 对的命令是npm install g vue cli C Users 15232 gt npm install g vue cli npm ERR code ETARGET n
  • Linux 安装Mysql 详细教程(图文教程)

    首先通过xshell或者 putty 远程进入Linux 命令行操作界面 Xshell 的安装 1 去XShell Download下载需要的版本 XShell免费版 解决官网打不开的问题 百度网盘 https pan baidu com
  • 用6个实例,8段代码,详解Python中的for循环

    目录 前言 01 使用tryexcept的for循环 02 指数运算 03 嵌套的循环 04 在for循环中使用split 函数 1 使用split 函数做单词比较 2 使用split 函数打印指定格式的文本 3 使用split 函数打印固
  • windows 7Z命令行与安装

    7z 全称7 Zip 是一款开源软件 是目前公认的压缩比例最大的压缩解压软件 7z exe在CMD窗口的使用说明如下 7 Zip A 4 57 Copyright c 1999 2007 Igor Pavlov 2007 12 06 Usa
  • colmap代码解读

    clomap是作者在ECCV2016年发表的基于两个概率的深度值和法线估计的论文 开源 下面就开源代码Patch match cuda cu文件做简单的介绍 产生随机法向量和随机深度值 扰动法向量 产生随机三个方位角度 和扰动深度值 根据像