Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Otsu method for 16 bit grayscale image?

Nick_T_1
Beginner
826 Views

I am processing grayscale image that has 16 bits per pixel. So the grayscale level is not longer confined within 0-255. I noticed ippiComputeThreshold_Otsu() only has option for _8u_C1R, and its threshold pointer is also a Ipp8u pointer. So I guess a Ipp8u threshold value really cannot perform correct segmentation for a 16 bit level grayscale image.

So my question really is: is there a 16 bit version Otsu method? Or, can I do some trick to convert my 16 bit grayscale image to a 8 bit version, then use ippiComputeThreshold_Otsu_8u_C1R() to get the threshold, then project the threshold proportionally to a 16 bit version? Or I have to develop my own Otsu?

Any suggestion is appreciated. Thanks.

Nick

0 Kudos
3 Replies
Ying_H_Intel
Employee
826 Views
Hi Nick, I'm sorry to say, no, there is no 16 bit version Otsu method in IPP. We can submit it as a new feature request so IPP developer team can consider it in future product plan. But i guess, it can't solve your problem right away. Although a Ipp8u threshold value really cannot perform correct segmentation for a 16 bit level grayscale image, i guess it is still worth a try. convert or scale 16bit gray image to 8u image, then call the 8u otsu method. Or, you may develop the method your self, but some basic IPP functions may be used during development. Best Regards, Ying
0 Kudos
Nick_T_1
Beginner
826 Views
Ying H (Intel) wrote:

Hi Nick,

I'm sorry to say, no, there is no 16 bit version Otsu method in IPP. We can submit it as a new feature request so IPP developer team can consider it in future product plan. But i guess, it can't solve your problem right away.

Although a Ipp8u threshold value really cannot perform correct segmentation for a 16 bit level grayscale image, i guess it is still worth a try. convert or scale 16bit gray image to 8u image, then call the 8u otsu method. Or, you may develop the method your self, but some basic IPP functions may be used during development.

Best Regards,
Ying

Hi Ying: Converting a 16bits grayscale to 8bit grayscale was exactly what I was thinking, but I did not find any IPP functions to do so. Do you know any? Thanks a lot. Nick
0 Kudos
Ying_H_Intel
Employee
826 Views
Hi Nick, the functions like ippsScale_16u8u_C1R and ippsConvert_16u8u_C1R should for the purpose. You can see the details in ippiman.pdf. Best Regards Ying
0 Kudos
Reply