I doubt it's faster but on the surface (image) you can try imregionalmax() or imtophat().
And it looks like you have only 2-D data. You have a value for each x and y. Two indexes (x and y) so 2-D, despite the fact that you render it in a 2.5D surface.
Your corss sectional plot is 1-D, not 2-D. You have only one independent variable (the x position) and a value for that position. So again, one index means one dimension, and it can be represented by a 1-D vector.