Và S(p1) là số lần chuyển từ 0 sang 1 trong chuỗi (theo đúng thứ tự) p2, p3, ….., p7, p8, p2.
Bước 2: Ta giữ nguyên 2 điều kiện (a) và (b), nhưng thay (c) và (d) bằng (c’) và (d’) như sau:
(c’) p2 * p4 * p8 = 0 (d’) p2 * p6 * p8 = 0
Bước này được áp dụng cho tất cả mọi điểm biên trong vùng đang xét.
Nếu có ít nhất 1 trong 4 điều kiện (a) – (d) bị vi phạm, ta giữ nguyên giá trị điểm ảnh đó. Ngược lại, ta đánh dấu điểm ảnh đó và sau này nó sẽ bị xóa. Lưu ý rằng ta chỉ xóa điểm ảnh khi tất cả các điểm biên đã được duyệt qua, nhờ vậy dữ liệu không bị thay đối trong quá trình xử lý.
Sau khi thực hiện xong bước 1, ta xóa tất cả các điểm đã đánh dấu và thực hiện tiếp bước 2 giống như đã thực hiện cho bước 1. Như vậy, quá trình thực hiện là một vòng lặp liên tục gồm các giai đoạn sau:
+ Áp dụng bước 1 để đánh dấu điểm cần xóa. + Xóa các điểm đã đánh dấu.
+ Áp dụng bươc 2 để đánh dấu điểm. + Xóa các điểm đã được đánh dấu.
Thuật toán dừng khi không còn điểm nào được xóa nữa.
Điều kiện (a) bị vi phạm khi điểm biên p1 có 1 hoặc 7 điểm lân cận có giá trị 1. trường hợp 1 điểm lân cận đồng nghĩa với việc p1 là điểm cuối, và do đó không thể xóa được. Tương tự, trong trường hợp xét p1 có 7 điểm lân cận, nếu ta xóa nó sẽ gây ra lỗ hổng trong vùng đang xét. Điều kiện (b) không thỏa khi điểm đang xét nằm trên vùng biên có độ dày bằng 1, và do đó nếu xóa nó sẽ làm mất tính liên tục của đối tượng.
Còn một số trường hợp bị đứt nét thì ta phải nối, như hình 2.7 các điểm được đánh sẽ là các điểm nối.