基于Hilditch算法和灰度重心法结合的VisualApplets仿真

一、算法流程

  1. 读取灰度图像,并将其二值化;
  2. 由Hilditch算法前4个条件判断条纹边界;

  3. 当前像素点P值为1,即不是背景;

  4. P的上、下、左、右邻居至少有一个值为0;

  5. P的八邻居中至少有两个值为1;

  6. P的8联通连接数为1。

  7. 确定条纹边界后,利用灰度中心法公式,计算灰度中心坐标;

 二、本算法提取光条纹中心总体程序图

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

三、图像二值化 

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

原始图像

基于Hilditch算法和灰度重心法结合的VisualApplets仿真 二值图像

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

设定阈值为200,去除噪点。通过scale_255将逻辑判断结果0/1转化为0/255,便于显示。

四、Hilditch四个条件判断

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

条件1:确保P点值为1。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

条件2:P[x-1,y]+P[x+1,y]+P[x,y-1]+P[x,y+1]≤255x3=765。确保上下左右邻居点不全为0。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

条件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。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

条件4:计算八联通连接数(邻域0、1、2,邻域2、3、4,邻域4、5、6,邻域6、7、0计算过程类似)。基于Hilditch算法和灰度重心法结合的VisualApplets仿真

由Hilditch四个条件判断获得条纹边界(封闭的)。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

得到封闭条纹边界:

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

五、灰度重心法

∑f(x,y)*y和∑f(x,y)计算结果都在帧数据的最后一行。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

利用IS_NotEqual控件和RemoveLine控件获取最后一行数据。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

分子分母相比(分母需要确保不为零),获得每列中心点坐标。

基于Hilditch算法和灰度重心法结合的VisualApplets仿真

得到每列条纹中心坐标:

基于Hilditch算法和灰度重心法结合的VisualApplets仿真