我正在使用 matlab 对图像进行二次采样。但我有一项任务是将二次采样图像重置为原始大小。我已经用最近邻近似和平均相邻像素来完成它,这工作正常。有没有其他算法可以做到这一点?
提前致谢。
我正在使用 matlab 对图像进行二次采样。但我有一项任务是将二次采样图像重置为原始大小。我已经用最近邻近似和平均相邻像素来完成它,这工作正常。有没有其他算法可以做到这一点?
提前致谢。
如果你坚持不使用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 所说,您应该在此处参考如何在没有任何内置函数的情况下进行操作。
是的,还有至少两种方法:
你想要的是一个基本的图像调整大小正确吗?mathworks提供了几种可用的算法描述。