I am trying to find a simple way of converting images received from ROS into matrix form that can then be processed in Simulink. On Matlab side there are the writeImage and readImage functions that can be used to convert ROS Image to matlab image but I am not sure what should be the correct way of doing this on Simulink side. One option would be to get the raw data from Image topic and reorganize it into matrix form, but that processing is always dependent on the image size and format. Is there any simple way of doing this?
Prashant Kumar answered .
2025-11-20

function img = fcn(msg) %#codegen %Get msg details imgData = msg.Data; imgH = msg.Height; imgW = msg.Width; %Create blank image output with required size img = zeros(msg.Width,msg.Height,3); %Reshape image data imgR = reshape(imgData(1:3:end),imgW,imgH)'; imgG = reshape(imgData(2:3:end),imgW,imgH)'; imgB = reshape(imgData(3:3:end),imgW,imgH)'; img(:,:,1) = imgR; img(:,:,2) = imgG; img(:,:,3) = imgB;
Note that this example assumes image is in the RGB color space.