0

制約: 1. サイズ (ImHeight,ImWidth) のマージンを持つ画像へのポインターを持っている 2. フィルター サイズ (FH,FW) ; FH、FW は奇数 3. ActualImageHeight = ImHeight-2*(FH/2); ActualImageWidth = ImWidth-2*(FW/2);

方法:

  1. image(0,0) がピクセル (0,0) であり、マージン ピクセルではないようなポインタでイメージを初期化しますか?
  2. 境界条件/クランプを使用せずにスケジュールを定義 - 指定されたイメージ ポインター メモリが既にマージンを考慮しているため
4

1 に答える 1

2

イメージの最小座標を変更します。JIT を使用しているか AOT を使用しているかは述べていませんが、JIT の実装を次に示します。

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 );

AOT の場合:

  • に使用ImageParaminputます。
  • Param<int>forImWidthとを使用しImHeightて、それらを AOT 関数のパラメーターにします。
  • intforImWidthとを使用しImHeightて、それらを AOT 関数に焼き付けます。
  • set_boundsset_strideのすべての次元にinputとを使用しf.output_buffer()ます。これらの take sは、 が である場合Exprに受け入れます。ImWidth + 2 * FWImWidthParam<int>
于 2016-07-19T17:55:53.620 に答える