Function xf::cv::aie::gaussian_api

Function Documentation

void xf::cv::aie::gaussian_api(input_window_int32 *img_in, output_window_int32 *img_out)

32-bit 2D filter with in kernel border support

Kernel coefficients (3x3): k0 k1 k2 k3 k4 k5 k6 k7 | k8 - - - - - -

Image data (by rows): d0 1 2 3 4 5 6 7 8 9 - - - - - - d16 17 18 19 20 21 22 23 24 25 - - - - - - d32 33 34 35 36 37 38 39 40 41 - - - - - -

Intrinsic multiplier: o0 = k0*(d0) o1 = k0*(d1) o2 = k0*(d2) o3 = k0*(d3) o4 = k0*(d4) o5 = k0*(d5) o6 = k0*(d6) o7 = k0*(d7)

Kernel vector multiplication: Data: Kernel:

o0..7 = k0*(d0..7) d0 1 2 3 4 5 6 7 k0 k1 k2 += k1*(d1..8) 1 2 3 4 5 6 7 8 k3 k4 k5 += k2*(d2..9) 2 3 4 5 6 7 8 9 k6 k7 k8 += k3*(d16..23) d16 17 18 19 20 21 22 23 += k4*(d17..24) 17 18 19 20 21 22 23 24 += k5*(d18..25) 18 19 20 21 22 23 24 25 += k6*(d32..39) d32 33 34 35 36 37 38 39 += k7*(d33..40) 33 34 35 36 37 38 39 40 += k8*(d34..41) 34 35 36 37 38 39 40 41

lmac8 intrinsic

acc = lmac8( acc, data_buf , n , 0x76543210 , kernel_vec0, 0, zoffset); ^ ^ ^ ^ ^ ^ ^ (accumulator) (single large buffer) (start x index) (x offsets) (coefficient buffer) (start z index) (z offsets) (per lane ) (per lane ) ( 32b granularity ) ( 32b granularity )

Image regions for border effect handling

| | | | |6_|__________2____________|7_| first row

4

1

5

__

_______________________

__

|8_|__________3____________|9_| last row