www.pudn.com > src.rar
To Read all the content
[file head]:
#include"include.h"
#include"tch.h"
void wfm_proc(void)
{
Imrect *im;
Imregion *roi;
int lx, ux, ly, uy;
int height, width;
int type;
int i, j, k, t, n;
int *hRow, *arRow;
int hist[256]={0};
int rechist[256];
double temphist[256];
int r;
FILE *fp=NULL;
int g1, g2, gmin, min;
static double Cdk, Cmk, Cbk;
static int s1, s2, s3;
double u1, u2, u3, sigma1, sigma2, sigma3;
int **imageBuf1, **imageBuf2, **imageBuf3;
double t1, t2;
double **index;
double sum, indexsum;
if(stack_check_types(IMRECT, NULL)==false)
{
error("imcalc_sum: wrong types on stack", warning);
return;
}
im=(Imrect *)stack_pop(&amt;type);
roi=im->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<uy; ++i)
... ...
[file tail]:
... ...
)>=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];
}
/*for(i=0; i<height; i++)
for(j=0; j<width; j++)
printf(">d\t", imageBuf3[i][j]);
*/
for(i=0; i<height; i++)
for(j=0; j<width; j++)
im_put_pix(imageBuf3[i][j], im, i, j);
sum=0.0;
for(i=0; i<height; i++)
for(j=0; j<width; j++)
{
if(imageBuf3[i][j]!=0)
sum+=(double)(pow((imageBuf1[i][j]-imageBuf3[i][j]), 2));
indexsum+=(double)(imageBuf1[i][j]*imageBuf1[i][j]);
}
printf("sum=>f\t, NMSE=>f\n", sum, sum/indexsum);
indexsum=pow(256.0, 4);
printf("PSNR=>f\n", 10*log10(indexsum/sum));
mono_image_set(im);
stack_push(im, IMRECT, im_free);
free_int_matrix(imageBuf1, height);
free_int_matrix(imageBuf2, height);
free_int_matrix(imageBuf3, height);
free_db_matrix(index, height);
free(hRow);
}