【问题标题】:fill holes of raster by assigned flagmask通过指定的标志掩码填充光栅孔
【发布时间】:2021-02-10 23:05:43
【问题描述】:

我有一个光栅图像,其中一些值为 nan,这些值应该由有效值填充。这些有效值应满足两个条件:到目标像素一定距离内,并在输入 FlagMask 中标记为真。 rasterio.fill.fillnodata https://rasterio.readthedocs.io/en/latest/api/rasterio.fill.html 可以实现用距离条件而不是FlagMask条件填充nodata。 matlab https://uk.mathworks.com/matlabcentral/fileexchange/27994-inpaint-over-missing-data-in-1-d-2-d-3-d-nd-arrays 中的修复与 rasterio.fill.fillnodata 类似。将欣赏现有功能或一些关于基于某些模块进行修改的想法。由于我的栅格输入将超过 5000*5000,因此需要一种有效的算法。

【问题讨论】:

    标签: python matlab interpolation mask rasterio


    【解决方案1】:

    我只需运行inpaintn(),然后将那些未标记回NaN 的元素重置。如果您有示例数据集,请告诉我,我很难想到您的算法和我的提议之间的实际差异是有意义的场景。

    【讨论】:

    • 感谢您的回答!但我认为 inpaint() 是一个自动渐进过程,这意味着 NaN 将逐渐填充,直到全部完成。我找不到插入未标记为 NaN 的集合的位置。我正在使用它来修复 DEM 中的孔,标记层是 Road-1 和 None-road-0,我只希望道路中的有效值用于填充 NaN。
    • 我一定是误会了。我根本不建议您更改inpaint()。假设您有一个 DEM 光栅图像,其中散布着 NaN,并且您知道哪些元素是道路,哪些不是。运行两次:inpaint(image_masked_by_isroad)inpaint(image_masked_by_isnotroad)。然后使用相同的蒙版重新组合成单​​个图像。我假设蒙版可以完全覆盖图像,没有重叠。
    • 您能再解释一下吗? inpaint(image_masked_by_isroad) 不会填充道路外的值,然后这些值将参与逐步填充道路吗?我对 inpaint 的理解是它是一个渐进的过程。
    • 当我阅读代码时,我理解它是迭代的,而不是渐进的。基于最近邻插值进行初始猜测,然后迭代地应用余弦变换以平滑结果。
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 2020-11-12
    • 2023-03-17
    • 2020-10-12
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多