Assuming that's a terrain map and not a heightmap you've generated (since I see what looks like sand, grass, snow, rock)...
See AmitP's page on procedural terrain generation. He goes into this in some detail. Of course, he doesn't use Perlin noise, but a different approach. However, the general idea is the same: You need to determine the straight skeleton, which is like an edge-centroid for a non-convex polygon such as your landmass. There are a number of ways you can go about the general idea though. Given that you have a Perlin noise bitmap, you might simply detect any land-based pixels, and determine their distance from the nearest pixel of the ocean water body only (not lakes). Then you will know where the "spine" of the island should lie. Using that information, you can evaluate inland lakes individually and modify the perlin noise map accordingly to create height gradients. Only once you have done this, will you be able to set your lake's water surface levels.
You don't have to throw this approach away. But you will need to do a whole lot more work if you want to turn this into a height map. Usually, Perlin is used to generate the heightmap, as such, and you produce the terrain types from there. But nothing says you can't do it the other way around (again, see straight skeleton formation). This would involve:
- Use your existent terrain bitmap to generate a heightmap which is greyscale only. At this stage, you will only have two colours: Black, and one shade of grey. Your one shade of gray would represent a single uniform height across your island, black would represent the sea.
- Using the straight skeleton, determine distance from the shore per grey pixel, and change the shade of grey to set it's height accordingly (i.e. distance from beach is very low and is a very dark gray, almost black, whereas pixels close to the spine are white).
- You'd then need to perturb each one up or down slightly (darker or lighter shade of white) to get a more organic feel to the whole terrain.
All in all, I agree with RoyT -- It's not so easy to use what you have done as a heightmap, only as a terrain/biome map.
Re getting lake surfaces at correct heights, there are more realistic (and more complex) approaches. Fluid dynamics approaches such as cellular automata could get you a lot further in this regard.