Subversion Repositories seema-scanner

Rev

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

Rev 207 Rev 236
Line 90... Line 90...
90
 
90
 
91
        int nSteps = Nm[m];
91
        int nSteps = Nm[m];
92
 
92
 
93
        cv::Mat Am(nSteps, 2, CV_32F);
93
        cv::Mat Am(nSteps, 2, CV_32F);
94
 
94
 
95
        for(unsigned int i=0; i<nSteps; i++){
95
        for(int i=0; i<nSteps; i++){
96
            float phase = 2.0*CV_PI/std::max(nSteps, 3) * i;
96
            float phase = 2.0*CV_PI/std::max(nSteps, 3) * i;
97
 
97
 
98
            Am.at<float>(i, 0) = std::cos(phase);
98
            Am.at<float>(i, 0) = std::cos(phase);
99
            Am.at<float>(i, 1) = -std::sin(phase);
99
            Am.at<float>(i, 1) = -std::sin(phase);
100
        }
100
        }
Line 374... Line 374...
374
        cv::Vec3b c1 = color1.at<cv::Vec3b>(q1[i][1], q1[i][0]);
374
        cv::Vec3b c1 = color1.at<cv::Vec3b>(q1[i][1], q1[i][0]);
375
 
375
 
376
        color[i] = 0.5*c0 + 0.5*c1;
376
        color[i] = 0.5*c0 + 0.5*c1;
377
    }
377
    }
378
 
378
 
379
    // Triangulate points
379
    // Triangulate by means of disparity projection
380
    cv::Mat QMatHomogenous, QMat;
380
    Q.resize(q0.size());
381
    cv::triangulatePoints(P0, P1, q0, q1, QMatHomogenous);
381
    cv::Matx44f QRectx = cv::Matx44f(QRect);
382
    cvtools::convertMatFromHomogeneous(QMatHomogenous, QMat);
382
    cv::Matx33f R0invx = cv::Matx33f(cv::Mat(R0.t()));
383
 
383
 
384
    // Undo rectification
384
    #pragma omp parallel for
385
    cv::Mat R0Inv;
385
    for(unsigned int i=0; i<q0.size(); i++){
386
    cv::Mat(R0.t()).convertTo(R0Inv, CV_32F);
386
        float disparity = q0[i][0]-q1[i][0];
-
 
387
        cv::Vec4f Qih = QRectx*cv::Vec4f(q0[i][0], q0[i][1], disparity, 1.0);
387
    QMat = R0Inv*QMat;
388
        float winv = float(1.0)/Qih[3];
388
 
-
 
389
    cvtools::matToPoints3f(QMat, Q);
389
        Q[i] = R0invx * cv::Point3f(Qih[0]*winv, Qih[1]*winv, Qih[2]*winv);
-
 
390
    }
390
 
391
 
391
}
392
}