Subversion Repositories seema-scanner

Rev

Rev 242 | Rev 245 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 242 Rev 244
Line 335... Line 335...
335
 
335
 
336
    unsigned int nFrames = frameSequences[0].frames0.size();
336
    unsigned int nFrames = frameSequences[0].frames0.size();
337
    int nRows = frameSequences[0].frames0[0].rows;
337
    int nRows = frameSequences[0].frames0[0].rows;
338
    int nCols = frameSequences[0].frames0[0].cols;
338
    int nCols = frameSequences[0].frames0[0].cols;
339
 
339
 
-
 
340
    // Debayer images, since cvtColor cannot debayer floating point images
-
 
341
    for(int j=0; j<nShutters; j++){
-
 
342
        for(unsigned int i=0; i<nFrames; i++){
-
 
343
            cv::cvtColor(frameSequences[j].frames0[i], frameSequences[j].frames0[i], CV_BayerBG2GRAY);
-
 
344
            cv::cvtColor(frameSequences[j].frames1[i], frameSequences[j].frames1[i], CV_BayerBG2GRAY);
-
 
345
        }
-
 
346
    }
-
 
347
 
340
    // Merge into HDR
348
    // Merge into HDR
341
    frameSequence.frames0.resize(nFrames);
349
    frameSequence.frames0.resize(nFrames);
342
    frameSequence.frames1.resize(nFrames);
350
    frameSequence.frames1.resize(nFrames);
343
 
351
 
344
    float shutterMean = 0.0;
352
    float shutterMean = 0.0;
Line 349... Line 357...
349
        frameSequence.frames0[i].create(nRows, nCols, CV_32F);
357
        frameSequence.frames0[i].create(nRows, nCols, CV_32F);
350
        frameSequence.frames1[i].create(nRows, nCols, CV_32F);
358
        frameSequence.frames1[i].create(nRows, nCols, CV_32F);
351
 
359
 
352
    }
360
    }
353
 
361
 
354
    #pragma omp parallel for
-
 
355
    for(int r=0; r<nRows; r++){
362
    frameSequence.frames0[0].setTo(0.0);
356
        for(int c=0; c<nCols; c++){
363
    frameSequence.frames1[0].setTo(0.0);
357
 
-
 
358
            for(int j=nShutters-1; j>=0; j--){
-
 
359
 
364
 
360
                uchar s0 = frameSequences[j].frames0[0].at<uchar>(r,c);
-
 
361
 
-
 
362
                if(s0 < 250){
-
 
363
                    for(unsigned int i=0; i<nFrames; i++)
-
 
364
                        frameSequence.frames0[i].at<float>(r,c) = (shutterMean/shutters[j]) * frameSequences[j].frames0[i].at<uchar>(r,c);
-
 
365
 
-
 
366
                    break;
365
    #pragma omp parallel for
367
                }
-
 
368
            }
-
 
369
 
-
 
370
            for(int j=nShutters-1; j>=0; j--){
366
    for(int j=nShutters-1; j>=0; j--){
371
 
367
 
-
 
368
        cv::Mat mask0 = (frameSequences[j].frames0[0] < 250) & (frameSequence.frames0[0] == 0);
372
                uchar s1 = frameSequences[j].frames1[0].at<uchar>(r,c);
369
        cv::Mat mask1 = (frameSequences[j].frames1[0] < 250) & (frameSequence.frames1[0] == 0);
373
 
370
 
374
                if(s1 < 250){
-
 
375
                    for(unsigned int i=0; i<nFrames; i++)
371
        for(unsigned int i=0; i<nFrames; i++){
-
 
372
            cv::add((shutterMean/shutters[j]) * frameSequences[j].frames0[i], frameSequence.frames0[i], frameSequence.frames0[i], mask0);
376
                        frameSequence.frames1[i].at<float>(r,c) = (shutterMean/shutters[j]) * frameSequences[j].frames1[i].at<uchar>(r,c);
373
            cv::add((shutterMean/shutters[j]) * frameSequences[j].frames1[i], frameSequence.frames1[i], frameSequence.frames1[i], mask1);
377
 
374
 
378
                    break;
-
 
379
                }
-
 
380
            }
-
 
381
        }
375
        }
382
        //cvtools::writeMat(frame0i, QString("frame0_%1.mat").arg(i).toLatin1(),  QString("frame0_%1").arg(i).toLatin1());
-
 
383
    }
376
    }
384
 
377
 
385
    // Set camera shutter back to default
378
    // Set camera shutter back to default
386
    cameraSettings.shutter = settings.value("shutter", 66.666).toFloat();
379
    cameraSettings.shutter = settings.value("shutter", 66.666).toFloat();
387
 
380