int main (int argc, char *argv[]) { FILE *inAFile, *inBFile, *inMaskFile; FILE *outAFile, *outBFile; uint16_t bufA[BUFF_SIZE]; uint16_t bufB[BUFF_SIZE]; uint16_t bufMask[BUFF_SIZE]; int histoA[DSP_RANGE]; int histoB[DSP_RANGE]; int maskedHistoA[DSP_RANGE]; int maskedHistoB[DSP_RANGE]; //negative of A mask int count = 0; int maxA = 0; int maxB = 0; int maskedMaxA = 0; int maskedMaxB = 0; int minA = 60000; int minB = 60000; int maskedMinA = 60000; int maskedMinB = 60000; int blackPointA = 0; int blackPointB = 0; int whitePointA = 0; int whitePointB = 0; int clippedBlackA = 0; int clippedWhiteA = 0; int clippedBlackB = 0; int clippedWhiteB = 0; float averageA = 0; float maskedAverageA = 0; float maskedAverageB = 0; float stdDevA = 0; float maskedStdDevA = 0; float maskedStdDevB = 0; float averageB = 0; float stdDevB = 0; int offsetA = OFFSET_A; int offsetB = OFFSET_B; int maskedOffsetA = MASKED_OFFSET_A; int maskedOffsetB = MASKED_OFFSET_B; float sigmaA = SIGMA_A; float sigmaB = SIGMA_B; float maskedSigmaA = MASKED_SIGMA_A; float maskedSigmaB = MASKED_SIGMA_B; if (argc != 4) { printf("\nError: need infile and outfile"); exit(1); } outAFile = fopen("outA.dat", "w"); if (outAFile == 0) { printf("\nError: could not open shit"); exit (1); } outBFile = fopen("outB.dat", "w"); if (outBFile == 0) { printf("\nError: could not open shit"); exit (1); } //inAFile = fopen("rawB.dat", "r"); inAFile = fopen(argv[1], "r"); if (inAFile == 0) { printf("\nError: could not open inAfile"); exit(1); } printf("\n opening the file"); inBFile = fopen(argv[2], "r"); if (inBFile == 0) { printf("\nError: could not open inBfile"); exit(1); } //printf("\n opening the last file"); inMaskFile = fopen(argv[3], "r"); //printf("\n opened it "); if (inMaskFile == 0) { printf("\nError: could not open outfile"); exit(1); } printf("\ngot the right arguments all files opened"); // int k = 0; //while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) && // (count == fillBuff(bufMask, inMaskFile)) && // count != 0) ///////////////////////////////////////////////////dddddddddddddddddddd printf("\nstarting hard shit"); clearHisto(histoA); clearHisto(histoB); clearHisto(maskedHistoA); clearHisto(maskedHistoB); while (((count = fillBuff(bufA, inAFile)) != 0 ) && (fillBuff(bufMask, inMaskFile) != 0)) //while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) && // (count == fillBuff(bufMask, inMaskFile)) && // count != 0) { makeHisto (bufA, histoA, &maxA, &minA); makeMaskedHisto(bufA, bufMask, maskedHistoA, &maskedMaxA, &maskedMinA); } rewind(inMaskFile); while (((count = fillBuff(bufB, inBFile)) != 0 ) && (fillBuff(bufMask, inMaskFile) != 0)) //while ((count = fillBuff(bufA, inAFile)) == fillBuff(bufB, inBFile) && // (count == fillBuff(bufMask, inMaskFile)) && // count != 0) { makeHisto (bufB, histoB, &maxB, &minB); negateMask(bufMask); //mask fire makeMaskedHisto(bufB, bufMask, maskedHistoB, &maskedMaxB, &maskedMinB); //makeHisto (bufB, histoB, &maxB, &minB); //printf("\nread = %d", bufA[2]); //printf("\n maxA = %d, minA = %d", maxA, minA); //makeHisto (bufB, histoB, &maxB, &minB); //makeMaskedHisto(bufA, bufMask, maskedHistoA, &maxA, &minA); //makeMaskedHisto(bufB, bufMask, maskedHistoB, &maxB, &minB); } count = 0; int i; for (i=0;i<DSP_RANGE;i++) count += histoA[i]; printf("\nread %d pixels", count); averageA = averageHisto(histoA); maskedAverageA = averageHisto(maskedHistoA); maskedAverageB = averageHisto(maskedHistoB); averageB = averageHisto(histoB); stdDevA = stdDev(histoA, averageA); maskedStdDevA = stdDev(maskedHistoA, maskedAverageA); maskedStdDevB = stdDev(maskedHistoB, maskedAverageB); stdDevB = stdDev(histoB, averageB); printf("\nmaxA = %d minA = %d", maxA, minA); printf("\naverage A = %f", averageA); printf("\nstddev A = %f, sigmaA = %f, offsetA = %d", stdDevA, sigmaA, offsetA); printf("\nmaskedmaxA = %d maskedminA = %d", maskedMaxA, maskedMinA); printf("\nmasked average A = %f", maskedAverageA); printf("\nsmasked tddev A = %f, masked sigma = %f, masked offset = %d", maskedStdDevA, maskedSigmaA, maskedOffsetA); printf("\nmaxB = %d minB = %d", maxB, minB); printf("\naverage B = %f", averageB); printf("\nstddev B = %f, sigmab = %f, offsetb = %d", stdDevB, sigmaB, offsetB); printf("\nmaskedmaxB = %d maskedminB = %d", maskedMaxB, maskedMinB); printf("\nmasked average B = %f", maskedAverageB); printf("\nsmasked tddev B = %f, masked sigma = %f, masked offset = %d", maskedStdDevB, maskedSigmaB, maskedOffsetB); // buildLUT(histoA, averageA, stdDevA, offsetA, sigmaA); buildLUT(maskedHistoA, maskedAverageA, maskedStdDevA, maskedOffsetA, maskedSigmaA); //buildLUT(histoB, averageB, stdDevB, offsetB, sigmaB); buildLUT(maskedHistoB, maskedAverageB, maskedStdDevB, maskedOffsetB, maskedSigmaB); averageA = averageHisto(histoA); maskedAverageA = averageHisto(maskedHistoA); averageB = averageHisto(histoB); maskedAverageB = averageHisto(maskedHistoB); printf("\naverage A pixel value = %f", averageA); printf("\nmasked average A pixel value = %f", maskedAverageA); printf("\naverage B pixel value = %f", averageB); // printf("\nblackpoint A = %d, whitepoint A = %d", blackPointA, //whitePointA); //stretch the data rewind(inAFile); rewind(inBFile); // rewind(inMaskFile); while (((count = fillBuff(bufA, inAFile)) != 0 ) && (fillBuff(bufB, inBFile) !=0)) { //contrastStretch(bufA, histoA,&clippedBlackA, // &clippedWhiteA, outAFile); contrastStretch(bufA, maskedHistoA,&clippedBlackA, &clippedWhiteA, outAFile); contrastStretch(bufB, maskedHistoB,&clippedBlackB, &clippedWhiteB, outBFile); } printf("\nContrast stretch complete"); printf("\nclippedblackA %d, clippedwhiteA %d", clippedBlackA, clippedWhiteA); printf("\nclippedblackB %d, clippedwhiteB %d", clippedBlackB, clippedWhiteB); /* fclose(inAFile); fclose(inBFile); fclose(outAFile); */ return 0; }
BrushMaskGenerator::BrushMaskGenerator(const Brush &brush) : _cache(10) { buildLUT(brush); }