www.pudn.com > src.rar > nhwfm.c
#include#include"tch.h" #define pi 3.141592654 static void sort(int array[], int n) { int i, j; int t; for(i=0; i array[j]) { t=array[i]; array[i]=array[j]; array[j]=t; } /* for(i=0; i region; if(roi==NULL) return; lx=roi->lx; ux=roi->ux; ly=roi->ly; uy=roi->uy; width=im->width; height=im->height; hRow=(int *)malloc(sizeof(int)*(ux-lx)); imageBuf1=int_matrix_alloc(height, width); imageBuf2=int_matrix_alloc(height, width); imageBuf3=int_matrix_alloc(height, width); index=db_matrix(height, width); for(i=ly; i t1) index[i][j]=4774.235939*pow(pi*39.9*39.9, -0.25)*exp(-(imageBuf2[i][j]-130.0)*(imageBuf2[i][j]-130.0)/(2*39.9*39.9)); else if (imageBuf2[i][j]>=t2&&imageBuf2[i][j]<=t3) index[i][j]=469.964662*pow(pi*8.7*8.7, -0.25)*exp(-(imageBuf2[i][j]-207.0)*(imageBuf2[i][j]-207.0)/(2*8.7*8.7)); else index[i][j]=4774.235939*pow(pi*39.9*39.9, -0.25)*exp(-(imageBuf2[i][j]-130.0)*(imageBuf2[i][j]-130.0)/(2*39.9*39.9)); } for(i=0; i =height||(j+t)>=width) continue; else if(imageBuf2[i+k][j+t]!=0) { array[n]=imageBuf2[i+k][j+t]; n++; } } if(n!=0) { sort(array, n); if(n%2==0) imageBuf3[i][j]=(int)((array[(n-1)/2]+array[n/2])/2); else imageBuf3[i][j]=array[(n-1)/2]; } else { sum=0.0; indexsum=0.0; for(k=-2; k<=2; k++) for(t=-2; t<=2; t++) { if((i+k)<0||(j+t)<0||(i+k)>=height||(j+t)>=width) continue; else { sum+=(double)imageBuf2[i+k][j+t]*index[i+k][j+t]; indexsum+=index[i+k][j+t]; } } if(indexsum!=0.0) imageBuf3[i][j]=(int)(sum/indexsum+0.5); else imageBuf3[i][j]=imageBuf2[i][j]; } } else imageBuf3[i][j]=imageBuf2[i][j]; } /*for(i=0; i