项目记录-圆形边缘修正方法探索3

问题:
对圆形边缘做完凸包修正之后,得到的是边缘上一堆孤立的点,其中存在一些点偏离了中心较远,需要进行修正。

方法:从圆心向每个点移动,只要遇到非mask标记点,则替换当前边界点。

结果:实践效果不好,多个孤立点被替换之后,容易重合为同一点。


    for(int j=0;jint sx=centerx-vecResult[j].x;
        int sy=centery-vecResult[j].y;
        int maxmove=max(abs(sx),abs(sy));
        if(sx!=0)sx=sx/abs(sx);
        if(sy!=0)sy=sy/abs(sy);
        int newx=centerx-sx;
        int newy=centery-sy;
        int pos=newy*sWidth+newx;
        while(pMaskBuf[pos] && maxmove)
        {
            newx -= sx;
            newy -= sy;
            pos = newy*sWidth+newx;
            maxmove--;
        }
        vecResult[j].x=newx;
        vecResult[j].y=newy;
    }

你可能感兴趣的:(项目问题记录)