MATLAB Answers

# "Index exceeds matrix dimensions" error during performing RGB channel separation

1 ビュー (過去 30 日間)
rakib mostafiz 2021 年 7 月 24 日
コメント済み: Simon Chan 2021 年 7 月 25 日
The purpose of my code is -
1. scan all image from a folder
2. calculate entropy for each of RGB channel
3. 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?

サインインしてコメントする。

### 採用された回答

Simon Chan 2021 年 7 月 25 日
According to your code shown above, variable I is only a file name in the beginning of the for loop.
Have you do imread or some other command to read the images?
for k = 1 : length(myFiles)
fullFileName = fullfile(folder, myFiles(k).name);
I= imread(fullFileName); % I added imread
Red = I(:,:,1);
Green = I(:,:,2);
Blue = I(:,:,3);
##### 4 件のコメント表示非表示 3 件の古いコメント
Simon Chan 2021 年 7 月 25 日
Doing transpose:
xlswrite('myfile.xlsx', [Er',Eb'], 'Sheet 1');
or
writematrix([Er',Eb'],'myfile.xlsx');

サインインしてコメントする。

### その他の回答 (1 件)

Yongjian Feng 2021 年 7 月 24 日
Most likely your image is just a grey scale one. Only one channel.
##### 1 件のコメント表示非表示 なし
rakib mostafiz 2021 年 7 月 24 日
Those image are colorful. Moreover, if i perform this operation on a single image rather than looping out all image from folder, it works just fine! But when i try to read each image and perform this operation, it showing that error. I really dont understand the problem here

サインインしてコメントする。

R2015b

### Community Treasure Hunt

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

Start Hunting!

Translated by