子采样后将图像调整为原始大小
Resize an image to original size after sub sampling
我正在使用 matlab 对图像进行子采样。但我有一项任务是将二次采样图像重置为原始大小。我已经用最近邻近似和平均相邻像素完成了它,它正在工作 fine.Is 还有其他算法可以做到这一点吗?
提前致谢。
您想要的是基本的图像调整大小正确吗?
description from mathworks.
有多种算法可用
是的,至少还有两个方法:
- 像素区域重采样
- 双三次插值
如果您坚持不使用 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。
我正在使用 matlab 对图像进行子采样。但我有一项任务是将二次采样图像重置为原始大小。我已经用最近邻近似和平均相邻像素完成了它,它正在工作 fine.Is 还有其他算法可以做到这一点吗?
提前致谢。
您想要的是基本的图像调整大小正确吗? description from mathworks.
有多种算法可用是的,至少还有两个方法:
- 像素区域重采样
- 双三次插值
如果您坚持不使用 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。