void adaptivemedian(mmimage *image_input, int MAX)

{

int M=3;

int i, j ,k;

mmimage* image_padding;

image_padding = alloc_mmimage(image_input->height+2*(M-1),image_input->width+2*(M-1),image_input->nChannel);

mmimage* image_temp;

image_temp = alloc_mmimage(image_input->height+2*(M-1),image_input->width+2*(M-1),image_input->nChannel);

double A1,A2,B1,B2;

int padding_H = image_input->height+2*(M-1);    

int padding_W = image_input->width+2*(M-1);

int index_x = 0;

int index_y = 0;

double temp = 0;

double *padding1Darray;

padding1Darray = (double*)calloc(image_input->nChannel*padding_H*padding_W,sizeof(double));



//이미지를 padding 시켜줌

for( i = 0 ; i < image_input->height ; i++)

for( j = 0 ; j< image_input->width ; j++)

for( k = 0 ; k<image_input->nChannel ; k++)

 image_padding->imageArray[i+(int)M-1][j+(int)M-1][k] = image_input->imageArray[i][j][k];





//2차 배열을 1차 배열로 변경해줌

for(index_y = 0 ; index_y<padding_H-M; index_y++)

{

 for(index_x = 0 ; index_x<padding_W-M; index_x++)

 {

for( k = 0 ; k < image_input->nChannel ; k++)

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

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

{  

if(index_x+M>padding_W && index_y+M>padding_H)

padding1Darray[i*M+j+k] = image_padding->imageArray[i+padding_H-M][j+padding_W-M][k];

if(index_x+M>padding_W)

padding1Darray[i*M+j+k] = image_padding->imageArray[i+index_y][j+padding_W-M][k];

if(index_x+M>padding_W&&index_y+M>padding_H)

padding1Darray[i*M+j+k] = image_padding->imageArray[i+padding_H-M][j+index_x][k];


                padding1Darray[i*M+j+k] = image_padding->imageArray[i+index_y][j+index_x][k];


}

       // 정렬 median값을 구해주기

     quickSort(padding1Darray,M*M);

 A1 = padding1Darray[(M*M-1)/2]-padding1Darray[0];

 A2 = padding1Darray[(M*M-1)/2]-padding1Darray[M*M-1];

if(A1>0 && A2<0)

{

B1=padding1Darray[i*M+j]-padding1Darray[0];

B2=padding1Darray[i*M+j]-padding1Darray[M*M-1];

if(B1>0 && B2<0)

{

  image_temp->imageArray[index_y+(M-1)/2][index_x+(M-1)/2][k]=padding1Darray[i*M+j];

  M=3;

}

else

{

image_temp->imageArray[index_y+(M-1)/2][index_x+(M-1)/2][k] = padding1Darray[(M*M-1)/2];

M=3;

}

}

else

{

if(M<MAX)

{

  M=M+1;

  index_x--;



}

else

{

image_temp->imageArray[index_y+(M-1)/2][index_x+(M-1)/2][k]=padding1Darray[(M*M-1)/2];

M=3;

}


}


 

}

write_mmimage("어댑티브.jpg",image_temp);

}







이거구현할라고한건데 왜안댈까여....