使用/不同的过滤器在MATLAB中调整大小

时间:2011-10-13 17:36:40

标签: image matlab filter interpolation

我有一张图片。我想调整大小以使原始大小加倍,通过插值填充新像素。我需要指定我想要使用的插值类型。

我看到imresize函数,它有'method'选项。问题是,只有3个选项:最近的,双线性的,双三次的。双线性和双三次是平均/均值方法,但有没有办法设置邻域大小/权重?

主要问题是,我需要使用'中值'插值方法,而不是平均值。我如何告诉它使用这种方法?

3 个答案:

答案 0 :(得分:4)

IMRESIZE实现插值的方法是通过计算输出图像中的每个像素(逆映射),输入图像中与插值有关的像素的索引以及贡献权重。 / p>

邻域和权重由所使用的插值内核的类型决定,如@Albert指出的那样,可以传递给IMRESIZE函数('Method'属性可以接受{{1具有内核函数和内核宽度的单元数组

这两个组件将用于计算所涉及的输入像素的线性组合,以填充输出像素的每个值。此过程分别沿着每个维度一次一个地(垂直然后水平地)执行。

现在你遇到的问题是你永远无法通过线性组合获得中值,这是因为中位数是一个非线性排序滤波器。所以你唯一的选择就是编写自己的实现......

答案 1 :(得分:1)

Amro是正确的,不能将中值滤波器计算为加权响应。但MATLAB具有中值滤波器的特定功能:medfilt2

答案 2 :(得分:0)

imresize有第三种方法通过插值方法:“双元素单元阵列指定插值核”。您可以在Matlab's documentation中详细了解相关信息。