Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Hernßn_B_
Beginner
58 Views

Documentation of FilterColumn is wrong

The example shown in the documentation for ippiFilterColumn is wrong for many reasons:

1.- the border is not being considered. As shown in the example, memory outside the allocated space will be read. This means also that the first and last rows of the destination image will not contain meaningful information.
2.- According to the result you are showing, yAnchor must be 1 and not 2.
3.- The example is terrible bad, because you are using 8u as data type but the kernel filter has a negative value.
4.- The result should be 0 everywhere, since you are using "Sobel" kernel and the data does not contain any "gradient" in vertical direction.

Something more appropriate will be:

______________________________________________
Ipp16s src[4*3] = {
1, 0, 0, 4,
0, 0, 3, 4,
0, 2, 3, 1
};

Ipp16s dst[4*3] =
{
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0
};

IppiSize srcRoi;
srcRoi.width = 4;
srcRoi.height = 1;
Ipp32s kern[] = { 1, 2, -3 };
int kernelSize = 3;
int yAnchor = 1;
int divisor = 1;

ippiFilterColumn_16s_C1R ( src+4, 4*sizeof(Ipp16s), dst+4, 4*sizeof(Ipp16s), srcRoi, kern, kernelSize,
yAnchor, divisor);

for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 4; ++j)
{
printf("dst[%i][%i] = %i ",
i, j, dst[i*4+j]);
}
}
______________________________________________

Result:

dst[0][0] = 0
dst[0][1] = 0
dst[0][2] = 0
dst[0][3] = 0
dst[1][0] = -3
dst[1][1] = 2
dst[1][2] = 9
dst[1][3] = -3
dst[2][0] = 0
dst[2][1] = 0
dst[2][2] = 0
dst[2][3] = 0



Regards,

Hernn Badino
0 Kudos
1 Reply
Vladimir_Dudnik
Employee
58 Views

Hello,

thanks for pointing to this. We will correct sample.

Regards,
Vladimir

Reply