Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Error while using rgb2gray

Asked by Febin Benjamin on 14 Jul 2013

I m trying to accept series of color images and apply edge function on them. this is my code....

if true
for k = 1:10
   tifFilename = strcat( num2str(k), '.tif');
   [X,map] = imread(tifFilename);
   gmap = rgb2gray(map);
   BW = edge(gmap,'sobel');
   figure, imshow(BW);
end
end

it shows the following error

??? Error using ==> rgb2gray>parse_inputs at 82 MAP must be a m x 3 array.

Error in ==> rgb2gray at 35 X = parse_inputs(varargin{:});

Error in ==> sequenceimageprocessing at 6 gmap = rgb2gray(map);

0 Comments

Febin Benjamin

Products

2 Answers

Answer by Image Analyst on 14 Jul 2013
Accepted answer

Color images don't have a colormap. Try this

fontSize = 20;
for k = 1:10
   tifFilename = sprintf('%d.tif', k);
   if ~exist(tifFilename, 'file')
      fprintf('%s not found.\n', tifFilename);
      continue;
   end
   rgbImage = imread(tifFilename);
   grayImage = rgb2gray(rgbImage );
   BW = edge(grayImage ,'sobel');
   subplot(2,2,1);
   imshow(rgbImage);
   title('Color Image', 'FontSize', fontSize);
   subplot(2,2,2);
   imshow(grayImage );
   title('Grayscale Image', 'FontSize', fontSize);
   subplot(2,2,3);
   imshow(BW);
   title('Binary Edge Image', 'FontSize', fontSize);
end

0 Comments

Image Analyst
Answer by Azzi Abdelmalek on 14 Jul 2013

Maybe your image is not RGB, check

size(X)

7 Comments

Febin Benjamin on 14 Jul 2013

And what if it shows

ans =
        3058        3382           3

m sorry if m irritating u..... m a rookie actually.... :)

Azzi Abdelmalek on 14 Jul 2013

Have you the same error message with this case?

Azzi Abdelmalek on 14 Jul 2013
[X,map] = imread(tifFilename)

Check if map is nx3 array

then write

gmap = rgb2gray(map);
Azzi Abdelmalek

Contact us