Display multiple images on single axes
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rao
el 24 de Jun. de 2012
Comentada: Walter Roberson
el 26 de Ag. de 2019
my gui contains a push button to load an rgb image and an axes to display it and another axes to display r g and b planes separately. how can i display these planes at the same time on a single axes ??
0 comentarios
Respuesta aceptada
Image Analyst
el 24 de Jun. de 2012
Try this demo:
% Read in a standard MATLAB color demo image.
folder = fullfile(matlabroot, '\toolbox\images\imdemos');
baseFileName = 'peppers.png';
fullFileName = fullfile(folder, baseFileName);
% Get the full filename, with path prepended.
fullFileName = fullfile(folder, baseFileName);
if ~exist(fullFileName, 'file')
% Didn't find it there. Check the search path for it.
fullFileName = baseFileName; % No path this time.
if ~exist(fullFileName, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
rgbImage = imread(fullFileName);
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
[rows columns numberOfColorChannels] = size(rgbImage);
% Make black strips to space them apart
widthOfStrip = 20;
verticalStrip = zeros(rows, widthOfStrip, 'uint8');
horizontalStrip = zeros(widthOfStrip, 2*columns + widthOfStrip, 'uint8');
% Make into color so we can stitch.
horizontalStrip = cat(3, horizontalStrip, horizontalStrip, horizontalStrip);
verticalStrip = cat(3, verticalStrip, verticalStrip, verticalStrip);
% Stitch together
outputImage = [rgbImage, verticalStrip, redChannel; horizontalStrip; greenChannel, verticalStrip, blueChannel];
imshow(outputImage);
4 comentarios
Subhadeep Koley
el 23 de Ag. de 2019
The code is giving the following error.
Error using horzcat
Dimensions of arrays being concatenated are not consistent.
Error in image_demo (line 31)
outputImage = [rgbImage, verticalStrip, redChannel; horizontalStrip; greenChannel,
verticalStrip, blueChannel];
Walter Roberson
el 26 de Ag. de 2019
z = 0 * rgbImage; %same size and type but all 0
redChannel = z;
redChannel(:,:,1) = rgbImage(:, :, 1);
greenChannel = z;
greenChannel(:,:,2) = rgbImage(:, :, 2);
blueChannel = z;
blueChannel(:,:,3) = rgbImage(:, :, 3);
Más respuestas (1)
Walter Roberson
el 24 de Jun. de 2012
If you use image() [or imagesc()] to display an image, you can specify the data coordinates to associate with the center of the lower-left pixel and the center of the upper-right pixel.
2 comentarios
Walter Roberson
el 24 de Jun. de 2012
Sorry, imshow() does not document the positioning meaning of its XData and YData parameters, so even if I had access to MATLAB to test now, it might change in any release.
I recommend that you instead use a routine whose positioning meanings are documented, image(). See the XData and YData property descriptions at http://www.mathworks.com/help/techdoc/ref/image_props.html
Ver también
Categorías
Más información sobre Computer Vision with Simulink en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!