问题标签 [bilinear-interpolation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

python - 在分散的数据中查找最近的点

我正在努力提高我使用 gridfit 插值的大型数据集的插值速度。我已经在stackoverflow上发布了一个问题,但没有得到回复

所以,我正在考虑尝试一些替代的东西。我的想法是,如果我有一个庞大的数据集,如下面的 Python 代码片段所示

我必须插值并获取定义点的值,例如(x,y)。从分散数据 xi、yi 和 zi 中找到 4 个相邻点的最快方法是什么,以便可以使用 interp2d 执行双线性插值(见下图)。我不知道这是否会比使用 gridata 给我更快的结果,但我会很高兴尝试一下

在此处输入图像描述

0 投票
1 回答
669 浏览

pytorch - 如何优化用于 TensorRT 推理的 grid_sample 的自定义双线性采样替代方案?

我试图通过 ONNX(opset 11)将模型从 Pytorch(1.6)转换为 TensorRT(7)的 torch.nn.functional.grid_sample。Opset 11 不支持 grid_sample 转换。我发现的自定义替代方案(https://github.com/pytorch/pytorch/issues/27212)在 Pytorch 中运行时非常慢,并且在将主循环转换为 TRT 时存在问题。

我自己的双线性采样实现(不仅仅是 grid_sample,而是整个原始采样,基于 grid_sample)在 Pytorch 中执行得更快,并成功转换为 TRT。但是我在 TRT 中的自定义双线性采样比 Pytorch 中的慢(5.6 ms vs 2.0 ms)。事实证明,Pytorch image[:, ind, y0, x0] 索引生成 Gather 层的运行时间约为 0.97 ms。在这种双线性采样的 TRT 版本中有 4 个这样的层。

所以问题是:

  • 我应该如何优化我的 Pytorch 代码以获得有效的 TRT 模型?
  • 我应该怎么做才能使 Gather 层执行得更快?
  • 将此功能创建为自定义 TRT 插件是否有助于使其更快?

这是双线性采样函数的代码:

时间分析参数:

  • 时间分析实验在笔记本电脑 Dell G3 15(Core i7 8750H 2.2 GHz x12、16 Gb RAM (2666MHz)、NVidia GeForce GTX 1050 Ti)上进行。
  • 用于分析的 Pytorch 环境:Python 3.7 Anaconda 3 环境,Pytorch 1.6。Pytorch 时间分析是通过 time.time() 和 torch.synchronize() 在每个时间戳之前执行的。
  • 用于分析的 TRT 环境:Docker 容器http://nvcr.io/nvidia/tensorrt:20.06-py3。使用 trtexec 以及自定义 C++ 和 Python 代码执行分析。所有三个结果都很接近。

使用 trtexec 进行 TRT 模型分析的一部分:

此外,我尝试将图像视为除 C 之外的所有维度上的线性数组,并创建线性索引以寻址图像 [:, p0] 形式的元素。在这种情况下,Gather 变得更慢(大约 1.07 毫秒)。然后我考虑了 C=1(因为它总是在原始模型中)并将张量元素处理为 image[p0]。这次 Gather 大约需要 0.92 毫秒(仍然太慢)。

0 投票
0 回答
33 浏览

python - 特定点的双线性插值

我正在尝试插入一些以这种格式给出的向量点(只取完整数据的一部分):

到目前为止,我能够对这些矢量点进行插值,scipy.interpolate以获取特定点的速度(u 和 v),并将其应用于公式以研究其运动。问题是,我实际上应该处理 60,000 个点并将其绘制为不同时间步长的图表(例如 t=0.1,t=0.2..)。该代码运行良好,但我对我当前的算法并不满意,因为绘制 1000 个粒子至少需要 3 分钟,而且更不用说绘制 60,000 个粒子需要多少时间了。我现在拥有的代码如下:

多变的

我看到我面临的主要问题是我实际上是在迭代数千个粒子,在循环本身内插入向量点,这使得它非常慢。有什么办法可以优化这个,或者如果可能的话,很高兴知道其他一些可以帮助解决这个问题的库或函数。

0 投票
0 回答
60 浏览

image - 双线性插值 - 图像处理

我正在尝试编写一个 Python 函数,该函数将图像作为输入并执行双线性插值以调整图像大小。该函数还接收 2 个坐标 - y、x - 表示像素“落在”原始图像中时(y - 行、x - 列)。该函数需要返回该像素的值。我正在使用单通道图像(2D 列表),获取像素值的公式是:a(1-x)(1-y) + b y(1-x) + c x(1-y ) +d x y (公式中的 x, y 与函数参数中的 x, y 不同),因为 a,b,c,d 是 4 个邻居的值,例如:

给定图像:

我在这个问题上坐了 2 天,我看不出我该怎么做,所以任何帮助都会被接受:) 非常重要 - 我不能使用任何模块 - 不是 PIL,不是 numpy,只有基础知识加上- 无需检查图像之外的像素 - 仅在图像内和边界上

0 投票
0 回答
16 浏览

bilinear-interpolation - 我们如何在 CLAHE 算法中对平铺图像进行双线性插值?

我试图在平铺图像上应用双线性插值来抑制边界伪影。在数学上,我确实理解插值,但我没有将它应用到从 CLAHE 算法获得的平铺图像中。

据我了解,我们取四个中心像素,如四个相邻图块的 P11、P12、P21 和 P22(图像),然后像此图像中那样应用插值以获得完整的最终图像。但我想知道双线性插值实际上是如何工作的。

有人可以帮助我理解这一点吗?

谢谢,

0 投票
0 回答
40 浏览

c# - Matlabs interp2中样条的外推如何工作?

我知道在 Matlab 中已经有很多关于样条外推的问题。我有一个示例,它在 2D 中效果很好,我想了解这种行为以使用 Math.Net 在 C# 中对其进行编程。这是我的例子:

我有一个零矩阵,中间有一个条形图。 我将 Hann Window 应用于条形以平滑边缘,然后使用双线性插值将矩阵旋转 30 度。 现在我有设置为 NaN 的边界之外的值。我可以将所有 NaN 值设置为零,但我真正想要的是该条将自动扩展。现在我可以在旋转之前填充矩阵并在旋转到输入矩阵大小后再次切割它。使用起来要容易得多,并且旋转的矩阵看起来完全符合我对每个角度的要求。 2D 样条插值是如何做到的,有没有办法手动编程?
输入矩阵

旋转矩阵双线性
interp2(matrix,xRot,yRot,'spline')
旋转矩阵样条

0 投票
0 回答
52 浏览

opencv - 如何对蒙版图像执行双线性插值?

假设我有一个带掩码的图像,有效像素被掩码为 1 和其他 0,如何执行双线性插值来填充所有无效像素?

例如,图像: 1、0、0、4

掩码: 1、0、0、1

插值结果应该是: 1、2、3、4

有效像素不规则排列,更复杂的样本,图像:

4, 0, 6, 0,

0, 8, 5, 0

5, 3, 0, 0

面具:

1, 0, 1, 0,

0, 1, 1, 0

1, 1, 0, 0


用 scipy.interpolate.interp2d 插值,结果有很多孔和噪音 顶点的uv 插值后的uv

0 投票
1 回答
55 浏览

android - 在 Android Jetpack Compose Image 中禁用位图过滤

我存储了像素艺术风格的图像res/drawable,它们的比例自然很小,但要按比例放大显示。然而,默认行为似乎是模糊放大的图像以尝试隐藏像素。那怎么能禁用呢?

  1. 这是来自手机的截图。与文字相比,您可以看到图像模糊。

图像模糊

  1. 这是具有清晰像素的所需缩放图像(请忽略背景)

理想的形象

我看到旧的 Android 框架有一个类似的问题,但我使用的是 Jetpack Compose。

0 投票
0 回答
21 浏览

r - 如何将 akima 包双线性函数用于插值的 1 行矩阵?

我正在使用 akima::bilinear 函数,它通常工作得很好。但是,对于某些用例,插值网格只有 1 行但多列。我知道我可以有一个 if 语句并改用 approx() 函数,但是没有它,代码会更干净,我不明白为什么这不起作用。对于失败的可重现示例:

我得到的错误是:

0 投票
1 回答
39 浏览

time-complexity - 如何获得双线性/最近邻插值算法的复杂性?(计算大O)

我想计算以下用于调整二进制图像大小的算法的大 O:

双线性插值:

最近邻插值

我假设它们的复杂性是循环尺寸,即 O(new_height*new_width)。然而,双线性插值肯定比最近的邻居慢得多。您能否解释一下如何正确计算复杂度?