算法流程
首先要反转原图像,因为算法之后所有的操作都将0作为前景,将1作为背景。
中心像素x_1(x,y)的8-近邻定义如下所示:
考虑以下两个步骤
步骤1:执行光栅扫描并标记满足以下5个条件的所有像素:
这是一个黑色像素;
顺时针查看x2、x3、...、x9、x2时,从0到1的变化次数仅为1;
x2、x3、...、x9中1的个数在2个以上6个以下;
x2、x4、x6中至少有1个为1;
x4、x6、x8中至少有1个为1;
将满足条件的所有像素标为1
步骤2:执行光栅扫描并标记满足以下5个条件的所有像素:
这是一个黑色像素;
顺时针查看x2、x3、...、x9、x2时,从0到1的变化次数仅为1;
x2、x3、...、x9中1的个数在2个以上6个以下;
x2、x4、x8中至少有1个为1;
x2、x6、x8中至少有1个为1;
将满足条件的所有像素标为1
反复执行步骤1和步骤2,直到没有点发生变化。
python实现:
import cv2
import numpy as np
import matplotlib.pyplot as plt
# Zhang Suen thining algorythm