background image

  式中,

p(i,j)是图像在(i,j)处的灰度值;w(i,j)是灰度值 p(i,j)的权重系

数,一般取

w(ij)=1.0。 

  (

3)计算新阈值 

  (

4)若 ,程序结束,得到最后的 即为最佳阈值 T,否则, 

  返回步骤(

2)。 

  

2.4 图像特征与分析 

  

2.4.1 边界提取 

  根据边界的定义,二值图像边界提取的算法非常简单,就是掏空内部点。所谓内部点就
是其

8-邻域的全部点都属于这个区域的点。所以,如果原图中有一点为黑,且它的 8-邻域

点全部为黑色时,则判定该点为内部点,从而将该点修改为白色背景点。

5】工件进行边界

检测后的图像如图

9 所示。 

  图

9 目标工件及工件边缘检测结果 

  

2.4.2 轮廓跟踪 

  轮廓跟踪算法步骤如下:

 

  

1)按自下而上从左到右的顺序搜索,找到第一个值为 1 的点。它就是最左下方的边界

点,记为

A。 

  

2)序号 k=0.以 A 为起点,检查 A 的 Director[k]方向的下一个像素点的值,如果其值为

1,则它为边界点,将此点存入边界点组,并设置 k=(k-2)mod8,以此点为起点在方向
Director[k]继续搜索边界点,否则,k=(k+1)mod8,搜索 Director[k]方向的点。 
  

3)若搜索到的点等于起点 A,则程序结束。 

  

2.4.3 区域形心位置 

  物体的重心坐标

 可用下式计算 

  对于二值图像,灰度只有

0 和 1, 

  重心就是形心。如下图

10 所示。 

  图

10 目标原件及形心结果示意图 

  如下是定位形心的部分编写程序:

 

  

// 循环变量 

  

int i, j; 

  

m00 = 0; m10 = 0; m01 = 0; 

  

//计算 0-1 阶矩 

  

for (j = 0; j < ih; j++) 

  

  

for (i = 0; i < iw; i++) 

  

  

if (bw[i, j] == 0) continue; 

  

//计算 0 阶矩 

  

m00 += bw[i, j]; 

  

//计算 1 阶矩 

  

m10 += i * bw[i, j]; 

  

m01 += j * bw[i, j]; 

  

  

  

//计算形心坐标 

  

centerxy[0] = (int)(m10 / m00);