0
I = imread('data1.jpg')
[p3, p4] = size(I);
q1 = 50; % size of the crop box
i3_start = floor((p3-q1)/2); % or round instead of floor; using neither gives warning
i3_stop = i3_start + q1;

i4_start = floor((p4-q1)/2);
i4_stop = i4_start + q1;

I = I(i3_start:i3_stop, i4_start:i4_stop, :);
figure ,imshow(I);

我已运行此代码并收到此错误“索引超出矩阵尺寸。

==> 在 10 I = I(i3_start:i3_stop, i4_start:i4_stop, :); 时出现错误

有人可以帮我解决这个错误吗?我想在中心裁剪图像

4

1 回答 1

1

该错误可能是由于您调用 functin 的方式size

如果加载图像的矩阵I是三维 (N x M x K),则必须这样调用size

[p3, p4, p5] = size(I)

也就是说,通过添加一个附加参数(在这种情况下为“p5”)。

如果您调用size为:

[p3, p4] = size(I)

p4 将设置为矩阵的第二维和第三维的乘积I

更新代码

I = imread('pdb_img_1.jpg');
% Modified call to "size"
% [p3, p4] = size(I)
[p3, p4, p5] = size(I)
% Increased the size of the "crop box"
q1 = 150; % size of the crop box
i3_start = floor((p3-q1)/2) % or round instead of floor; using neither gives warning
i3_stop = i3_start + q1

i4_start = floor((p4-q1)/2)
i4_stop = i4_start + q1

I = I(i3_start:i3_stop, i4_start:i4_stop, :);
figure
imshow(I)

原始图像

在此处输入图像描述

裁剪图像 在此处输入图像描述 希望这会有所帮助。

于 2015-10-10T09:39:08.847 回答