上采样和下采样图像的最佳方法

时间:2014-03-26 02:08:52

标签: matlab image-processing

我的图片尺寸为300x300。为了更快的计算时间,我使用

进行下采样
 I=imresize(originalImage,0.5);

之后,我想恢复它

 outputImage=imresize(I,2);

但是我看到输出图像与原始图像不相似。哪个是matlab上下采样的最佳方法?它将返回原始图像和输出图像之间的最小误差(在向下和向上采样之后) 非常感谢你

2 个答案:

答案 0 :(得分:10)

您不应该期望准确地恢复较大的图像。如果这是可能的,我们可以通过存储下采样图像并对其进行放大来无损压缩图像。但是,当图像是缩减采样时,某些信息会丢失,而这些信息根本无法恢复。如果由于运行原因需要对图像进行缩减采样,请确保在需要时保留原始图像的副本。 matlab imresize函数提供了许多执行插值的方法。可以测试特定内核的下采样/上采样操作产生的错误:

I = int8(imread('rice.png'));

J = imresize(imresize(I,0.5,'box'),2,'box');
mean(abs(J(:) - I(:)))

使用不同的内核类型运行此代码会产生:

box
4.132904052734375
triangle
4.843124389648438
cubic
4.094940185546875
lanczos2
4.088195800781250
lanczos3
3.948623657226562

Lanczos3似乎对此图像的误差最小,这并不太令人惊讶。它也可能是最慢的。

答案 1 :(得分:3)

如果您专注于下采样一半的特殊情况(并且上采样2),请使用impyramid

I1 = impyramid(I0, 'reduce');
Ix = impyramid(I1, 'expand');