2

此处imresize的文档中,它提到了以下内容:

B = imresize(A, [numrows numcols]) 返回具有 [numrows numcols] 指定的行数和列数的图像 B。numrows 或 numcols 可能是 NaN,在这种情况下 imresize 会自动计算行数或列数以保持图像纵横比。

在以下部分:

numrows 或 numcols 可能是 NaN,在这种情况下 imresize 会自动计算行数或列数以保持图像纵横比

这里是在调整图像大小之后出现,NaN还是指不确定numrows或?numcols

那么,如果我有一个大小的图像365x147并想将其调整为512x512,是否会保留分配的纵横比numrowsnumcols512

谢谢。

4

2 回答 2

3

答案是不。保留纵横比意味着保留以像素为单位的物理尺寸比。例如,对于大小为 365x147 的图像,纵横比 length(y):length(x) 为 365:147。为了保持该纵横比,调整大小的图像必须满足长度(y):长度(x)=长度(y)/长度(x):1。

例如,如果您有一个大小为 365x147 的图像并且想要将其调整为 512x512,您可以将纵横比从 365:147 更改为 512:512,或者换句话说,从 2.48:1 更改为 1:1。

另一方面,如果你执行

b = imresize(a,512/147);

其中 a 的大小为 365 x 147,您将保留相同的纵横比(在舍入误差内)并生成大小为 1271 x 512 的图像。如果执行

b = imresize(a,512/365);

您保留相同的纵横比,但生成大小为 512 x 206 的图像。

于 2013-09-05T12:25:49.227 回答
2

如果您有一个A大小的图像365x147并想将其调整为512x512,请使用

B = imresize(A, [512 512]);

如果您希望高度为 512,但您想保留比率,请使用

B = imresize(A, [512 NaN]);
于 2013-09-05T12:15:53.687 回答