Index exceeds matrix dimensions.
Error in test (line 19) newgreen = c(:,:,2);
I got an error like this while running the below code;
a = imread('lena.tif');
%imread(a);
%imgsize = getImgSize('image.jpg')
imshow(a)
img = imfinfo('lena.tif')
%I = rgb2gray(a);
%figure
%imshow(I)
red = a(:,:,1);
imshow(red)
green = a(:,:,2);
imshow(green)
blue = a(:,:,3);
imshow(blue)
c = horzcat(red,green,blue);
imshow(c)
newred = c(:,:,1);
imshow(red)
newgreen = c(:,:,2);
%imshow(green)
%newblue = c(:,:,3);
%imshow(blue)
how could i solve this ?

2 件のコメント

Ahmad Moniri
Ahmad Moniri 2017 年 7 月 17 日
Are you sure the image is RGB and not grayscale? What does size(a) return for you?
Guillaume
Guillaume 2017 年 7 月 17 日
If the error occurs at the indexing of c, then the image is definitively RGB. Otherwise, the error would occur at
red = a(:, :, 1);
Certainly, adding
assert(size(a, 3) == 3, 'Image is not RGB');
after the imread call would make the program more robust.

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

 採用された回答

Guillaume
Guillaume 2017 年 7 月 17 日
編集済み: Guillaume 2017 年 7 月 17 日

0 投票

how could i solve this ?
c = cat(3, red, green, blue);
You were contatenating your arrays horizontally, resulting in a array of size height x 3*width instead of an array height x width x 3.
Note that I don't see the purpose of your code. It creates c exactly the same as a, and newred, newgreen and newblue exactly the same as red, green, blue.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2017 年 7 月 17 日

コメント済み:

2017 年 7 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by