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

Matlab 调整图像大小并保留纵横比,matlab,resize,aspect-ratio,Matlab,Resize,Aspect Ratio,在imresize文档中,它提到了以下内容: B=imresize(A[numrows-numcols])返回具有数字的图像B 由[numrows numcols]指定的行和列的数目。要么是numrows,要么是 numcols可以是NaN,在这种情况下,imresize计算行数 或列,以保留图像纵横比 在以下部分: numrows或numcols都可能是NaN,在这种情况下,imresize计算 自动保留图像的行数或列数 纵横比 此处的NaN是在调整图像大小之后出现的,还是指不确定numrow

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

B=imresize(A[numrows-numcols])返回具有数字的图像B 由[numrows numcols]指定的行和列的数目。要么是numrows,要么是 numcols可以是NaN,在这种情况下,imresize计算行数 或列,以保留图像纵横比

在以下部分:

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

此处的
NaN
是在调整图像大小之后出现的,还是指不确定
numrows
numcols

因此,如果我有一个大小为
365x147
的图像,并希望将其大小调整为
512x512
,那么在分配了
numrows
numcols
512
后,宽高比会被保留吗


谢谢。

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

B = imresize(A, [512 512]);
如果希望(例如)高度为512,但希望保留比率,请使用

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

答案是否定的。保留纵横比意味着保留物理尺寸的像素比。例如,对于大小为365x147的图像,纵横比长度(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);
如果图像大小为365 x 147,则将保留相同的纵横比(在舍入误差范围内),并生成大小为1271 x 512的图像。如果你执行

b = imresize(a,512/365);
保留相同的纵横比,但生成大小为512 x 206的图像