2016-11-17 3 views
-2

На запуске этого кода я получаю сообщение об ошибке сказав:Ошибка при выполнении круговой урожай

Индекс превышает размеры матрицы.

Ошибка в посеве (строка 8)

croppedImage (:,:, 2) = I (:,:, 2). * Маска;

I = imread('cameraman.tif'); 
imageSize = size(I); 
ci = [100,100,20];  % center and radius of circle ([c_row, c_col, r]) 
[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = uint8((xx.^2 + yy.^2)<ci(3)^2); 
croppedImage = uint8(zeros(size(I))); 
croppedImage(:,:,1)=I(:,:,1).*mask; 
croppedImage(:,:,2)=I(:,:,2).*mask; 
croppedImage(:,:,3)=I(:,:,3).*mask; 
imshow(croppedImage); 

Пожалуйста, помогите, как я не могу отладить эту ошибку.

+2

Не выглядит как код C? – acraig5075

+2

matlab, возможно? –

+0

потому что ..... это не изображение RGB, а изображение в градациях серого? ..... –

ответ

1

Заменить

croppedImage(:,:,1)=I(:,:,1).*mask; 
croppedImage(:,:,2)=I(:,:,2).*mask; 
croppedImage(:,:,3)=I(:,:,3).*mask; 

по

croppedImage=bsxfun(@times,I,mask); 

Это позволит убедиться, что маска наносится I ли оттенки серого или RGB

+0

Большое вам спасибо за помощь, – Shirley

+0

@Shirley Рассмотрите возможность принятия ответа, если это поможет –