我不清楚imresize是如何工作的,特别是当我们缩小图像时(例如从4x4到2x2)。当我们升级它时,它更容易理解。我的意思是我们只是通过查看哪个已知点更接近(method ='nearest')或使用4个最接近的已知点(method ='bilinear')的线性平均来找到中间点,依此类推。我们不需要任何过滤器吗?
我的主要疑问是我们缩减规模。我从信号处理类中了解到,为了避免混叠,必须在我们抽取中间值之前应用平滑的低通滤波器。但是哪个过滤器是MATLAB使用的?他们只是说方法,我不明白我们如何使用'bilinear'或'bicubic'作为内核。
感谢您的阅读。
答案 0 :(得分:2)
该功能的文档似乎不完整。打开imresize.m(edit imresize
)并查看contributions
- 函数。
在那里你可以看到,当使用bilinear
或bicubic
- 方法和缩减时,matlab没有使用2x2 neibourhood。增加内核大小以避免别名。
关于数学背后的一些解释是无形的。为简化起见,我将仅解释1D案例。当使用标度<1时,窗口尺寸增加。这意味着,结果值不再是2(图像的2x2)邻居的加权平均值。而是使用更大的窗口大小w(wxw)。
从标准方法开始:
图像显示了常见的情况,两个已知的网格值平均为一个新的重量为1/5和4/5的网格值。除了众所周知的定义之外,还可以定义权重,绘制具有基数w = 2的三角形:
现在增加三角形的底部,我们得到更大窗口大小的权重。绘制了w = 6的基数:
新三角形定义了超过6个点的重量。