Blue Channel Not Separating from Image
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I wrote this code to display only the blue channel of an image and both red and green channels work but the blue channel is unable to produce a result.
image_variable3 = imread('CH0.tif');
blue_channel = image_variable3;
blue_channel(:,:,1)=0;
blue_channel(:,:,2)=0;
imshow(blue_channel);
I would get this error message and I don't know what any of it means.
Error using images.internal.imageDisplayValidateParams>validateCData
Multi-plane image inputs must be RGB images of size MxNx3.
Error in images.internal.imageDisplayValidateParams (line 30)
common_args.CData = validateCData(common_args.CData,image_type);
Error in images.internal.imageDisplayParseInputs (line 79)
common_args = images.internal.imageDisplayValidateParams(common_args);
Error in imshow (line 253)
images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});
Error in Merge (line 46)
imshow(blue_channel);
I would greatly appreciate any help. Thank!
6 Commenti
Risposte (2)
DGM
il 9 Set 2023
Modificato: DGM
il 9 Set 2023
If the image contains color content, but is returned as a MxN array when using imread() as shown, then chances are the image is indexed color.
% if it's an indexed color image
% you'll need to read the map with it
[inpict map] = imread('canoe.tif');
% if you want to treat it as RGB, you'll have to convert it
inpict = ind2rgb(inpict,map);
% you can then do whatever manipulations you want in RGB
Bonly = inpict;
Bonly(:,:,1:2) = 0;
imshow(Bonly,'border','tight')
If it's something else, then you can attach an example image. Since it's a TIF, you'll have to zip it in order to upload it.
1 Commento
Stephen23
il 9 Set 2023
You can find a description of indexed images here:
Image Analyst
il 9 Set 2023
Your image is a gray scale image; it is NOT a RGB true color image. There is no blue channel.
You can make your code more robust by doing this:
storedImage = imread('CH0.tif');
size(storedImage) % Echo dimensions to command window.
if ndims(storedImage) == 3
% It's an RGB image. Get the blue channel and store in grayImage.
grayImage = storedImage(:, :, 3);
fprintf('Extracting blue channel of RGB image into variable "grayImage".\n');
elseif ndims(storedImage) == 2
% It's a gray scale image.
fprintf('Stored image is already monochrome (gray scale).\n');
grayImage = storedImage(:, :, 3);
elseif ndims(storedImage) >= 4
% It's a multipage gray scale image.
fprintf('This is a multi-page TIFF image. Decide what to do.\n');
end
imshow(grayImage, []);
0 Commenti
Vedere anche
Categorie
Scopri di più su Import, Export, and Conversion in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!