No screenshot, sorry, this is something I tried years ago.
The normal is the direction a surface is facing. Imagine each of the greyscale colours is a point on a height map. Then because a white is higher than a neighbouring grey, the normal won't point straight up out of the ground, it'll be sloped towards the grey one.
So you can generate some crude looking normals and add them all together. The 8 normals look like
R2 = sqrt(2)/2
These are the 8 normals, they have coordinates
\|/
-+-
/|\
R2,y0,-R2
0,y1, -1
-R2,y2,-R2
1,y3, 0
-1,y4, 0
R2,y5, R2
0,y6, 1
-R2,y7, R2
And all those y coordinates are calculated like
di = i0 - in
where i0 is the intensity of the centre pixel and in is the intensity of the neighbour
Then
yn = sqrt(1 - di^2)
Add all 8 normals together and then re-normalise the result, ie.
length = sqrt(nx^2+ny^2+nz^2)
nx = nx/length
ny = ny/length
nz = nz/length
That gives you the normal at the given pixel.
Jim