子采样后将图像调整为原始大小

Resize an image to original size after sub sampling

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

提前致谢。

您想要的是基本的图像调整大小正确吗? description from mathworks.

有多种算法可用

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

  1. 像素区域重采样
  2. 双三次插值

如果您坚持不使用 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 用于第二个参数的列和第三个参数的行。图像必须是双重图像,因此 im2double.

如果您也不想使用interp2,如@rayryeng 所说,您应该参考如何使用without any builtin functions here