1. 算法目的:
连通域分析算法的目的就是对二值图像进行分析,计算出在每帧图象上目标(这里是人)的位置。这里主要扩充了游程码的思想,将相互毗邻的值为“1”的像素点归结到同一个连通域中,不相互毗邻的点归结到不同的连通域中,并用矩形盒把所有的连通域包围起来,最后得出包围盒得左上、右下顶点坐标,连通域的面积、质心等特征值。
l 难点:
① 如何在求连通域过程中同时确定连通域的质心;
② 系统固有噪声,以及人所携带得小目标干扰可能会导致误识别,产生误差。这一点可以通过给连通域的面积设定阀值的方法在一定范围内校正。
l 缺点:
无法解决多个人粘连到一起的情况,这时,多个粘连的人会被划分到同一个连通域中,引起记数误差。该算法无法正确处理这种情况,初步准备在该算法之后用其他算法解决。
2.算法描述:
l 算法接口
① 输入:int data(int width,int height);
② 输出:struct boxlist* arealist
l 数据结构
① 连通域链表arealist*
用来存储连通域分析处理好的,最终结果中的连通域包围盒。
struct box* arealist
② 当前扫描段链表boxlist*
用来存储正在处理的包围盒。
struct box{
int boxX1, boxY1 ; /*包围盒左上顶点的坐标*/
int boxX2,boxY2 ; /*包围盒右下顶点的坐标*/
int area ; /*该连通域的面积,即点数*/
float centerX,centerY ; /*质心的坐标*/
struct box* next ; /*指向链表的下一个节点*/
int flag ; /*

连通域分析算法用于二值图像处理,旨在识别目标位置。通过游程码扩展,将相邻的1像素点归为同一连通域。算法难点包括质心计算和噪声干扰处理。算法缺点是无法处理多人粘连的情况。算法流程包括数据扫描、合并相邻段、计算质心、过滤小目标。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



