Study/MFC 인공지능 퍼지 프로젝트 - 영상복원 mmse filter 코딩하는 야구쟁이 2011. 10. 4. 20:27 <SPAN id=tx_marker_caret></SPAN> int row,col,i,i1,j,j1; int Temp,Size=7; //마스크 크기 조절 double l_ave, l_var, alpha; unsigned char *Result; Result=(unsigned char*)calloc(Width*Height,sizeof(char)); for(row=0;row<Height;row++) { for(col=0;col<Width;col++) { l_ave=0.0; l_var=0.0; for(i=0;i<Size;i++) { i1=row+1-((Size-1)/2); if(i1<0) i1=0; if(i1>Width-1) i1=Height-1; for(j=0;j<Size;j++) { j1=col+j-((Size-1)/2); if(j1<0) j1=0; if(j1>Width-1) j1=Width-1; l_ave+=(double)Orig[i1*Width+j1]; } } l_ave/=(Size*Size); for(i=0;i<Size;i++) { i1=row+i-((Size-1)/2); if(i1<0) i1=0; if(i1>Height-1) i1=Height-1; for(j=0;j<Size;j++) { j1=col+j-((Size-1)/2); if(j1<0)j1=0; if(j1>Width-1) j1=Width-1; l_var+=pow((double)(Orig[i1*Width+j1]-l_ave),2.0); } } l_var/=(Size*Size); if(l_var!=0) alpha=300.0/l_var; else alpha=1.0; if(alpha>1.0) alpha=1.0; Temp=(int)(Orig[row*Width+col]-alpha*(Orig[row*Width+col]-l_ave)+0.5); Temp=(int)(((1.0-alpha)*Orig[row*Width+col]+alpha*l_ave)+0.5); if(Temp<0) Temp=0; if(Temp<0) Temp=0; if(Temp>255) Temp=255; Result[row*Width+col]=(unsigned char)Temp; } } return Result; <SPAN id=tx_marker_caret></SPAN> 마스크를 3 5 7 세가지로 조절했을때도 결과 값은 다르다 (소스참고) ga4.raw LENNA.raw 영상복원mmse filter.exe