Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Separable Convolution Questions

cyndy_koobs
Beginner
464 Views

In the Separable Filters part of the IPP Documentation (Volume 2), there are several different flavors of row filters. What are the differences between FilterRowBorderPipline and FilterRowBorderPipeline_Low? What exactly does "Pipeline" mean?

The other question that I have that seems a little dense but I have to ask it anyway, is the only reason for an anchor is to identify the size of the border?

What I am ultimately wondering is if these separable filter functions could be used to do a "Boxcar" filter where the filter coefficients are all '1'.

Anyone else have any experience with using these separable filters? I'm going over the example in Volume 2 as well as one example someone posted in the forum but having a little trouble trying to convert into Java since there aren't any pointers............

thanks,
Cyndy

0 Kudos
3 Replies
Vladimir_Dudnik
Employee
464 Views

Cyndy,

Boxcar is equal to ippiFilterBox, it is more optimal solution.

Regards,
Vladimir

0 Kudos
cyndy_koobs
Beginner
464 Views

Unless I am missing something, you cannot specify the filter coefficients using ippiFilterBox. Thanks for the info on a more optimal solution.

Cyndy

0 Kudos
Intel_C_Intel
Employee
464 Views

Functions FilterRowBorderPipeline and FilterColumnBorderPipeline are intended to organize aseparable convolution without the intermediate image for the result of row convolution. Separable convolution can be done by image portions (slices) and require the intermediate buffer for slice height + kernel height - 1 rows (it is pipelined processing of an image). The output of FilterRowBorderPipeline and the input of FilterColumnBorderPipeline is the double pointer. So the intermediate buffer can be organizedas thering buffer.

The difference between FilterRowBorderPipeline and FilterRowBorderPipeline_Low is that _Low function assumes kernel coeffs to fit in 12 bit. It prevents to avoid overflow checks and allows to calculate convolution faster.

You can use these functions in Java by writingC wrapper function for handling the ring buffer.

Thanks,

Alexander

0 Kudos
Reply