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; iarray[j])
			{
				t=array[i];
				array[i]=array[j];
				array[j]=t;
			}
/*	for(i=0; iregion;
	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; it1) 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