【问题标题】:Resizing an image and preserving the aspect ratio调整图像大小并保留纵横比
【发布时间】:2013-09-09 05:59:10
【问题描述】:
在imresize 文档here 中,它提到了以下内容:
B = imresize(A, [numrows numcols]) 返回具有数字的图像 B
由 [numrows numcols] 指定的行数和列数。 numrows 或
numcols 可能是 NaN,在这种情况下 imresize 计算行数
或列自动保留图像纵横比。
在以下部分:
numrows 或 numcols 可能是 NaN,在这种情况下 imresize 计算
自动保留图像的行数或列数
纵横比
这里的NaN是调整图片大小后出现的,还是指未确定numrows或numcols?
那么,如果我有一个大小为365x147 的图像并想将其调整为512x512,那么在分配numrows 和numcols 的值512 后,是否会保留纵横比?
谢谢。
【问题讨论】:
标签:
matlab
resize
aspect-ratio
【解决方案1】:
如果您有一个大小为365x147 的图像A 并想将其调整为512x512,请使用
B = imresize(A, [512 512]);
如果你想要,例如高度为 512,但要保留比例,请使用
B = imresize(A, [512 NaN]);
【解决方案2】:
答案是否定的。保留纵横比意味着保留以像素为单位的物理尺寸比。例如,对于大小为 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 的图像。