【问题标题】:How to resample a irregular grid of pixels to a regular grid?如何将不规则的像素网格重新采样为规则网格?
【发布时间】:2021-11-17 11:15:54
【问题描述】:

我正在尝试实现一种基于曲线插值的卷帘快门失真消除算法,我在一篇论文 (https://ieeexplore.ieee.org/document/6311354) 中看到了该算法。该算法包括为源图像中的每个像素计算新的 x 和 y 坐标。现在我必须将创建的不规则像素网格重新采样为规则网格,但我不知道该怎么做。我只知道目标到源映射是如何工作的。但我不能使用那个,因为我不能简单地反转创建不规则像素网格的过程,因为每个像素都是单独计算的。

【问题讨论】:

  • 我之前没用过这个函数,但是你可以试试 SciPy 库中的interp1d。 SciPy 与 NumPy 密切相关。对于彩色图像,interpn 可能是合适的。
  • 糟糕,这是interp2d。
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python image opencv image-processing


【解决方案1】:

据推测,转换源图像像素会在目标中产生密集(扭曲)网格。这应该允许您在网格单元中使用双线性插值方案。

在目标中绘制规则间隔的水平线并找到与网格的交点。您可以沿交叉的边缘插入像素。现在沿着水平线,您有不规则间隔的点,您可以在它们之间进行插值以获得规则间隔的像素。

为了加快相交过程,您可以使用扫描线方法(对 Y 上的网格边缘进行排序)。

【讨论】:

    【解决方案2】:

    我尝试了不同的解决方案,看来 scipy.interpolate.griddata (https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html) 是运行时方面的最佳解决方案

    【讨论】:

      【解决方案3】:

      Near_rgrid下 find-nearest-value-in-numpy-array 将任何点云捕捉到规则网格上最近的邻居, 在一页代码中。

      scipy RegularGridInterpolator 也做线性,bilinear ...插值。

      Scipy 网格数据使用 KDTree。 虽然这会起作用,但它根本不使用网格的规律性—— 这样做的方法更简单,更快。 (在我的旧 iMac 上为 2500 万个点构建 KDTree 需要大约 30 秒, 然后查询需要微秒或毫秒,scipy 1.7.1。)

      您选择的方法当然取决于 你有多少分散的数据点和多少查询点(常规网格)—— 你的图片有多大?

      【讨论】:

        猜你喜欢
        • 2011-04-21
        • 2013-08-26
        • 2017-01-21
        • 1970-01-01
        • 2014-03-08
        • 2013-03-13
        • 1970-01-01
        • 2021-12-01
        • 1970-01-01
        相关资源
        最近更新 更多