- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I spent some time in the past couple of weeks porting an application from IPL to IPP, and am nearing completition. Most stuff that uses 8u (even RGB) and 16s images works, and mostly runs faster than the IPL version, but there are a few remaining problems with 8s. In particular, I still need a correct way to use the Sobel filters on 8s(grey)images.
There is no direct 8s filter, but there's one that apparently converts from the 8s source image to a 16s destination image "on the fly": ippFilterSobel...8s16s_C1R(). This yields a very grey looking image, though I can see that the filter had an effect. If I convert back to an 8s image by doing plain assignment of all 16s pixels to 8s ones, the image looks somewhat brighter, but still quite "wrong" and different from what the IPL version yields.
8s support in the IPP isn't as good as for 8u and 16s, so there is apparently also no direct conversion routine between 8s and most other image types. I'm thinking maybe I should convert differently?
My question to the experts (hello Vladimir ;-)) is: If you were to Sobel filter 8s images in IPP, how would you do it to obtain the same results as iplFixedFilter(IPL_SOBEL...) did in IPL? And if that is not possible, how could you make the resulting 16s image from ippFilterSobel...8s16s_C1R() look "right"? Using 16s images from the start is alastoption, but if at all possible, 8s would be better for my purposes.
Thanks for your time!
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I messed it up, bug in my code, shame on me. You can delete this thread.
Sorry.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello, I'm glad you solve issue. No need to delete this thread, it can help someone in case of similar issue
Regards,
Vladimir
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
You are right the support of 8s data type in IPP is not so comprehensive as for 8u.IPP 5.1.1 and later versions contain fixed and separable convolutions with 8s C1 and C3 output. It is not competely the thing you are asking about but these functions facilitate filtering of 8s input images:
First, you change the left bit by ippiXor function
Then filter it by ippiFilterSobel***Border_8u8s_C1/3R function. The result will be same as for 8s data filtering because the sum of Sobel kernel elements is 0. Notethat ippiFilterSobelVertBorder_8u8s_C1R function calculates -dx (see the used kernel in the manual), for dx use ippiFilterSobelNegVertBorder_8u8s_C1R function
You can place request for filtering functions with 8s input on Intel Premier site (premier.intel.com)
Thanks,
Alexander
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page