9.5 图像校正与预处理

Docker 使用参考: 模块 3.7 Docker

Isaac ROS 图像畸变处理:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_image_pipeline/index.html

概述

Isaac ROS 图像畸变处理使用 Isaac ROS 图像管道,这是一个用于图像处理功能的软件包。摄像头输出通常需要预处理以满足各种传感器功能的输入要求。这包括裁剪、调整大小、镜像、校正镜头畸变和色彩空间转换。对于立体相机,需要额外的处理以生成左右图像之间的视差和点云,从而实现深度感知。

快速开始

为简化开发,我们主要使用 Isaac ROS Dev Docker 镜像并在其上执行影响演示。该演示无需安装任何摄像头设备,通过播放 rosbag 文件来模拟来自摄像头的数据流。

注意:如果您想在自己的设备上安装,或连接摄像头来开发其他功能,请参考 Isaac ROS 官方网站连接指定型号的英伟达摄像头。

调整大小:

打开终端,进入工作空间,并进入 Isaac ROS 开发容器。

bash

cd ${ISAAC_ROS_WS}/src

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令:

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=resize

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart --remap /hawk_0_left_rgb_image:=/image_raw /hawk_0_left_rgb_camera_info:=/camera_info

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run image_view image_view --ros-args --remap image:=resize/image

颜色转换

打开终端并进入工作空间

注意:如果容器已被打开并且已操作其他命令,则在第一个终端中输入 exit 退出所有 docker 容器后再启动该命令。

打开终端,进入工作空间,并进入 Isaac ROS 开发容器。

bash

cd ${ISAAC_ROS_WS}/src

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令:

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=color_conversion interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart_interface_specs.json

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart --remap /hawk_0_left_rgb_image:=/image_raw /hawk_0_left_rgb_camera_info:=/camera_info

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run image_view image_view --ros-args --remap image:=image_mono

裁剪

打开终端,进入工作空间,并进入 Isaac ROS 开发容器。

bash

cd ${ISAAC_ROS_WS}/src

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令:

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=crop interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart_interface_specs.json

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart --remap /hawk_0_left_rgb_image:=/image_raw /hawk_0_left_rgb_camera_info:=/camera_info

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run image_view image_view --ros-args --remap image:=crop/image

校正

打开终端,进入工作空间,并进入 Isaac ROS 开发容器。

bash

cd ${ISAAC_ROS_WS}/src

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令:

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=rectify_mono interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart_interface_specs.json

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart --remap /hawk_0_left_rgb_image:=/image_raw /hawk_0_left_rgb_camera_info:=/camera_info

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run image_view image_view --ros-args --remap image:=image_rect

翻转

打开终端,进入工作空间,并进入 Isaac ROS 开发容器。

bash

cd ${ISAAC_ROS_WS}/src

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令:

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=flip

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_image_proc/quickstart --remap /hawk_0_left_rgb_image:=/image_raw /hawk_0_left_rgb_camera_info:=/camera_info

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run image_view image_view --ros-args --remap image:=image_flipped