图像预处理系统是干嘛的?
作者设计算法的思考过程:
算法的实现过程如下:
//搜索过程中存储相连点信息的数据结构
typedef struct tagRESULT
{
POINT pts[MAX_DIRTY_POINT];//记录搜索过的前5个点的位置,记录污点的位置
int count;
}RESULT;
count是搜索过程中发现的相连点的个数
pts是记录这些相连点位置的线性表
//先定义8个方向
POINT dir[]={{-1,0},{-1,-1},{0,-1}{1,-1},{1,0}{1,1},{0,1},{-1,1}}
void searchdirty(char bmp[MAX_BMP_WIDTH][MAX_BMP_HEIGHT],int x,int y,RESULT *result)
{
for(int i=0;i<sizeof(dir)/sizeof(dir[0]);i++)
{
int nx=x+dir[i].x;//该节点在新方向上的节点
int ny=y+dir[i].y;
//判断新点在图中且该点是污点
if((nx>=0 && nx<MAX_BMP_WIDTH) &&(ny>=0 && ny<MAX_BMP_HEIGHT) && (bmp[nx][ny])==1)
{
if(result->count<MAX_DIRTY_POINT)//小于5的话。。。。
{
//记录前MAX_DIRTY_POINT个点的位置
result->pts[result->count].x=nx;
result->pts[result->count].x=ny;
}
result->count++;
if(result->count>MAX_DIRTY_POINT)//如果5个点位置,就跳出本次循环
break;
searchdirty(bmp,nx,ny,result);
}
}
}