递归函数求连通域
来源:互联网 发布:java新闻发布系统 编辑:程序博客网 时间:2024/06/05 06:11
本文主要介绍:利用递归函数,求四连通和八连通邻域。
一、变量定义
1.定义邻域类型
int m_linkType = 4 // 4表示4连通邻域 8表示8连通邻域
2.定义搜寻方向
POINT posDir[8];posDir[0].x=0; posDir[0].y = -1; //上posDir[1].x=0; posDir[1].y=1; //下posDir[2].x=-1; posDir[2].y=0; //左posDir[3].x=1;posDir[3].y=0; //右posDir[4].x=-1; posDir[4].y=-1; //左上posDir[5].x=1;posDir[5].y=-1; //右上posDir[6].x=-1;posDir[6].y=1; //左下posDir[7].x=1;posDir[7].y=1; //右下
二、对某一点求连通域函数
/******************************************************************功能:对某个像素点,用递归函数求连通域参数:Inimg :输入图像矩阵Flag :像素点有没有遍历过标志 0 表示没有 非0表示有 如果对连通域编号,可以赋值为编号值 row :像素点行col :像素点列Width :图像矩阵宽Height:图像矩阵行Value :起始点像素值******************************************************************/void ConnectRegion(unsigned char *Inimg,unsigned char *Flag,int row, int col,int Width,int Height,int Value){if(row<0||row>=Height||col<0||col>=Width) //如果该次遍历点的行列数,超出图像大小,return; //则结束本次调用int tIND2 = row*Width+col;if(Inimg[tIND2]!=Value||Flag[tIND2]!=0) //如果该次遍历点的像素值不等于起始像素点值,return; //或该点已遍历过,则结束本次调用Flag[tIND2] =1;//标记该点已遍历过,也可以赋值为联通域编号,非0即可//这里,可以得到与起始点连通的点的行列号 row col //可以根据需求,对行列号存储或计算连通域边界if(m_linkType==4)for(int i=0;i<4;i++)//递归搜寻连通域ConnectRegion(Inimg,Flag,row+posDir[i].y,col+posDir[i].x,Width,Height,Value);if(m_linkType==8)for(int i=0;i<8;i++)//递归搜寻连通域ConnectRegion(Inimg,Flag,row+posDir[i].y,col+posDir[i].x,Width,Height,Value);}
3.调用形式
//假定图像矩阵Inimg已知 Width:图像宽 Height:图像高unsigned char *Flag = new unsigned char[Width*Height];//初始化遍历标志ZeroMemory(Flag,sizeof(unsigned char)*Width*Height);int tIND1,tIND2;for(int i=0; i<Height; i++){tIND1 = i*Width;for(int j=0;j<Width;j++){tIND2 = tIND1 + j;if(Flag[tIND2]==0)//该点没有遍历过,即没有连通号ConnectRegion(Inimg,Flag,i,j,Width,Height,Inimg[tIND2]);//寻找与该点连通的区域}}
0 0
- 递归函数求连通域
- 递归函数求积
- 递归函数求二进制
- 递归函数求n!
- 递归求最大公约数的递归函数
- 用递归函数求阶乘
- 17_1_2递归求函数
- 运用函数递归求n!
- 【递归】求最大公约数(函数)
- 用递归函数求最大公约数
- 二值图像求连通域
- 给定0-1矩阵,求连通域
- matlab连通域处理函数
- 递归调用的方法求幂函数
- 运用递归函数求累加和
- c语言学习---------递归函数求阶乘
- 用递归函数求Fibnacci序列
- 递归求函数连乘的积
- Android 操作系统的内存回收机制
- Qt5官方demo解析集34——Concentric Circles Example
- 软键盘弹出问题
- hibernate 延迟加载
- 最近做Qt的一个界面需要按钮在没悬浮时背景是透明
- 递归函数求连通域
- 基础篇-5.27-反素数,准确对齐
- 1003. 我要通过!(20)
- 对于gabor变换和gabor小波变换理解与总结
- UVa 11076 Add Again(数学)
- php soap 使用
- PHP开发环境搭建及开发工具设置
- hive导数据到hbase
- Js判断键盘按键