如何使用边距初始化外部图像进行卷积?

时间:2016-07-19 15:55:54

标签: halide

约束:  1.指向具有边距(ImHeight,ImWidth)的图像的指针  2.过滤器尺寸(FH,FW); FH,FW很奇怪  3. ActualImageHeight = ImHeight-2 *(FH / 2); ActualImageWidth = ImWidth-2 *(FW / 2);

如何:

  1. 使用指针初始化图像,使得图像(0,0)是像素(0,0)而不是边距像素?
  2. 在不使用边界条件/钳位的情况下定义计划 - 因为给定的图像指针存储器已经考虑了边距

1 个答案:

答案 0 :(得分:2)

修改图像的最小坐标。如果你使用JIT或AOT,你没有说明,但这是一个JIT实现。

if (cosName.getName().startsWith("QuickPDFIm")) {
    imageCount++;
}

对于AOT:

  • Halide::Image input( ImWidth + 2 * FW, ImHeight + 2 * FH ), output; input.set_min( -FW, -FH ); Func f; f(x,y) = ( input( x - FW, y - FH ) + input( x + FW - 1, y + FH - 1 ) ) / 2; output = f.realize( ImWidth, ImHeight ); 用于ImageParam
  • 使用input Param<int>ImWidth将它们作为AOT功能的参数。
  • 使用ImHeight intImWidth将其烘焙到AOT功能中。
  • ImHeightset_bounds的所有维度使用set_strideinput。如果f.output_buffer()Expr,这些会ImWidth + 2 * FW,因此会接受ImWidth