《算法的乐趣》——光栅矢量化软件编写一个图像预处理系统

图像预处理系统是干嘛的?

作者设计算法的思考过程:

算法的实现过程如下:

//搜索过程中存储相连点信息的数据结构
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);           
    
    
        }    
    
    
    }
    
}

猜你喜欢

转载自blog.csdn.net/u011436427/article/details/82048324
今日推荐