调整图像大小并保留纵横比

时间:2013-09-05 11:56:38

标签: matlab resize aspect-ratio

imresize文档here中,它提到了以下内容:

  

B = imresize(A,[numrows numcols])返回具有该数字的图像B.   由[numrows numcols]指定的行和列。无论是数字还是   numcols可以是NaN,在这种情况下,imresize计算行数   或列自动保留图像宽高比。

在以下部分中:

  

任何数字或数字都可以是NaN,在这种情况下会进行计算   自动保留图像的行数或列数   宽高比

调整图片大小后,NaN是否会出现,或者是否指的是不确定numrowsnumcols

因此,如果我的图片大小为365x147,并希望将其大小调整为512x512,那么在保留宽高比并指定numrowsnumcols的情况下,是否会保留宽高比512

感谢。

2 个答案:

答案 0 :(得分:3)

答案是否定的。保持纵横比意味着保持物理尺寸的比率(以像素为单位)。例如,对于尺寸为365×147的图像,纵横比长度(y):长度(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的图像。

答案 1 :(得分:2)

如果您的图片A的尺寸为365x147,并希望将其尺寸调整为512x512,请使用

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

如果你想要,例如高度为512,但您想保留比例,请使用

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