Otsu method for 16 bit grayscale image?

Otsu method for 16 bit grayscale image?

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

4 post / 0 nuovi
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione

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

Citazione:

Ying H (Intel) ha scritto:

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

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

Accedere per lasciare un commento.