【问题标题】:Resizing in MATLAB w/ different filters在 MATLAB 中使用不同的过滤器调整大小
【发布时间】:2013-01-21 12:14:27
【问题描述】:

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

我看到了 imresize 函数,它有一个“方法”选项。问题是,只有 3 个选项:最近、双线性、双三次。双线性和双三次是平均/均值方法,但是有什么方法可以设置邻域大小/权重?

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

【问题讨论】:

    标签: image matlab filter interpolation


    【解决方案1】:

    IMRESIZE 实现插值的方式是通过计算输出图像中的每个像素(逆映射)、输入图像中将参与插值的像素的索引以及贡献权重。

    邻域和权重由使用的插值内核的类型确定,正如@Albert 指出的那样,可以将其传递给 IMRESIZE 函数('Method' 属性可以接受 {f,w} 一个具有核函数和核宽度)

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        imresize 有第三种传递插值方法:“Two-element Cell Array Specifying Interpolation Kernel”。您可以在Matlab's documentation 中阅读更多相关信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-22
          • 1970-01-01
          • 2018-11-10
          • 2016-08-12
          • 2012-09-09
          • 1970-01-01
          相关资源
          最近更新 更多