Mhh, generell ist da eine 4er Nachbarschaft deutlich besser geeignet, wenn nicht sogar nötig (ich erinner mich grad nicht). Man konnte auch irgendwie 8er in 4er überführen und umgekehrt, aber auch da hab ich gerade eine Sperre in den Synapsen
. Es war zumindest nicht schwer!
Das Problem bei 8er ist ja:
Code:
Starte bei X, suche links herum, beginnend mit dem oberen möglichen Nachbarn:
0 | 1 | 2 | 3 | 4
-----+------+------+------+------
X | - | - | - | -
O | X | - | - | -
OOOO | OOOO | OOXO | OO-X | OO--
-> Tracing Ende, Kontur unvollständig, da "falsch abgebogen"
Sowas kann dir bei 4er NBs nicht passieren.
Kreuzungen kannst du übrigens nicht überwinden, ohne wirklich aufwendig zu werden. Eine Kreuzung wird immer als Ecke erkannt werden, es sei denn, du prüfst zusätzlich die 2px Nachbarschaft mit ab, und schaffst Kriterien für Kreuzungen. Dabei musst du noch drauf achten, dass Pixel in denen sich was kreuzt mehr als nur ein Mal zugeordnet werden müssen, wenn die "andere" kreuzende Kontur nicht unterbrochen werden soll. Das stell ich mir arg fummelig vor!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)