moments(the_image, out_image,
rows, cols,
rows_size, cols_size,
il, ie,
first_moment, second_moment,
variance, sigma)
short il, ie,
**the_image,
**out_image;
long rows, cols,
rows_size, cols_size;
float *first_moment, *second_moment,
*sigma, *variance;
{
int i, j;
int csd2, rsd2;
float mean;
unsigned long count, sum1, sum2;
char response[80];
rsd2 = rows_size/2;
csd2 = cols_size/2;
if(((il+rsd2) > rows) ||
((ie+csd2) > cols) ||
((il-rsd2) < 0) ||
((ie-csd2) < 0)) {
printf("\nmoments> ERROR: OUT OF BOUNDS");
*first_moment = -1.0;
*second_moment = -1.0;
*variance = -1.0;
*sigma = -1.0;
} /* ends too big */
else{ /* else not out of bounds */
sum1 = 0;
sum2 = 0;
count = 0;
for(i=il-rsd2; i<il+rsd2; i++){
for(j=ie-csd2; j<ie+csd2; j++){
count++;
sum1 = sum1 + the_image[i][j];
sum2 = sum2 + the_image[i][j]*the_image[i][j];
} /* ends loop over j */
} /* ends loop over i */
*first_moment = (float)(sum1/count);
*second_moment = (float)(sum2/count);
mean = *first_moment;
*variance = *second_moment - mean*mean;
*sigma = sqrt(*variance);
} /* ends else not out of bounds */
} /* ends moments */