I'm trying to wrap my head around generating two dimensional perlin noise. I've been able to produce it in a single dimension however I don't understand how the interpolation works in two dimensions. This is what my octaves look like:

I know that I should interpolate the values and that will make the image smoother but I don't understand how to do that. I would like to use linear interpolation so could I get some help on the concept of how to do it?
Thanks.