二值图像的目标识别技术
•
技术综合
摘要:目的是建立一种新的图像识别算法。方法是以Visual C++为开发平台 ,用C++语言实现了二值图像目标识别算法。结果该算法有效地实现了二值图像的目标识别。该算法采用局部搜索算法,减 少了时间消耗,提高了效率,并且能一次得到更多的信息,包括图像中目标的个数,每个目标的面积,形心,内、外环的个数 及每个内、外环的所有信息。
1 目标识别技术探讨
图1 二值图象探讨
2 二值图像探讨
- 实点和空点 实点为属于某个目标的点,空点为不属于所有目标的点。
- 内点和边界点 像素点在某个目标的内部,称为内点。即它至少有一个邻域包含在某个目标中。(像素点的最小邻域为以此点为中心,以一个像素单位为半径的区域)如果一个像素点不是实点,但它至少有一个邻域,这个邻域减去此点所形成的区域包含在某个目标中,我们把此点填充为实点(它成为内点,误差仅为一个像素)。在某个目标的边界称为边界点(即内点和实点的交集且减去毛刺点和孤立点中的点)。
- 毛刺点和孤立点 孤立点和毛刺点都为实点,但孤立点至少存在一个邻域,它减去此点后所形成的区域与目标的交集为空。毛刺点的这样的区域与目标的交集只有一个像素点。
3 数据结构
4 边界搜寻
- 找出一个边界点来,作为环头。对于任一个像素点可以建立一个坐标系,把相邻8个点逆时针顺序进行标记。(这里规定,如果邻点超出图像范围,一律为空点)如图1所示。由以上的定义可以看出,边界点必须为实点,并且其8个邻点至少有一个空点和一个实点,如果一个像素的8个邻点都为实点,则此像素为内点。如果一个像素的8个邻点都为空点,则为孤立点,可根据需要进行处理。(例如,可以去掉孤立点,相当于中值滤波)。搜寻图像,直到找出一个边界点。作为环头,并做记录。
- 以环头为起点,进行环的生成:①以环头为环中的第一个边界点,建立(1)所述的坐标系,并且定义邻点0—7,规定邻点I的前点为I-1,后点为I+1,如果I为0,则其前点为7,如果I为7,其后点为0:使其8个邻点形成一个逆时针的环。②搜寻和边界点相邻的下一个边界点。从其邻点0开始,按0—7的顺序依次确定其各邻点的特征:1.空点2.出点3.入点4.实点。规定出点为它的前点为实点,后点为空点的像素点,入点为它的前点为空点,后点为实点的像素点。(0点的前点为7点,7点的后点为0点。)(一般一个边界点所有邻点中只有一个出点和入点。否则,其邻点中必有毛刺点,可以进行特殊处理)。③以边界点搜寻的第一个入点为下一个边界点,并对此点作标记,返回b,直到边界点N的下一个边界点为环头。于是我们生成了一个环。这是一个链表结构,其每个节点(边界点)的位置和节点总数N都可以知道。对环数加1。进行第(3)步。
- 寻找下一个没有经过标记且为边界点的像素,返回(1)重新进行环的生成,直到图像中没有既是边界点又没有被标记的点。到此,我们生成了所有的环(边界)。
图2 内外环的特性
5 边界处理
- 环L的面积S→L S→L=1∮LKm→×dl→(其中K为平面上任意一点)2(1)
- 其证明可以用格林公式进行证明(参看郑军所著《表面离散数据的三维体重构及其应用(华北工学院硕士论文)》
- 定义qLK为环L对点K的环角,则有 qLK=∮L(Km→× dl→)/|Km→|(2)
- 可以证明,当K在环外时,q
LK为零,当K在外环内时,qLK为2p,当K在内环内时,qLK为-2p。- 对于外环其面积为负,内环为正。所以从其面积的正负可以判断环的类型。
- 可以证明,当K在环外时,q
6 环的重组和目标生成
- 在所有的环中选取一个外环(并作标记),判断与其它的内环的关系。在没有标记的内环上选取一点(通常选取其环头)K连接Km(m 为外环上的点),计算(如图2所示)K点和此外环的环角,并根据环角值判断K点是否在外环内。因为假定了环与环没有相交,所以,如果K点在外环内,则K点所在的内环必然位于外环内。对在外环内的内环作标记。(表示其内环已经有归属)(对于离散计算,必须考虑计算容差)。
- 取下一个外坏,直到所有的外环都处理完毕。
7 本算法的特点
作者:西部车床,如若转载,请注明出处:https://www.lathe.cc/2023/11/3735.html