/*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;
}