2014-09-22 3 views
1

Я пытаюсь взять образец изображения с помощью imcrop, но у меня возникают проблемы.Matlab imcrop возвращает размер изображения

patchsize = 35 
[sample_width, sample_height] = size(sample); 
max_width = sample_width-patchsize; 
max_height = sample_height-patchsize; 
x = randi([0, max_width]); 
y = randi([0, max_height]); 
patch = imcrop(sample,[x y patchsize-1 patchsize-1]); 

Следующая часть моего кода является попыткой доступа к пикселам в патче, но я получаю сообщение об ошибке: При попытке доступа патча (1,1); индекс вне границ, потому что размер (патч) = [0,0]

поэтому я добавил,

disp(size(patch)) 

по-видимому, размер патча 0 0, но я не понимаю, почему это так. На основании ответов на другие вопросы о imcrop на переполнение стека, я также попытался

patch = imcrop(sample, [x y x+patchsize-1 y+patchsize-1]) 

Это также привело к пластыря, имеющего размер нулевой

примечание: размер не всегда возвращает ноль, в первом случае, в зависимости от на том, что были случайные ints x и y, патч иногда имел размер патчей, но этого не произошло,% 100 времени, а во втором примере оно иногда имело размеры, которые были по всему борту, но я не могу понять откуда эта несогласованность.

Update: проблема исходит от той части моего кода:

[sample_width, sample_height] = size(sample); 

должен был:

sample_width, sample_height, depth] = size(sample); 
+0

Это не может быть причиной ошибки, но так как размера (...) дает число строки как первый вывод, не следует ли вам переключаться sample_width и sample_height во вторую строку вашего кода? –

+0

Спасибо, вы определенно правы, к сожалению, в этом случае это квадратное изображение, поэтому не источник ошибки – user3325965

+0

oh shoot. Каков размер образца только из любопытства? –

ответ

1

Проблема с исходным кодом в:

[sample_width, sample_height] = size(sample); 

Должно быть:

[sample_height, sample_width, sample_depth] = size(sample); 

RGB изображение имеет 3 размеры и объявление, как указано выше будет давать sample_height большего значения учета по ширине и глубине