| 
				 3  核心代码 
//////////////////////////灰度值计算 
    min=65535;   
    float d0=0.5227,dmax=0.0; 
    for(i=0;i<height;i++)//窗口移动,i,j为窗口中心 
        for(j=0;j<width;j++) 
        {   PP[i*width+j]=AA[i*width+j]; 
            if((i>=m0)&&(j>=n0)&&(i<height-m0)&&(j<width-n0)) 
           {int m,n;     
            int k,l; 
            int Imax,z=0; 
            int I[7]={9,9,9,9,9,9,9};//因窗口只有8个,预先赋值9以在判断时方便区分 
            for(m=m0;m>1;m--)//窗口缩小循环 
            {n=m; 
             float u=uu(AA,i,j,m,n,width);//窗口均值 
             int d1=0; 
            for(k=i-m;k<=i+m;k++) 
                for(l=j-n;l<=j+n;l++) 
                {d1+=(AA[k*width+l]-u)*(AA[k*width+l]-u);} 
               d1=d1/(2*m+1)/(2*n+1);//窗口方差 
             if(d1<d0*u*u) 
             {PP[i*width+j]=int(u+0.5); 
             break;}//判断是否符合整个区域均值滤波条件 
             float u0[8]={0},d[8]={0},d11[8]={0};//累加数组置零 
            //计算各区域在未删减之前的均值和方差 
            for(k=i-m;k<i;k++) 
                for(l=j+k-i;l<j;l++) 
                {u0[0]+=AA[k*width+l];} 
                u0[0]=u0[0]/(2*m+1)/(2*n+1)*8; 
            for(k=i-m;k<i;k++) 
                for(l=j+k-i;l<j;l++) 
                {d11[0]+=(AA[k*width+l]-u0[0])*(AA[k*width+l]-u0[0]);} 
                d11[0]=d11[0]/(2*m+1)/(2*n+1)*8; 
            //////////////////////////// 
            for(k=i-m;k<i;k++) 
                for(l=j-k+i;l<j;l++) 
                {u0[1]+=AA[k*width+l];}                 u0[1]=u0[1]/(2*m+1)/(2*n+1)*8;			
				 |