Display multiple images on single axes
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rao
am 24 Jun. 2012
Kommentiert: Walter Roberson
am 26 Aug. 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 Kommentare
Akzeptierte Antwort
Image Analyst
am 24 Jun. 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 Kommentare
Subhadeep Koley
am 23 Aug. 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
am 26 Aug. 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);
Weitere Antworten (1)
Walter Roberson
am 24 Jun. 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 Kommentare
Walter Roberson
am 24 Jun. 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
Siehe auch
Kategorien
Mehr zu Computer Vision with Simulink finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!