是否有 Halide::BoundaryConditions 来模仿 OpenCV 默认边框类型?

Is there a Halide::BoundaryConditions to mimic OpenCV default border type?

文档说这类似于 GL_MIRRORED_REPEAT。我试图对此进行研究,但它似乎不像 OpenCV 边框类型那样具体。

我猜角落不是严格按照这个定义的,但我可以清楚地看到边缘是什么。 GL_MIRRORED_REPEAT 的文档似乎侧重于角落行为。总的来说,这与我们的应用程序无关,因为感兴趣的目标存在物理限制,使它们保持在视野范围内。但是,如果我正在编写回归测试并且这些细节很重要。

如何在 Halide 中复制 BORDER_REFLECT_101? Halide::BoundaryConditions 是否可行,或者我是否需要实施自己的钳制?在证明我们有复制行为并使用 Halide::BoundaryConditions::mirror_image.

后,我可以放宽条件

奖励:Halide::BoundaryConditions 是否比使用 clamp 更高效,还是这只是语法糖?似乎恰恰相反;最好使用 clamp?

Bonus: Is Halide::BoundaryConditions more performant than using clamp or is this just syntactic sugar? It seems the opposite; it is better to use clamp?

边界条件只是为了方便。他们是 implemented here。它们的性能应该不比自己编写的相同,因为它们只是元编程 Exprs(即它们不是编译器内部函数)。