Incorrect rectification in IsaacROS RectifyNode

Hi there,

I am trying to use the Isaac ROS RectifyNode to rectify an image for a stereocamera. However, I am getting different results with IsaacROS’ RectifyNode and the standard ROS image_proc variant.

The image below shows these outputs.

  • Left image: raw, unrectified, image, /left/image_raw
  • Middle: Image rectified by image_proc, /left/image_rect_image_proc
  • Right image: Image rectified by Isaac ROS, /left/image_rect

I believe image_proc is correctly rectifying the image, while Isaac ROS is not. (I have verified that both RectifyNodes are correctly subscribing to the camera’s CameraInfo message.

It appears that Isaac ROS is further warping the image (notice the bulging), and produces a black border around the image.

How can I correctly rectify the image, and remove the black border using Isaac ROS’ RectifyNode?

My sensor_msgs/CameraInfo message, containing the calibration info, is:

---
header:
  stamp:
    sec: 1700578155
    nanosec: 579015684
  frame_id: stereocamera_left_optical_frame
height: 720
width: 1280
distortion_model: plumb_bob
d:
- -0.012295648358154328
- 0.010399113322163095
- 0.006194506328532728
- -0.004939738649990704
- -0.0024600136115519628
k:
- 484.55221837202197
- 0.0
- 630.2205785296142
- 0.0
- 485.32839254851007
- 373.6131985282817
- 0.0
- 0.0
- 1.0
r:
- 0.9999344776311878
- -0.0033761370854320785
- -0.01093810508379143
- 0.0034306390185059672
- 0.9999817755102369
- 0.004967832859377208
- 0.01092113365765652
- -0.005005032045289386
- 0.9999278366431534
p:
- 498.2055467088219
- 0.0
- 629.9748916625977
- 0.0
- 0.0
- 498.2055467088219
- 377.3054504394531
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
binning_x: 0
binning_y: 0
roi:
  x_offset: 0
  y_offset: 0
  height: 0
  width: 0
  do_rectify: false
---

My launch file is:

from launch import LaunchDescription
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode

def generate_launch_description():
 
    left_rectify_node = ComposableNode(
        name='left_rectify_node',
        package='isaac_ros_image_proc',
        plugin='nvidia::isaac_ros::image_proc::RectifyNode',
        parameters=[{
            'output_width': 1280,
            'output_height': 720,
        }],
        remappings=[
            ('image_raw', '/left/image_raw'),
            ('camera_info', '/left/camera_info'),
            ('image_rect', '/left/image_rect'),
            ('camera_info_rect', '/left/camera_info_rect')
        ]
    )

    left_rectify_image_proc_node = ComposableNode(
        name='left_rectify_image_proc_node',
        package='image_proc',
        plugin='image_proc::RectifyNode',
        remappings=[
            ('image', '/left/image_raw'),
            ('camera_info', '/left/camera_info'),
            ('image_rect', '/left/image_rect_image_proc'),
        ]
    )
    
    nitros_container = ComposableNodeContainer(
        name='nitros_container',
        package='rclcpp_components',
        namespace='',
        executable='component_container_mt',
        composable_node_descriptions=[
            left_rectify_node,
            left_rectify_image_proc_node,
        ],
        output='screen'
    )

    return LaunchDescription([nitros_container])
1 Like

Hi @HiddenNetwork ,

Can you share your image with us? We would like to reproduce it internally to check why you are expecting this output.

Best,
Raffaello

Hi @Raffaello ,

Here is the specific image shown:

Best,

Hi @HiddenNetwork

Apologize for this late reply, and thank you.
We confirm there is a debug and there is a fix in progress; we will keep you posted when it will be released.

Best,
Raffaello

1 Like