我有一张图片。我想调整大小以使原始大小加倍,通过插值填充新像素。我需要指定我想要使用的插值类型。
我看到imresize函数,它有'method'选项。问题是,只有3个选项:最近的,双线性的,双三次的。双线性和双三次是平均/均值方法,但有没有办法设置邻域大小/权重?
主要问题是,我需要使用'中值'插值方法,而不是平均值。我如何告诉它使用这种方法?
答案 0 :(得分:4)
IMRESIZE实现插值的方法是通过计算输出图像中的每个像素(逆映射),输入图像中与插值有关的像素的索引以及贡献权重。 / p>
邻域和权重由所使用的插值内核的类型决定,如@Albert指出的那样,可以传递给IMRESIZE函数('Method'属性可以接受{{1具有内核函数和内核宽度的单元数组
这两个组件将用于计算所涉及的输入像素的线性组合,以填充输出像素的每个值。此过程分别沿着每个维度一次一个地(垂直然后水平地)执行。
现在你遇到的问题是你永远无法通过线性组合获得中值,这是因为中位数是一个非线性排序滤波器。所以你唯一的选择就是编写自己的实现......
答案 1 :(得分:1)
Amro是正确的,不能将中值滤波器计算为加权响应。但MATLAB具有中值滤波器的特定功能:medfilt2。
答案 2 :(得分:0)
imresize有第三种方法通过插值方法:“双元素单元阵列指定插值核”。您可以在Matlab's documentation中详细了解相关信息。