Nodes and Components

This package includes a number of ROS 2 components that can be assembled into image processing pipelines. See the tutorial Launching image_proc Components.

Alternatively, each component can be run as a standalone node.

image_proc::CropDecimateNode

Applies decimation (software binning) and ROI to a raw camera image post-capture. Remap camera and camera_out to the desired input/output camera namespaces. Also available as a standalone node with the name crop_decimate_node.

Subscribed Topics

  • in/image_raw (sensor_msgs/Image): Raw image stream from the camera driver.

  • in/camera_info (sensor_msgs/CameraInfo): Camera metadata.

Published Topics

  • out/image_raw (sensor_msgs/Image): Cropped and decimated “raw” image.

  • out/camera_info (sensor_msgs/CameraInfo): Camera metadata, with binning and ROI fields adjusted to match output raw image.

Parameters

  • decimation_x (int, default: 1): Number of pixels to decimate to one horizontally. Range: 1 to 16

  • decimation_y (int, default: 1): Number of pixels to decimate to one vertically. Range: 1 to 16

  • image_transport (string, default: raw): Image transport to use.

  • interpolation (int, default: 0): Sampling algorithm. Possible values are:

    • NN (0): Nearest-neighbor sampling

    • Linear (1): Bilinear interpolation

    • Cubic (2): Bicubic interpolation over 4x4 neighborhood

    • Area (3): Resampling using pixel area relation

    • Lanczos4 (4): Lanczos interpolation over 8x8 neighborhood

  • queue_size (int, default: 5): Size of message queue for synchronizing image and camera_info topics. You may need to raise this if images take significantly longer to travel over the network than camera info.

  • offset_x (int, default: 0): X offset of the region of interest. Range: 0 to 2447

  • offset_y (int, default: 0): Y offset of the region of interest. Range: 0 to 2049

  • width (int, default: 0): Width of the region of interest. Range: 0 to 2448

  • height (int, default: 0): Height of the region of interest. Range: 0 to 2050

image_proc::CropNonZeroNode

Takes a monochrome image and crops the largest non zero area. Can be used on depth images. Also available as a standalone node with the name crop_non_zero_node.

Subscribed Topics

  • image_raw (sensor_msgs/Image): Monochrome or depth image.

Published Topics

  • image (sensor_msgs/Image): Cropped image.

Parameters

  • image_transport (string, default: raw): Image transport to use.

image_proc::DebayerNode

Takes a raw camera stream and publishes monochrome and color versions of it. If the raw images are Bayer pattern, it debayers using bilinear interpolation. Also available as a standalone node with the name debayer_node.

Subscribed Topics

  • image_raw (sensor_msgs/Image): Raw image stream from the camera driver.

Published Topics

  • image_mono (sensor_msgs/Image): Monochrome image.

  • image_color (sensor_msgs/Image): Color unrectified image.

Parameters

  • debayer (int, default: 3): Debayering algorithm. Possible values are:

    • Bilinear (0): Fast algorithm using bilinear interpolation

    • EdgeAware (1): Edge-aware algorithm

    • EdgeAwareWeighted (2): Weighted edge-aware algorithm

    • VNG (3): Slow but high quality Variable Number of Gradients algorithm

  • image_transport (string, default: raw): Image transport to use.

image_proc::RectifyNode

Takes an unrectified image stream and its associated calibration parameters, and produces rectified images. Also available as a standalone node with the name recify_node.

Subscribed Topics

  • image (sensor_msgs/Image): Unrectified image stream.

  • camera_info (sensor_msgs/CameraInfo): Camera metadata.

Published Topics

  • image_rect (sensor_msgs/Image): Rectified image.

Parameters

  • queue_size (int, default: 5): Size of message queue for synchronizing image and camera_info topics. You may need to raise this if images take significantly longer to travel over the network than camera info.

  • image_transport (string, default: raw): Image transport to use.

  • interpolation (int, default: 1): Interpolation algorithm between source image pixels. Possible values are:

    • NN (0): Nearest neighbor

    • Linear (1): Linear

    • Cubic (2): Cubic

    • Lanczos4 (4): Lanczos4

image_proc::ResizeNode

Takes image and camera info and resize them. Also available as standalone node with the name resize_node.

Subscribed Topics

  • image/image_raw (sensor_msgs/Image): Arbitrary image.

  • image/camera_info (sensor_msgs/CameraInfo): Camera parameters.

Published Topics

  • resized/image_raw (sensor_msgs/Image): Resized image.

  • resized/camera_info (sensor_msgs/CameraInfo): Resized camera info.

Parameters

  • image_transport (string, default: raw): Image transport to use.

  • interpolation (int, default: 0): Sampling algorithm. Possible values are:

    • NN (0): Nearest-neighbor sampling

    • Linear (1): Bilinear interpolation

    • Cubic (2): Bicubic interpolation over 4x4 neighborhood

    • Area (3): Resampling using pixel area relation

    • Lanczos4 (4): Lanczos interpolation over 8x8 neighborhood

  • use_scale (bool, default: True): Use scale parameters, or absolute height/width.

  • scale_height (float, default: 1.0): Height scaling of image.

  • scale_width (float, default: 1.0): Width scaling of image.

  • height (float): Absolute height of resized image, if use_scale is false.

  • width (float): Absolute width of resized image, if use_scale is false.

image_proc::TrackMarkerNode

Takes an image, detects an Aruco marker and publishes a geometry_msgs/PoseStamped of where the marker is located. Also available as standalone node with the name track_marker_node.

Subscribed Topics

  • image (sensor_msgs/Image): Image topic to process.

  • camera_info (sensor_msgs/CameraInfo): Camera metadata.

Published Topics

  • tracked_pose (geometry_msgs/PoseStamped): Pose of the marker.

Parameters

  • dictionary (int, default: 10): Marker dictionary to use. Values correspond to cv.aruco enum. The default of 10 corresponds to the DICT_6X6_250 dictionary.

  • image_transport (string, default: raw): Image transport to use.

  • marker_id (int, default: 0): The ID of the marker to use.

  • marker_size (double, default: 0.05): Size of the marker edge, in meters.