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 290... Line 290...
290
        cv::Vec3b c1 = color1.at<cv::Vec3b>(q1[i][1], q1[i][0]);
290
        cv::Vec3b c1 = color1.at<cv::Vec3b>(q1[i][1], q1[i][0]);
291
 
291
 
292
        color[i] = 0.5*c0 + 0.5*c1;
292
        color[i] = 0.5*c0 + 0.5*c1;
293
    }
293
    }
294
 
294
 
295
    // Triangulate points
295
    // Triangulate by means of disparity projection
296
    cv::Mat QMatHomogenous, QMat;
296
    Q.resize(q0.size());
297
    cv::triangulatePoints(P0, P1, q0, q1, QMatHomogenous);
297
    cv::Matx44f QRectx = cv::Matx44f(QRect);
298
    cvtools::convertMatFromHomogeneous(QMatHomogenous, QMat);
298
    cv::Matx33f R0invx = cv::Matx33f(cv::Mat(R0.t()));
299
 
299
 
300
    // Undo rectification
300
    #pragma omp parallel for
301
    cv::Mat R0Inv;
301
    for(unsigned int i=0; i<q0.size(); i++){
302
    cv::Mat(R0.t()).convertTo(R0Inv, CV_32F);
302
        float disparity = q0[i][0]-q1[i][0];
-
 
303
        cv::Vec4f Qih = QRectx*cv::Vec4f(q0[i][0], q0[i][1], disparity, 1.0);
303
    QMat = R0Inv*QMat;
304
        float winv = float(1.0)/Qih[3];
304
 
-
 
305
    cvtools::matToPoints3f(QMat, Q);
305
        Q[i] = R0invx * cv::Point3f(Qih[0]*winv, Qih[1]*winv, Qih[2]*winv);
-
 
306
    }
306
 
307
 
307
}
308
}