- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have trouble with filter functions. Why does the code given throw an exception? dimX is 336, dimY is 333. The incoming image is single channel Ipp32f* type.
Pulling my hair out.
Thanks!
[cpp]
bool GetSmoothImage(const ImageCoreC&pInMap, int dimX, int dimY) {
IppStatus ippStatus =ippStsNoErr;
int bytesperPix =sizeof(Ipp32f);
int filterWing = 1;
IppiSize srcSize = {dimX,dimY};
int srcStepOrg = srcSize.width * bytesperPix;
IppiSize roiSize = {dimX- (2*filterWing),dimY- (2*filterWing)};
int dstStep;
Ipp32f*pDst = ippiMalloc_32f_C1(srcSize.width,srcSize.height,&dstStep);
Ipp32f* pSrcStartpoint =pInMap.Data() + (filterWing * srcSize.width) + filterWing;
Ipp32f* pDstStartpoint = pDst + (filterWing * srcSize.width) + filterWing;
ippStatus = ippiFilterGauss_32f_C1R(pSrcStartpoint, srcStepOrg, pDstStartpoint, dstStep, roiSize,
ippMskSize3x3);
[/cpp]
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Works in my case:
[cpp]
#include <ipp.h>
#include <stdlib.h>
const static int dimX = 336, dimY = 333;
int main()
{
ippInit();
IppStatus ippStatus = ippStsNoErr;
Ipp32f *pSrcImage;
int bytesperPix = sizeof(Ipp32f);
int filterWing = 1;
pSrcImage = (Ipp32f*)malloc(dimX * bytesperPix * dimY);
IppiSize srcSize = {dimX, dimY};
ippiImageJaehne_32f_C1R(pSrcImage, dimX * bytesperPix, srcSize);
int srcStepOrg = dimX * bytesperPix;
IppiSize roiSize = {dimX - (2 * filterWing), dimY - (2 * filterWing)};
int dstStep;
Ipp32f *pDst = ippiMalloc_32f_C1(dimX, dimY, &dstStep);
Ipp32f *pSrcStartpoint = pSrcImage + (filterWing * dimX) + filterWing;
Ipp32f* pDstStartpoint = pDst + (filterWing * srcSize.width) + filterWing;
ippStatus = ippiFilterGauss_32f_C1R(pSrcStartpoint, srcStepOrg,
pDstStartpoint, dstStep, roiSize, ippMskSize3x3);
ippiFree(pDst);
free(pSrcImage);
return 0;
}
[/cpp]
:))
Regards,
Sergey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Sergey, I'll have to continue fishing. Like you if I run your code in a stand-alone environment, it works. I am running my original code in a DLL invoked from a separate thread. Something must be wrong there, at least I now know that the code fragment in question is not the culprit.
Uwe

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page