1. Choose a Filter function for your application.
All IPP filter funtions are listed in ipp manual ippi.pdf => chapter 9 Filtering Function.
2. Call the Filter function in your code.
there is some example provided in manual. For example,
The Example 9-1 illustrates the use of the ippiFilterMin function
The Example 9-3 illustrates median filtering.
The Example 9-4 Using the Function ippiFilterColumn.
Please Note: there is code error in the Example 9-4 in current manual.
The code should be modified as
Ipp8u src[4*5] = {
1, 2, 3, 4,
1, 2, 3, 4,
1, 2, 3, 4,
1, 2, 3, 4,
1, 2, 3, 4
};
and the result are 0.
Use the Filter function, we may need take care of two things,
First, Image Border: all IPP filter functions assume that each pixel being processed, including the all referred
neighborhood pixels necessary for the operation are available. So either trim the input buffer or add border to input
buffer is required.
There is one article talking about it,
/en-us/articles/intel-integrated-performance-primitives-intel-ipp-processing-an-image-from-edge-to-edge
Secondly, stepBytes: it is the distance in bytes of image row. It depends on your array memory layout and data
type. In most of case, it is equal to the image Width*sizeof(datatype)*Channel. But sometimes, it is not, especially for
bmp image, which required 4 bytes aligns, may pad zero at the end of row. So it may be
(Width*sizeof(datatype)*Channel+3)/4.
Here is a small C++ code for call ippiFilterColumn
//main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <ipp.h>
int main()
{
int nRow = 200;
int nCol = 655;
int nCount = nRow * nCol;
Ipp16s *temp = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));
Ipp16s *temp2 = (Ipp16s *)malloc(nCount * sizeof(Ipp16s));
Ipp32s fKernel[] = {1, 2, -3};
int nAnchor = 1; // please notes, if it is 1 , then it required border at the top of image.
int nKernelSize = 3;
int divisor = 2;
IppiSize dstRoiSize2 = {nCol, nRow - 2};
// please note, the step is width*sizeof(Ipp16s)
IppStatus b = ippiFilterColumn_16s_C1R((Ipp16s*)temp + nCol, nCol*sizeof(Ipp16s), (Ipp16s*)temp2 + nCol,
nCol*sizeof(Ipp16s),
dstRoiSize2, (Ipp32s*)fKernel, nKernelSize, nAnchor,divisor );
printf ("%d: %s\n", b, ippGetStatusString(b));
printf ("the step is %d\n", nCol*sizeof(Ipp16s));
free(temp);
free(temp2);
return 0;
}
3. Compile and link ipp library
please refer to How to Build an Intel IPP Application 
