0

我正在使用 matlab 对图像进行二次采样。但我有一项任务是将二次采样图像重置为原始大小。我已经用最近邻近似和平均相邻像素来完成它,这工作正常。有没有其他算法可以做到这一点?

提前致谢。

4

3 回答 3

3

如果你坚持不使用imresize内置函数,可以使用interp2重新缩放图像。首先定义一个比例因子f。然后你可以使用interp2它来做如下。

% Toy Data
I = im2double( imread( 'bag.png' ) );

% Set Scaling Factor
f = 1/5;

% Resize Image
D = interp2( I, linspace( 1, size(I,2), size(I,2) * f ), linspace( 1, size(I,1), size(I,1) * f )' );

% Plot Image
figure; imshow( I );
figure; imshow( D );

要了解此代码的作用,首先要了解此行查找linspace.

size(I,2) * f 

创建 后linspace,您可以interp2将 cols 用于第二个参数,将 rows 用于第三个参数。图像必须是双倍的,因此im2double.

如果您不想使用interp2任何一个,正如@rayryeng 所说,您应该在此处参考如何在没有任何内置函数的情况下进行操作。

于 2015-04-21T08:32:29.077 回答
1

是的,还有至少两种方法:

  1. 像素区域重采样
  2. 双三次插值
于 2015-04-21T08:23:15.047 回答
1

你想要的是一个基本的图像调整大小正确吗?mathworks提供了几种可用的算法描述。

于 2015-04-21T07:37:22.757 回答