Performing 2D convolution on an image with separable kernels, then, is equivalent to multiplying the results of convolving over the image columns with the vertical kernel and convolving over the image rows with the horizontal kernel. (And because convolution is commutative, the order doesn’t matter!)