/*Intcorr: This routine performs the intensity correction. Each float variable in buffer is multiplied by the corresponding one in intcorr. The image is assumed to by size*size floating point variables. Written by Sandor L. Barna, December 1993. */ #include <string.h> #include <stdio.h> #include <stdlib.h> #include "objects.h" void intenscorr(float *buffer,float *intcorr,int size, struct oblparams *params) { int i,j; int index; float f_saturated,test_satd; f_saturated = params->satn_level; test_satd = f_saturated - 0.4; printf("On line: "); fflush(stdout); for (i=0;i<size;i++) { for (j=0;j<size;j++) { index=i*size+j; if (buffer[index]<f_saturated) buffer[index] *= intcorr[index]; if (buffer[index]>test_satd) buffer[index]=f_saturated; } if (i%100 == 0) { printf("%d ",i); fflush(stdout); } } printf("\n"); return; } void intenscorr_int(unsigned short int *i2buffer,float *intcorr,int size, struct oblparams *params) { int i,j; int index; unsigned short int i2_satd; float f_saturated, rhold; f_saturated = params->satn_level; i2_satd = f_saturated; printf("On line: "); fflush(stdout); for (i=0;i<size;i++) { for (j=0;j<size;j++) { index=i*size+j; if (i2buffer[index]<i2_satd) { rhold = i2buffer[index]; rhold *= intcorr[index]; i2buffer[index] = rhold; } } if (i%100 == 0) { printf("%d ",i); fflush(stdout); } } printf("\n"); return; }