blob: 5dbd75ea6182e7419fad27b42f5d4b7eab678b95 (
plain) (
tree)
|
|
#include "dcp_core.h"
void CalcRecover(IplImage *result, IplImage *input, IplImage *transmission, double A[])
{
int height = input->height;
int width = input->width;
int widthstep = input->widthStep;
int gwidthstep = transmission->widthStep;
int nch = input->nChannels;
double t0 = 0.1;
double t, tmp_res;
int i, j, k;
int e = 0, number = 0;
double a = 0;
A[0] /= 255.0;
A[1] /= 255.0;
A[2] /= 255.0;
for (i = 0; i < height; i++)
{
for (j = 0; j < width; j++)
{
t = *(uchar *)(transmission->imageData + i * gwidthstep + j);
t /= 255.0;
for (k = 0; k < 3; k++)
{
a = *(uchar *)(input->imageData + (i) * widthstep + (j) * nch + k);
a /= 255.0;
tmp_res = ((a - A[k]) / MAX(t, t0)) + A[k];
if (tmp_res > 1)
tmp_res = 1;
else if (tmp_res < 0)
tmp_res = 0;
*(uchar *)(result->imageData + (i) * widthstep + (j) * nch + k) = tmp_res * 255.0;
}
}
}
}
|