I need to perform a 3D separable convolution on floating point data. I notice that ippiFilterColumn and ippiFilterRow exist and would allow me to do the convolutions along two of the three directions. Am I right in thinking that ippiFilterColumn with an appropriate step size (i.e. the size of an image rather than a row) would allow convolution along the third direction? Are there any limitations on using a large step size? Would this method be efficient or would it suffer from a high cache miss rate? Alternatively are there any functions that would transpose my data efficiently first?
Yes, you are right, filtering with FilterColumn and step equal to 2D image size should work. Cache misses rate will be the same as for 2D image filtering if srcStep is greater than cache line length. The only 1 limitation on step is that it should fit into int - so all 2D images should fit into 2 Gb. In ippR domain we provide 3D Filtering function, but for 16s data only.