Algoritmo da vizinhança de moore

Pessoal achei em um site um algoritmo que pretendo realizar alguns testes, só o detalhe que além de estar em inglês, não entendi nada de como funciona o algoritmo:
vou postar o algoritmo, e se alguem tiver um pequeno entendimento dele, e ajudar eu agradeço:

The following is a formal description of the Moore-Neighbor tracing algorithm:
Input: A square tessellation, T, containing a connected component P of black cells.
Output: A sequence B (b1, b2 ,…, bk) of boundary pixels i.e. the contour.

Define M(a) to be the Moore neighborhood of pixel a.
Let p denote the current boundary pixel.
Let c denote the current pixel under consideration i.e. c is in .

Begin
[color=white]—[/color]Set B to be empty.
[color=white]—[/color]From bottom to top and left to right scan the cells of T until a black pixel, s, of P is found.
[color=white]—[/color]Insert s in B.
[color=white]—[/color]Set the current boundary point p to s i.e. p=s
[color=white]—[/color]Backtrack i.e. move to the pixel from which s was entered.
[color=white]—[/color]Set c to be the next clockwise pixel in .

[color=white]----[/color] While c not equal to s do
[color=white]------[/color] If c is black
[color=white]------[/color] insert c in B
[color=white]------[/color] set p=c
[color=white]------[/color] backtrack (move the current pixel c to the pixel from which p was entered)
[color=white]----[/color] else
[color=white]------[/color] advance the current pixel c to the next clockwise pixel in
[color=white]----[/color] end While
End

aqui tem o link de demonstração do funcionamento do algoritmo
http://www.imageprocessingplace.com/downloads_V3/root_downloads/tutorials/contour_tracing_Abeer_George_Ghuneim/moore.html