"Index exceeds matrix dimensions" error during performing RGB channel separation
Show older comments
The purpose of my code is -
- scan all image from a folder
- calculate entropy for each of RGB channel
- export data to a xlsx file
my code :
folder = 'F:\images\';
filePattern = fullfile(folder, '*.png');
myFiles = dir(filePattern); % the folder inwhich ur images exists
for k = 1 : length(myFiles)
fullFileName = fullfile(folder, myFiles(k).name);
I= fullFileName;
Red = I(:,:,1);
Green = I(:,:,2);
Blue = I(:,:,3);
%I = I(:); % Vectorization of RGB values
p = imhist(Red); % Histogram
p(p == 0) = [ ];% remove zero entries in p
p = p ./ numel(I); % normalize p so that sum(p) is one.
Er(k) = round(-sum(p.*log2(p)),3);
p = imhist(Blue); % Histogram
p(p == 0) = [ ];% remove zero entries in p
p = p ./ numel(I); % normalize p so that sum(p) is one.
Eb(k) = round(-sum(p.*log2(p)),3);
xlswrite('myfile.xlsx', [Er(k),Eb(k)], 'Sheet 1');
end
But i am getting following error:
Index exceeds matrix dimensions.
Error in test1 (line 9)
Green = I(:,:,2);
I couldn't solve this problem. Can anyone help me please?
Accepted Answer
More Answers (1)
Yongjian Feng
on 24 Jul 2021
0 votes
Most likely your image is just a grey scale one. Only one channel.
1 Comment
rakib mostafiz
on 24 Jul 2021
Categories
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!