Trouble with the Canny operator

Trouble with the Canny operator

Hi,
I am having difficulties getting the canny operator to work correctly for me. I am trying to do edge detection in the hue part of an RGB image. I am extracting the hue correctly and am using the following code to compute the edges:

Note: HSVPanes[0] contains the hue values.

IppiSize image = {buf->w(), buf->h()};

ippiCannyGetSize(image, &numBytesRequired);
Ipp8u *tempBuf = (Ipp8u*)malloc(sizeof(unsigned char)*numBytesRequired*1);
Ipp16s *derivX = ippiMalloc_16s_C1(buf->w(), buf->h(), &derivStep);
Ipp16s *derivY = ippiMalloc_16s_C1(buf->w(), buf->h(), &derivStep);
Ipp8u *t3 = ippiMalloc_8u_C1(buf->w(), buf->h(), &paneSB);
ippiSobel3x3_Dy_8u16s_C1R(HSVPanes[0], paneSB, derivY, derivStep, IPCV_ORIGIN_TL, image);
ippiSobel3x3_Dx_8u16s_C1R(HSVPanes[0], paneSB, derivX, derivStep, image);
ippiCanny_16s8u_C1R(derivX, derivStep, derivY, derivStep, t3, paneSB, WHOLE, 0, 10, tempBuf)

The problem is that the t3 buffer doesn't even change. If I set it to a particular value, it returns from the Canny function call without even changing.

I am confused as to what is going wrong.

Thank you for any assistance.

Brendan

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi,

It is possiblethat one of functions (rather Canny) returns the bad status

Please check is it zero:

IppStatus status = ippiCanny_16s8u_C1R(derivX, derivStep, derivY, derivStep, t3, paneSB, WHOLE, 0, 10, tempBuf)

What is WHOLE in this example?

Are low and high tresholds 0 an? 10 correctly converted to float?

Regards,
Vladimir

Leave a Comment

Please sign in to add a comment. Not a member? Join today