How to find local maxima regions in grayscale image ?


I’m working in a multitouch setup, in which I have to find “pressure points” in a grayscale image coming from a kinect.

The pressure points can be seen as regions of pixels whose value is higher than all the surronding pixels of that area. You can see two maxima local regions in the attached images as an example of what I’m looking.

Does anyone knows an approach in how to find all possible local maxima regions of pixels in a given grayscale image?

I found the “h-dome” reconstruction algorithm here:, but it looks hard to implement.

Thanks so much!

you usually use some adaptive thresholding. opencv has some functions for this.

Hola Arturo,

Thanks for your quick answer.

I don’t think I could use thresholding here, as there could be 1 up to 5 differents regions of pressure, each one with a different grayscale value, so, thresholding in one value or range can erase the other lower regions.

I have posted another image to show what I’m looking to in 2D. I know it maybe solved calculating derivatives of the image and finding where they are 0, but it gives too many points of the image to look into.

adaptative thresholding should take care of different levels and find local maxima or minima depending on your setup. and usually and it’s fast enough to be used in real time. it’s what every multitouch setup i know uses for detecting fingers

The installation I’m working on is more a “multi-pressure” thing, as people will press with hands an elastic screen, so the kinect will be receiving the deformation of the elastic.

I’m interested in getting where they are pressing and how much.

I think I’ll try to get the pressure points through IR light and then the pressure with the kinect depth image.