int contour_fllowing(int *out_seg_img_update, int *C, int *C_new,
int X_image, int Y_image){
//input: out_seg_img_update:二值图像 X_image:图像的高 Y_image:图像的宽
//C:顺序存储的区域边界点的坐标,偶数存放每个点的横坐标,奇数存放每个点的纵坐标
//C_new: 去掉边界重复末尾点的坐标
int MAJ[8] = { 6, 6, 0, 0, 2, 2, 4, 4 };
//方向参数列表,非常巧妙地减少了遍历数据的冗余数据量
int contour_update_sum = 0;//边界追踪法计算的点数
int i, j; //图像区域点的索引
int k = 0;//边缘点计数,获得边缘点的总数目
int row = 0, col = 0;//记录第一个点的行,列值
int flag_end = 0; //进行边界寻找截止的条件,0:继续寻找 1:已经完成边界所有点的遍历
int direction = 4; //方向计数,初始值
int mod_result;//取余运算结果
int find_next;//每个边缘点寻找到相邻边缘点的截止条件,0:表示继续
1:截止
//1. 获取矩阵中第一个非零点的行列坐标值索引
for (i = 0; i < Y_image + 2; i++){
for (j = 0; j < X