Zhang X, Yan J, Feng S, et al. Water Filling: Unsupervised People Counting via Vertical Kinect Sensor[C]// IEEE Ninth International Conference on Advanced Video and Signal-Based Surveillance. IEEE, 2012:215-220.
将 Kinect 放在天花板上,朝向地面,由 Kinect 传感器生成RGB和深度图,深度信息是用来达到外观不变的目的。由于人头部到 Kinect 的距离总是比身体其他部位离得更近,人数计算的问题也就等价于寻找本地数据中 局部深度值最小的区域。根据深度图的特点,water-filling算法能鲁棒地标度不变地找到这些局部区域。
整体思路:
int createImgPath(char *path, int imgType, int seqNo);
//read a frame
int getAnRGBImgFrame(IplImage *img, int seqNo);
//读取文本型深度图信息
int txtDepthDataInput(int **f_depth_map, char path[]);
//黑区补偿处理
int txtDepthDataInputWithMask(int **f_depth_map, char path[]);
//将water filling 后的检测的结果转为图像
int saveBinaryDepthImage(int **depth_map, char path[]);
//计算联通区域的中心
int calcLabelCenter(int** labeled_depth_map, vector<Man> &manSet);
//绘制人头标记框图