2017-02-13 4 views
0

왜 아래의 Halide 코드가 발생하는지 이해할 수 없습니다. 내가 실수 한 것을 알려주십시오. 그것은 당신의 흐림의 총 면적과 같은할레 이드 오류 : "입력 버퍼 b0에 -1, 즉 0 차원의 최소 (0) 이전에 액세스했습니다."

Buffer<uint8_t> input(small_width, small_height, small_depth); 
Var x("x"), y("y"), z("z"); 
Func blur_y1, blur_y2, blur_x1, blur_x2, blur_z1, blur_z2; 

blur_y1(x,y,z) = (input(x,y-1,z) + input(x,y+1,z) + 2*input(x,y,z))/4; 
blur_y2(x,y,z) = (blur_y1(x,y-1,z) + blur_y1(x,y+1,z) + 2*blur_y1(x,y,z))/4; 

blur_x1(x,y,z) = (blur_y2(x-1,y,z) + blur_y2(x+1,y,z) + 2*blur_y2(x,y,z))/4; 
blur_x2(x,y,z) = (blur_x1(x-1,y,z) + blur_x1(x+1,y,z) + 2*blur_x1(x,y,z))/4; 

blur_z1(x,y,z) = (blur_x2(x,y,z-1) + blur_x2(x,y,z+1) + 2*blur_x2(x,y,z))/4; 
blur_z2(x,y,z) = (blur_z1(x,y,z-1) + blur_z1(x,y,z+1) + 2*blur_z1(x,y,z))/4; 

Buffer<uint8_t> out(small_width-2, small_height-2, small_depth-2); 
out.set_min(1, 1, 1); 
blur_z2.realize(out); 

Error: Input buffer b0 is accessed at -1, which is before the min (0) in dimension 0

답변

2

는 당신이 필요로하는, 그래서 모든 방향이 아닌 하나의 픽셀 :

Buffer<uint8_t> out(small_width-4, small_height-4, small_depth-4); 
out.set_min(2, 2, 2);