MATLAB Answers

why this gives me "Index exceeds matrix dimensions?" can any one help me. Thanks in advance

1 view (last 30 days)
Surya Gnyawali
Surya Gnyawali on 5 Oct 2016
Answered: Guillaume on 5 Oct 2016
figure
img = imshow(stretched_CIR);
title('CIR after Decorrelation Stretch');
h = imfreehand;
m = createMask(h, img);
delete(h)
% Extract individual color channels
r = img(:,:,1);
g = img(:,:,2);
b = img(:,:,3);
%Now I evaluate for RGB color channels;
>> r = img(:,:,1);
%works but
>> g = img(:,:,2);
Index exceeds matrix dimensions.
%why?

Answers (3)

Matthew Eicholtz
Matthew Eicholtz on 5 Oct 2016
Are you sure the image is RGB instead of grayscale? As the error suggests, the variable img must not have a 2 layer in the 3rd dimension.


Guillaume
Guillaume on 5 Oct 2016
The problem is with
img = imshow('...')
As per the documentation of imshow, its return value is a handle to a graphics object, not an image. You need to load the image properly with imread:
img = imread(stretched_CIR);
%and if you want to see the image
imshow(img);

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!