kitti depth complement

2023-11-19

代码
运行环境:windows10
open3d版本:0.12.0

import cv2
import numpy as np
import os 
import math 
import open3d as o3d

basic_path = "D:/dataset/kitti_depth/data_depth_selection/depth_selection/val_selection_cropped"
image_path = "/image/2011_09_26_drive_0002_sync_image_0000000008_image_03.png"
depth_path = "/velodyne_raw/2011_09_26_drive_0002_sync_velodyne_raw_0000000008_image_03.png"
GT_path = "/groundtruth_depth/2011_09_26_drive_0002_sync_groundtruth_depth_0000000008_image_03.png"

image_file = cv2.imread(basic_path+image_path,cv2.IMREAD_GRAYSCALE)   # shape (352,1216) type numpy
depth_file = cv2.imread(basic_path+depth_path, -1)             # shape (352,1216) type numpy
GT_file = cv2.imread(basic_path+GT_path, -1)
print(type(depth_file))  #uint16

def gaussian_filter(distance, sigma):
    return np.exp(-distance ** 2 / (2 * sigma ** 2)) / (math.sqrt(2*math.pi)*sigma)
    
def bilateral_filter(depth, image, kernel_size, sigma_depth, sigma_color):
    padding = (kernel_size-1)/2
    padding = int(padding)
    h, w = image.shape

    img = np.zeros((h+2*padding, w+2*padding), dtype=np.float)
    img[padding:h+padding, padding:w+padding] = image
    dep = np.zeros((h+2*padding, w+2*padding), dtype=np.float)
    dep[padding:h+padding, padding:w+padding] = depth
    output = np.zeros((h+2*padding, w+2*padding), dtype=np.float)

    
    k = np.zeros((kernel_size, kernel_size), dtype=np.float)
    for kernel_center_x in range(padding, h+padding):
        for kernel_center_y in range(padding, w+padding):
            sum = 0
            bf = 0
            for i in range(0, kernel_size):
                for j in range(0, kernel_size):
                    dis0 = pow((dep[kernel_center_x-padding+i,kernel_center_y-padding+j]-dep[kernel_center_x, kernel_center_y]), 2)
                    dis1 = pow((img[kernel_center_x-padding+i,kernel_center_y-padding+j]-img[kernel_center_x, kernel_center_y]), 2)

                    k[i,j] = gaussian_filter(dis0,sigma_depth)*gaussian_filter(dis1,sigma_color)
                    bf = bf + k[i,j]*dep[kernel_center_x-padding+i,kernel_center_y-padding+j]
                    sum = sum + k[i,j]
            bf = bf/sum
            output[kernel_center_x, kernel_center_y] = bf
    return output[padding:h+padding, padding:w+padding]

depth_bf = bilateral_filter(depth_file, image_file, 12, 2, 5)
#print(depth_bf.dtype)  #float64
depth_bf = depth_bf.astype(np.uint16)
#print(type(depth_bf[0][0]))  #uint16

display_dbf = o3d.geometry.Image(depth_bf)
o3d.visualization.draw_geometries([display_dbf])
o3d.visualization.draw_geometries([depth_file])
o3d.visualization.draw_geometries([image_file])

结果图

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

kitti depth complement 的相关文章

  • 小游戏开发:使用 React 和 Redux Tool Kit 实现俄罗斯方块

    大家好 我是若川 我持续组织了近一年的源码共读活动 感兴趣的可以 点此扫码加我微信 lxchuan12 参与 每周大家一起学习200行左右的源码 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列 包含20余篇源码文章 历史面试系列 另
  • 进制图像的莫拉尔距离图

    进制图像的莫拉尔距离图 莫拉尔距离图是一种计算图像中对象之间距离的方法 通常用于形态学分析和图像处理的应用中 它可以帮助我们量化图像中不同对象之间的距离 并用于图像分割 边缘检测等任务 本文将介绍如何使用C C 语言实现进制图像的莫拉尔距离
  • 区块链技术与应用实验报告(实验六)

    文章目录 区块链技术与应用实验报告 实验六 关于作者 作者介绍 一 实验目的 二 实验原理简介 三 实验环境 四 实验步骤 1 访问 bitaddress org 等待网页跳转完毕 2 生成两对地址和私钥 3 生成一对新的地址和私钥 4 访
  • 彻底搞懂Vue中的Mixin混入

    1 什么是Mixin 其实Mixin不是Vue专属的 可以说它是一种思想 通俗点讲就是混入 在很多开发框架中都实现了Mixin 混入 我们这里主要讲解的是Vue中的Mixin 大白话解释 将组件的公共逻辑或者配置提取出来 哪个组件需要用到时
  • JS中的声明提升

    变量声明提升 使用var关键字声明的变量 会在所有的代码执行之前被声明 如果声明变量时未使用var关键字 变量不会被提前声明 console log a 输出undefined var a 1 等同于 var a console log a
  • RabbitMQ下的生产消费者模式与订阅发布模式

    所谓模式 就是在某种场景下 一类问题及其解决方案的总结归纳 生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式 用于功能解耦和分布式系统间的消息通信 以下面两种场景为例 数据接入 假设有一个用户行为采集系统 负责从App端采集用户
  • protobuf C#编译

    protobuf C 编译 标签 protobufc 2016 08 30 23 22 342人阅读 评论 1 收藏 举报 分类 工作记录 2 版权声明 本文为博主原创文章 未经博主允许不得转载 1 下载protobuf代码 https g
  • GO语言篇之CGO

    GO语言篇之CGO 文章目录 GO语言篇之CGO 前言 C代码嵌入GO代码 C文件嵌入GO代码 缺点 前言 Go语言可以通过内置的CGO调用C语言接口 从而实现C语言代码的交互 CGO提供了一种将Go代码嵌入到C代码中 或者从Go代码中调用
  • spring的事务配置详解

    接下来我将给大家介绍spring事务配置的两种方式 1 基于XML的事务配置 2 基于注解方式的事务配置 前言 在我们详细介绍spring的两种声明式事务管理之前 我们需要先理解这些概念 1 spring的事务管理是通过Aop的方式来实现
  • 不同cpu平台互传docker镜像

    说明 不同的平台之间docker镜像不能共用 假如使用mac pull的镜像 load 到amd平台上不能使用 但是可以在pull镜像使用 platform linux amd64 pull amd64 架构的镜像 docker pull
  • 西门子S7-1200 PLC选型前这些要了解

    西门子S7 1200PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200系
  • Jetson TX2刷JetPack3.3(方法二)

    官网上的刷机教程都是需要一个路由器才能刷机 这篇博客介绍如何不要路由器 只需要一个宿主机就可以刷机的教程 1 刷机准备工作 JetPack是一个x86二进制文件 不能在基于ARM的机器上运行 因此需要借助一个宿主机来刷JetPack 因此
  • 数据结构模板

    链接
  • Github-Copilot初体验-Pycharm插件的安装与测试

    引言 80 代码秒生成 AI神器Copilot大升级 最近copilot又在众多独角兽公司的合力下 取得了重大升级 GitHub Copilot发布还不到两年 就已经为100多万的开发者 编写了46 的代码 并提高了55 的编码速度 据官博
  • Quartus导出网表文件:.qxp和.vqm

    当项目过程中 不想给甲方源码时 该如何 我们可以用网表文件qxp或者vqm对资源进行保护 下面讲解这两个文件的具体生成步骤 一 基本概念 QuartusII的qxp文件为QuartusII Exported Partition 用于创建综合
  • c#float取小数点后两位_C# 保留小数点后两位(方法总结)

    最简单使用 float i 1 6667f string show i ToString 0 00 结果1 67 四舍五入 其他类似方法 string show i ToString F F2 f 不区分大小写 string show St

随机推荐

  • SpringBoot集成Swagger4

    Swagger是一种工具 可以帮助开发人员设计 构建 文档化和测试 RESTful Web 服务 Swagger提供了一种交互式文档格式 可以使用它来了解 API 的用法 参数 返回值等等 Spring Boot提供了集成Swagger的简
  • Servlet接口实现类

    JavaWeb 03 Servlet 02 Servlet接口实现类 1 什么是Servlet接口 有什么用 Servlet接口来自于Servlet规范中的一个接口 这个接口存在于Http服务器所提供的jar包中 Servlet接口的具体位
  • 【NVMe2.0b 14-6】Format NVM、Keep Alive、Lockdown command

    目录 5 14Format NVM command 5 14 1Command Completion 5 18Keep Alive command 5 18 1Command Completion 5 19Lockdown command
  • 啪啪动物城 源码

    游戏地址 http www 4399 com flash 192131 htm 啪啪动物城源码 https files cnblogs com files gamedaybyday E5 95 AA E5 95 AA E5 8A A8 E7
  • Metasploit 提权篇

    声明 文中所涉及的技术 思路和工具仅供以安全为目的的学习交流使用 任何人不得将其用于非法用途以及盈利等目的 否则后果自行承担 文章目录 内核漏洞提权 enum patches模块 Windows Exploit suggester Wind
  • web服务器响应的端口号,web服务器端口号

    web服务器端口号 内容精选 换一换 Nginx Web Server场景是以Nginx作为Web Server的场景 Nginx作为Web Server 可以被配置部署为静态资源Web Server 在该配置下可以高效的进行静态资源的请求
  • python学习笔记——条件判断

    上篇 https blog csdn net qq 42489308 article details 89388218 条件判断 条件判断是通过一条或多条判断语句的执行结果 True或者False 来决定执行的代码块 在Python语法中
  • uboot分析之Makefile

    Uboot分析之Makefile 1 uboot根目录下执行 make smdk2410 config smdk2410 config unconfig MKCONFIG config arm arm920t smdk2410 samsun
  • 数据集下载OTB,VOT,UAV,鸢尾花

    OTB数据集下载百度网盘链接 链接 https pan baidu com s 1snsJF 7Sw EbKtzdvLO1nw 提取码 ls23 VOT数据集下载百度网盘链接 链接 https pan baidu com s 1UiTG1z
  • AI顶级会议列表 & ACL相关

    The First Class tier 1的conferences 其实基本上就是AI里面大家比较公认的top conference 下面同分的按字母序排列 IJCAI 1 AI最好的综合性会议 1969年开始 每两年开一次 奇数年开 因
  • 基于互补搜索技术和新颖架构设计,结合MobileNetV3主干网络,打造不同的目标检测器

    基于互补搜索技术和新颖架构设计 结合MobileNetV3主干网络 打造不同的目标检测器 目标检测是计算机视觉中的一个重要任务 随着深度学习技术的发展和神经网络的不断优化 YOLOv5已成为目前最流行的目标检测框架之一 然而 为了进一步提高
  • opengl shader 使用札记

    一 shader的使用步骤 创建shader 1 创建一个shader对象 GLuint glCreateShader GLenum shaderType 2 将shader源代码传入前面创建的shader对象 void glShaderS
  • 老嫂子的保姆级科普 选择视频剪辑软件就从阅读本文开始

    选错一款视频剪辑软件 是种什么样的体验 就好像新婚当晚 发现老婆是人妖一样 浪费了感情 又错付了青春 新手在学习视频剪辑的初期 需要花费大量精力去熟悉剪辑软件的基础功能 而软件挑选本身没有对错可言 适合自己的才是最好的 因此 本文仅从事实与
  • 初识Java(一)

    Java开发语言 前言 一 Java是什么 二 应用领域 特点及核心机制 1 应用领域 2 特性及特点 特性 特点 3 两种核心机制 三 JDK JRE JVM的关系 四 Java环境变量配置 五 编写我的第一个程序 总结 前言 计算机语言
  • C# 实现rabbitmq 延迟队列功能(不堵塞)

    最近在研究rabbitmq 项目中有这样一个场景 在用户要支付订单的时候 如果超过30分钟未支付 会把订单关掉 当然我们可以做一个定时任务 每个一段时间来扫描未支付的订单 如果该订单超过支付时间就关闭 但是在数据量小的时候并没有什么大的问题
  • 计算机基础msoffice等宽两缆,一级计算机基础及《MSOffice应用》模拟题

    一级计算机基础及 MSOffice应用 模拟题 三 字处理题 共25分 26 在考生文件夹下打开文档WORD DOCX 按照要求完成下列操作并以该文件名 WORD oocx 保存文档 文档开始 IBM电子商务专利的特点 通过对IBM e c
  • Typora主题下载

    1 0前言 Typora有很多主题可以使用 默认的主题很少 想要自己的主题更加个性化 可以去添加更多的主题来优化自己的使用体验 2 0下载主题 2 1 找到Typora主题的网站 1 打开一个typora文件此点击 2 进入偏好设置 3依次
  • 【目标检测】32、让你一文看懂且看全 NMS 及其变体

    文章目录 一 NMS 1 1 背景 1 2 方法 1 3 代码 1 4 不足 二 Soft NMS 2 1 背景 2 2 方法 2 3 效果 2 4 代码 2 5 不足 三 Softer NMS 3 1 背景 3 2 方法 四 IoU Ne
  • MySQL开启bin_log后导致创建函数、存储过程失败。Error:Result_ 1418 - This function has none of DETERMINISTIC

    搭建分布式服务 使用了主从数据库 需要使用MySQL的binlog去同步数据 但是开启binlog后导致新增函数 存储过程等报错 具体报错信息如下 Result 1418 This function has none of DETERMIN
  • kitti depth complement

    代码 运行环境 windows10 open3d版本 0 12 0 import cv2 import numpy as np import os import math import open3d as o3d basic path D