通过正极点的平均值对偏移正极点进行拟合

来源:互联网 发布:国内上google 知乎 编辑:程序博客网 时间:2024/05/01 06:01

最近在找点的过程中,发现正极点会出现部分点的偏移,从而影响最终的结果,所以通过正极点的平均值来进行判断,对于正极点进行拟合。

int i,j;

int anodey;

int sumpointy=0,meananodey;

int sizeanodes = anode.size();

//求正极点y值的平均值

for(i=0;i<sizeanodes;i++)

{

anodey=anode[i].y;

sumpointy=sumpointy+anodey;

}

meananodey=sumpointy/sizeanodes;

//对正极点进行遍历,对于过高或者过低的点进行调整

for (j=0;j<sizeanodes;j++)

{

          anodey=anode[j].y;
          if (j==0)
          {
                 if(abs(anodey-meananodey)>15&&abs(anodey-anode[j+1].y)>15)
                 {
                      anode[j].y=(anode[j+1].y+anode[j+2].y)/2;
                 }
                 continue;
          }
         else if (j==sizeanodes-1)
         {
                if(abs(anodey-meananodey)>15&&abs(anodey-anode[j-1].y)>15&&abs(anodey-anode[j-2].y)>15)
                {
                      anode[j].y=(anode[j-1].y+anode[j-2].y)/2;
                }
                else
               {     
                      return 0;
               }
        }
        else if (j==sizeanodes-2)
        {
               if(abs(anodey-meananodey)>15&&abs(anodey-anode[j-1].y)>15&&abs(anodey-anode[j+1].y)>15)
               {
                     anode[j].y=(anode[j-1].y+anode[j-2].y)/2;
               }
                     continue;
        }
        else
        { 
               if(abs(anodey-meananodey)>=12&&abs(anodey-anode[j-1].y)>12&&(abs(anodey-anode[j+2].y)>12||abs(anodey-anode[j+3].y)>12||abs(anodey-anode[j+7].y)>10))
              {
                       if (abs(anodey-meananodey)>12&&abs(anodey-anode[j-1].y)>12&&abs(anodey-anode[j+2].y)>12)
                      {
                              anode[j].y=(anode[j-1].y+anode[j+2].y)/2;
                      }
                      else if (abs(anodey-meananodey)>12&&abs(anodey-anode[j-1].y)>12&&abs(anodey-anode[j+3].y)>12)
                      {
                              anode[j].y=(anode[j-1].y+anode[j+3].y)/2;
                      }
                      else if (abs(anodey-meananodey)>=12&&abs(anodey-anode[j-1].y)>12&&abs(anodey-anode[j+7].y)>10)
                     {
                              anode[j].y=(anode[j-1].y+anode[j+7].y)/2;
                     }
             }
             continue;
      }

 }

原创粉丝点击