Event Camera Calib 单目事件相机内参标定

本文介绍了事件相机(DAVIS346-color)的标定流程,包括使用ROS和inivation的DV-ROS包记录事件流,将rosbag转换为.h5文件,使用e2calib工具上采样并重建图像,以及利用kalibr进行相机标定。过程中涉及的工具有DV-ROS、e2calib和kalibr,以及相关依赖的安装和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件相机的标定方法有很多,我介绍的这一种并不是最优的。该方法主要依照uzh发布的e2calib代码。步骤如下:

一、首先使用事件相机拍摄标定版,并将输出的事件流录制成rosbag。如下图:

6f753c7ae0e145098c4c7e31273d37f7.png

这里插入一下inivation事件相机ros包的使用和事件流的录制:

1、事件相机必要依赖安装(我使用的是inivation的DAVIS346-color相机)

For ubuntu-18.04

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:inivation-ppa/inivation-bionic
sudo apt update
sudo apt install dv-processing dv-runtime-dev gcc-10 g++-10

For ubuntu-20.04

sudo add-apt-repository ppa:inivation-ppa/inivation
sudo apt update
sudo apt install dv-processing dv-runtime-dev gcc-10 g++-10
sudo apt install python3-catkin python3-catkin-tools ros-noetic-catkin ros-noetic-camera-info-manager

2、git clone dv-ros的代码并编译(inivation相机的ros包)

mkdirs catkin_ws/src
cd catkin_ws/src
git clone https://gitlab.com/inivation/dv/dv-ros.git
cd ..
catkin build --cmake-args -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_CXX_COMPILER=g++-10

3、执行命令,可视化事件相机的事件帧和图像帧(有些相机可能没有图像)

source devel/setup.bash
roslaunch dv_ros_visualization event_visualization.launch

执行结果如下图:

fc48468a30d44472b71a5989f6dbe61e.png

 4、录制事件

在上一步roslaunch之后会产生如下的rostopic

68d3bff2ef034917a3304573bd05a9cb.png

录制/capture_node/events话题

rosbag record /capture_node/events

 

二、将录制的rosbag转为.h5格式的文件

这一步的初始代码来自uzh的e2calib,但是在这吐槽一下,uzh不维护代码,代码运行上有很多坑。所以我们使用HKUSTGZ的可执行版本

1、配置环境(全程可在anaconda的虚拟环境中运行下面的所有代码,不必按照uzh所说的rosbag转为.h5文件不得在anaconda中进行之言)

conda create -n e2calib python=3.7
conda activate e2calib
conda install anaconda numpy scipy
conda install conda-forge h5py opencv tqdm
conda install pytorch torchvision cudatoolkit=$cuda_version
pip install rosbag
#pytorch的安装以pytorch官网的安装方法为依据

rosbag安装和使用过程中可能会出现问题,解决方法可参照import rosbag报错解决方法

2、文件转换

在上述创建的虚拟环境中执行以下命令:

python convert.py --input_file test.bag --output_file test.h5 --ros_topic /davis/events

--input_file是rosbag文件的地址

--output_file是输出.h5文件的地址(注意一定要……/test.h5形式)

--ros_topic是指rosbag中需要转换的事件流的话题名

 

三、将.h5文件经过上采样等处理得到图像(通过e2vid离线模型输出)

1、环境配置

由于第二步配置环境时已经完全配完,所以后续步骤依旧是在第二步的虚拟环境中进行

2、输出图像

在使用offline_reconstruction.py进行图像重建时,需要修改代码(下图第144-145行)。这样就可以使用原始事件流的时间戳作为重建图像的文件名。

6f6131c01e8249b797d180679f083a94.png1092cd5a15cd4500ab2ec9b92ccac07f.png

 

 

#with trigger
python offline_reconstruction.py  --h5file test.h5 --output_folder path_to_folder --timestamps_file trigger_format.txt --upsample_rate 4 --height 260 --width 346

#without trigger
python offline_reconstruction.py  --h5file xxx.h5 --output_folder path_to_folder --freq_hz 5 --upsample_rate 4 --height 260 --width 346

--h5file是需要处理的.h5文件的地址

--output_folder是输出图片的地址

--timestamps_file是时间戳文件地址

--freq_hz是帧率

--upsample_rate是上采样率

--height和--width分别是图像的高和宽

3、最后输出图像重建结果如下所示(取其中几张):

1991b5a6ac9e4add96b4caae56981f8b.pngc7457cf397ba4d57a645b7349ec9e491.png241b8f6bccff4965a3fb8414eac47c7b.png2ebe0554aa694238a2c860eb3dba0a0e.png

 

四、对输出的图像使用kalibr进行标定

1、将图片转换为rosbag

python images_to_rosbag.py --rosbag_folder /img_out --image_folder /e2calib --image_topic /dvs/image_reconstructed

2、使用kalibr标定(注意:如果使用kalibr标定,则将重建代码的参数--freq_hz设置在4及以下)

python kalibr_calibrate_cameras --target /checkerboard.yaml --bag /img_out/reconstruction.bag --models pinhole-equi --topics /dvs/image_reconstructed

Attention:

运行失败时可以尝试以下两个命令

source devel/setup.bash
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值