是否有 Halide::BoundaryConditions 来模仿 OpenCV 默认边框类型?
Is there a Halide::BoundaryConditions to mimic OpenCV default border type?
文档说这类似于 GL_MIRRORED_REPEAT
。我试图对此进行研究,但它似乎不像 OpenCV 边框类型那样具体。
- BORDER_REFLECT_101为
gfedcb|abcdefgh|gfedcba
,这是默认的。
- BORDER_REFLECT 作为
fedcba|abcdefgh|hgfedcb
我猜角落不是严格按照这个定义的,但我可以清楚地看到边缘是什么。 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(即它们不是编译器内部函数)。
文档说这类似于 GL_MIRRORED_REPEAT
。我试图对此进行研究,但它似乎不像 OpenCV 边框类型那样具体。
- BORDER_REFLECT_101为
gfedcb|abcdefgh|gfedcba
,这是默认的。 - BORDER_REFLECT 作为
fedcba|abcdefgh|hgfedcb
我猜角落不是严格按照这个定义的,但我可以清楚地看到边缘是什么。 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(即它们不是编译器内部函数)。