基于Hilditch算法和灰度重心法结合的VisualApplets仿真
一、算法流程
- 读取灰度图像,并将其二值化;
-
由Hilditch算法前4个条件判断条纹边界;
-
当前像素点P值为1,即不是背景;
-
P的上、下、左、右邻居至少有一个值为0;
-
P的八邻居中至少有两个值为1;
-
P的8联通连接数为1。
-
确定条纹边界后,利用灰度中心法公式,计算灰度中心坐标;
二、本算法提取光条纹中心总体程序图
三、图像二值化
原始图像
二值图像
设定阈值为200,去除噪点。通过scale_255将逻辑判断结果0/1转化为0/255,便于显示。
四、Hilditch四个条件判断
条件1:确保P点值为1。
条件2:P[x-1,y]+P[x+1,y]+P[x,y-1]+P[x,y+1]≤255x3=765。确保上下左右邻居点不全为0。
条件3:八邻域至少2个值为1。P[x-1,y]+P[x+1,y]+P[x,y-1]+P[x,y+1]+P[x-1,y-1]+P[x-1,y+1]+P[x+1,y-1]+P[x+1,y+1]≥510。
条件4:计算八联通连接数(邻域0、1、2,邻域2、3、4,邻域4、5、6,邻域6、7、0计算过程类似)。
由Hilditch四个条件判断获得条纹边界(封闭的)。
得到封闭条纹边界:
五、灰度重心法
∑f(x,y)*y和∑f(x,y)计算结果都在帧数据的最后一行。
利用IS_NotEqual控件和RemoveLine控件获取最后一行数据。
分子分母相比(分母需要确保不为零),获得每列中心点坐标。
得到每列条纹中心坐标: