Matlab imcrop返回图像大小为零

时间:2014-09-22 00:23:00

标签: matlab image-processing

我正在尝试使用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);索引越界,因为size(patch)= [0,0]

所以我补充说,

disp(size(patch))

显然补丁的大小是0 0,但我不明白为什么会这样。根据有关堆栈溢出的其他问题的答案,我也尝试了

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

这也导致补丁的大小为零

注意:大小并不总是返回零,在第一种情况下,取决于随机整数x和y是什么,补丁有时会有大小补丁大小,但它没有发生%100的时间,并且在第二个例子,它有时会有大小全面,但我无法理解这种不一致的来源。

更新:问题来自我的代码部分:

[sample_width, sample_height] = size(sample);

应该是:

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

1 个答案:

答案 0 :(得分:1)

原始代码的问题在于:

[sample_width, sample_height] = size(sample);

应该是:

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

RGB图像有3个维度,如上所述声明会给sample_height一个更大的值来说明宽度和深度