2016-03-04 5 views
1

Я пытаюсь вычислить CIR (стандартный цвет-инфракрасный) изображения с помощью функции multibandread, но дайте мне ошибку. Я пробую этот учебник по математике: MathworksВычислить CIR с multibandread Matlab

Изображение 500x500x3 uint8. Это мой код:

G = imread ('nir.tif'); 
if size(G,3) == 4 %alpha 
G = G(:,:,1:3); %strip alpha 
end 
CIR = multibandread(G, [500, 500, 4], 'uint8=>uint8',... 
       128, 'bil', 'ieee-le', {'Band','Direct',[4 3 2]}); 
figure 
imshow(CIR); 

Это ошибка: Index exceeds matrix dimensions.

+0

Вы пробовали предложение Огужана? –

+1

Я пробовал, но не работал. Такая же ошибка –

+0

Можете ли вы отправить в качестве примера пример? –

ответ

1

Вы не упомянули в какой строке произошла ошибка, но кажется, что есть проблема о размер параметр multibandread функции ,

Во-первых, у вас ограниченное количество полос изображения до 3, а затем попытался прочитать 4 полосы из изображения.

Ваша проблема может быть решена с помощью следующих изменений:

CIR = multibandread(G, [500, 500, 3], 'uint8=>uint8',... 
       128, 'bil', 'ieee-le', {'Band','Direct',[3 2 1]}); 

Кроме того, первый параметр multibandread, файла, должно быть в строке, а не матрица.

Смежные вопросы