问题标签 [bicubic]
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.
image-processing - 如何将内核转换为矩阵表示法?
我试图理解双三次卷积算法,但无法理解内核是如何作为一个宽函数给出的,
变成了这个矩阵:
我知道到达矩阵 a 被设置为 -0.5。无论我如何看待它,我都无法得出所示的非对称矩阵。
我已经浏览了Keys 的论文,但他没有扩展到矩阵表示法,我一直在努力解决如何到达那里。
任何见解将不胜感激。
python - Python中的精确轮廓查找算法
我手头的任务是在点云中找到特定的轮廓。需要尽可能准确地确定它们。因此必须使用高阶多项式插值。我有由网格中的点组成的数据,每个点都有自己的高度。
我用matplotlib.contours函数找到轮廓非常成功。然后我直接用matplotlib.cntr(C++算法)来确定具体的轮廓。但由于该文件使用行进平方算法(线性插值),找到轮廓的精度不够好。
我正在寻找解决此问题的替代方法。一个建议的解决方案是
- 使用双三次插值来查找特定点周围的解析函数。
- 其次是函数导数的计算。
- 然后使用导数函数来确定导数保持在 0 的方向(使用点作为视点)。通过在该方向移动一小段距离,高度应保持不变。
使用这个算法应该找到一个轮廓。这个算法会起作用吗,在实现它时我可以走捷径吗(通过使用已经实现的功能)?
实现这个算法需要我付出相当大的努力,而且它可能只在理论上有效。我猜数字误差应该仍然存在(导数可能不完全是 0)并且最终甚至可能超过当前误差(使用行进方块)。我想考虑其他更简单、更快的方法来解决这个问题。
还有什么其他算法可以用来解决它?
有没有人遇到过类似的问题?你是怎么解决的?
python - 双三次插值的 2 倍上采样
我想了解双三次插值是如何工作的,为此我选择了最简单的例子,2x upsample。
所以我知道我从一个图像数组开始,假设它是:
1 5 6 8 7
3 4 8 9 7
9 8 7 5 4
3 2 5 4 7
由于我想要 2x 上采样,我将在列和行之间添加 0:
1 0 5 0 6 0 8 0 7
0 0 0 0 0 0 0 0 0
3 0 4 0 8 0 9 0 7
0 0 0 0 0 0 0 0 0
9 0 8 0 7 0 5 0 4
0 0 0 0 0 0 0 0 0
3 0 2 0 5 0 4 0 7
我知道如何在新图像上获得 4,4 的像素。首先,我需要使用 1 5 6 8 进行三次插值并获得 P1,然后 P2 使用 2 4 8 9,然后 P3 使用 9 8 7 5 和 P4 使用 3 2 5 4。最后我需要对像素强度进行三次插值P1 P2 P3 P4。我主要关心的是让像素达到 4,5 或 5,4
现在我用 Python 编写这段代码:
感谢!
c++ - 带有热图像的 C++ 双三次插值
目前我在 STM32 上使用 MLX90641 传感器来获取温度网格。网格本身是 18x12 像素。我想将此网格双三次插值到 31x23 的网格,我认为这是最合乎逻辑的吗?
我的数学/微积分知识足以掌握双三次插值的概念。但是我无法弄清楚让它在代码中工作。
使用的语言是 C++ 和https://www.paulinternet.nl/?page=bicubic作为来源。
我是否循环遍历我的双精度数组并在每个值上调用函数 bicubicInterpolate?为什么他们使用参数double x,double y?
谁能帮我将此功能应用于我的双网格[192]?
谢谢!
c - CUDA 和 C 中的双三次插值 / 双三次插值如何应用于整个图像?
我目前正在用 C 语言为 Matlab 编写一个 MEX 文件,以首先旋转图像,然后对其进行双三次插值。在研究时,我在https://www.paulinternet.nl/?page=bicubic上发现了 C++ 中双三次插值的部分实现。但是,那里的代码只插入一个 4 x 4 的区域,并且只返回一个插值而不是足够的值来填充初始区域。
谁能告诉我如何将双三次插值应用于整个图像?图像是否被分成 4x4 块,然后进行插值?如何获取图像整个区域的值?另外,函数“bicubicInterpolate”中的“x”和“y”到底是什么?
我试图从这篇文章“https://stackoverflow.com/questions/20923956/bicubic-interpolation”的代码中看出这一点,但我不明白分数是如何计算的。
感谢您的帮助。
python - 为什么各种python库的双三次插值有区别?如何计算特定轴上的双三次插值?
我有两个问题。
- 为什么 PIL、CV2 和 skimage 的双三次结果彼此不同?虽然差异很小,但作为一种确定性方法,我想它应该对所有人都一样。
- 我想在矩阵的特定轴上计算双三次。例如,如果x.shape => (?,256,256,?),现在我想使用双三次调整x.shape => (?,512,512,?)的大小。有什么办法吗?PIL 和 CV2 对此不起作用。skimage 需要完整的形状,这在代码中引入了进一步的复杂性。顺便说一句,上面的 x 是一个 tensorflow 张量,因此如果有的话,更优选基于 tesorflow 的双三次调整大小。
c++ - 使用官方公式进行三次插值失败
当 a=-0.5 像往常一样时,我正在尝试使用下一个公式来实现三次插值方法。
我的线性插值和最近邻插值效果很好,但由于某种原因,三次插值因白色像素而失败,有时会将它们变成绿松石色,有时会弄乱另一种颜色。
另一个具有更多黑色像素的示例。它几乎看起来很完美,但看狗的舌头。(强烈的白色像素再次变成绿松石色)
您可以看到我的线性插值实现效果很好:
由于实际旋转有效,我想我在代码中有一个我没有注意到的小错误,或者可能是数字错误或双/浮点错误。需要注意的是,我正常读取图像并将目标图像存储如下:
说明:
在我的三次插值函数中,srcPoint(newX 和 newY)是逆变换的“着陆点”。
在我的逆变换中,我没有使用像素的矩阵乘法,现在我只是使用旋转公式。这对于“数字错误”可能很重要。例如:
这是我的三次插值代码
我希望这里的人能够帮助我,谢谢!