Problem with PyramidLayerDown_16u_C1R

Problem with PyramidLayerDown_16u_C1R

I am having some trouble with Universal Pyramids, the 16bit-versions in particular.

First of all, I get a crash (heap-corruption) if calling "ippiPyramidLayerDownInitAlloc_*" with a width less than the kernel size. In the example below, it crashes if called with sourceWidth=4 (and destWidth=2). This isn't really nice behavior (and seems not to be limited to the 16u_C1R-version) - it probably should either return an error or "just work" (btw, ippiPyrDown_Gauss5x5 seems not to have trouble with this).
Ok, this is annoying but can be worked around quite easily, but the other problem is more severe: I get strange results for 16bit-grayscale images. See the uploaded example images. The result ("Out_PyrDown.png") looks "strange" and note the vertical stripe on the right hand side. This is especially problematic because there is no alternative (that I am aware of) since ippiPyrDown_Gauss5x5_ does not exist in a 16u_C1R-version.

I am experiencing this problem with IPP7.0, 7.1 and 7.1 update 1.


Any help would be greatly appreciated.


Example code:


bool PyrDown_Gray16(void* sourceBuffer,int sourceStride,int sourceWidth,int sourceHeight,void* destinationBuffer,int destinationStride,int destWidth,int destHeight)
IppiSize destSize;  
IppiSize srcSize = {sourceWidth,sourceHeight};  
IppStatus status = ippiGetPyramidDownROI(srcSize,&destSize,2.0f);  
if (destSize.width!=destWidth || destSize.height!= destHeight)  {   return false;  }
IppiPyramidDownState_16u_C1R* ptrPyramidState_16u_C1R;
static Ipp16s kernel[5] = {1,4,6,4,1};
status = ippiPyramidLayerDownInitAlloc_16u_C1R( &ptrPyramidState_16u_C1R,srcSize,2.0f,kernel,5,IPPI_INTER_LINEAR);  
status = ippiPyramidLayerDown_16u_C1R( (Ipp16u*)sourceBuffer,sourceStride,srcSize,(Ipp16u*)destinationBuffer,destinationStride,destSize,ptrPyramidState_16u_C1R);  
status = ippiPyramidLayerDownFree_16u_C1R(ptrPyramidState_16u_C1R);  
return true;

Download original-16u.png630.9 KB
Download out-pyrdown.png347.56 KB
2 post / 0 nuovi
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione

I have the same problem and google it on website and no solution is found so far.

Did anyone solve it?

Lascia un commento

Eseguire l'accesso per aggiungere un commento. Non siete membri? Iscriviti oggi