Main Content

Convert ROS image data into MATLAB image

converts the raw image data in the message object, `img`

= readImage(`msg`

)`msg`

, into an
image matrix, `img`

. You can call `readImage`

using either `'sensor_msgs/Image'`

or
`'sensor_msgs/CompressedImage'`

messages.

ROS image message data is stored in a format that is not compatible with further
image processing in MATLAB^{®}. Based on the specified encoding, this function converts the data into
an appropriate MATLAB image and returns it in `img`

.

**Note**

readImage will be removed. Use `rosReadImage`

instead. For more
information, see ROS Message Structure Functions

ROS image messages can have different encodings. The encodings supported for images are
different for `'sensor_msgs/Image'`

and
`'sensor_msgs/CompressedImage'`

message types. Fewer compressed images
are supported. The following encodings for raw images of size *M-by-N* are
supported using the `'sensor_msgs/Image'`

message type (** 'sensor_msgs/CompressedImage' support is in
bold**):

:`rgb8, rgba8, bgr8, bgra8`

`img`

is an`rgb`

image of size*M-by-N-by-3*. The alpha channel is returned in`alpha`

. Each value in the outputs is represented as a`uint8`

.`rgb16, rgba16, bgr16, and bgra16`

:`img`

is an RGB image of size*M-by-N-by-3*. The alpha channel is returned in`alpha`

. Each value in the output is represented as a`uint16`

.images are returned as grayscale images of size`mono8`

*M-by-N-by-1*. Each pixel value is represented as a`uint8`

.`mono16`

images are returned as grayscale images of size*M-by-N-by-1*. Each pixel value is represented as a`uint16`

.`32fcX`

images are returned as floating-point images of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`single`

.`64fcX`

images are returned as floating-point images of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`double`

.`8ucX`

images are returned as matrices of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`uint8`

.`8scX`

images are returned as matrices of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`int8`

.`16ucX`

images are returned as matrices of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`int16`

.`16scX`

images are returned as matrices of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`int16`

.`32scX`

images are returned as matrices of size*M-by-N-by-D*, where*D*is 1, 2, 3, or 4. Each pixel value is represented as a`int32`

.`bayer_X`

images are returned as either Bayer matrices of size*M-by-N-by-1*, or as a converted image of size*M-by-N-by-3*(Image Processing Toolbox™ is required).

The following encoding for raw images of size *M-by-N* is supported
using the ** 'sensor_msgs/CompressedImage'**
message type:

`rgb8, rgba8, bgr8, and bgra8`

:`img`

is an`rgb`

image of size*M-by-N-by-3*. The alpha channel is returned in`alpha`

. Each output value is represented as a`uint8`

.