use*_*190 5 matlab image-processing
我的图像尺寸为300x300.为了更快的计算时间,我使用下采样
I=imresize(originalImage,0.5);
Run Code Online (Sandbox Code Playgroud)
在那之后,我想要恢复它
outputImage=imresize(I,2);
Run Code Online (Sandbox Code Playgroud)
但我看到输出图像与原始图像不相似.哪个是matlab上下采样的最佳方法?它将返回原始图像和输出图像之间的最小误差(在向下和向上采样之后非常感谢你
yhe*_*non 10
您不应期望准确地恢复较大的图像.如果这是可能的,我们可以通过存储下采样图像并对其进行放大来无损压缩图像.但是,当图像是缩减采样时,某些信息会丢失,而这些信息根本无法恢复.如果由于运行原因需要对图像进行缩减采样,请确保在需要时保留原始图像的副本.matlab imresize函数提供了许多执行插值的方法.可以测试特定内核的下采样/上采样操作产生的错误:
I = int8(imread('rice.png'));
J = imresize(imresize(I,0.5,'box'),2,'box');
mean(abs(J(:) - I(:)))
Run Code Online (Sandbox Code Playgroud)
使用不同的内核类型运行此代码会产生:
box
4.132904052734375
triangle
4.843124389648438
cubic
4.094940185546875
lanczos2
4.088195800781250
lanczos3
3.948623657226562
Run Code Online (Sandbox Code Playgroud)
Lanczos3似乎对此图像的误差最小,这并不太令人惊讶.它也可能是最慢的.