improved blur, uses a 1D kernel in two passes