Hi,
My problem is wrong output from function ippiFilter_32f_C1R for 64-bit version, for 32-bit version it works correctly
Here is my code:
Ipp32f* convolution(float **a, float **filter, int width, int height, int coreSize, int newWidth, int newHeight)
{
Ipp32f *src1 = new Ipp32f[width * height];
Ipp32f *src2 = new Ipp32f[coreSize * coreSize];
Ipp32f *dst = new Ipp32f[newWidth * newHeight];
IppiSize src1Size = { width, height };
IppiSize src2Size = { coreSize, coreSize };
IppiSize dstSize = { newWidth, newHeight };
IppiPoint anchor = { coreSize - 1 , coreSize - 1 };
int k = 0;
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
src1[k] = a[i][j];
k++;
}
}
k = 0;
for (int i = coreSize - 1; i >= 0; i--)
{
for (int j = coreSize - 1; j >= 0; j--)
{
src2[k] = filter[i][j];
k++;
}
}
ippiFilter_32f_C1R(src1, width * sizeof(Ipp32f), dst, newWidth * sizeof(Ipp32f), dstSize, src2, src2Size, anchor);
delete []src1;
delete []src2;
return dst;
}
The difference between the outputs of this function appears, when width = 19, height = 24, coreSize = 3, newWidth = 17, newHeight = 22
Thanks,
Alexandr