Advertisement
dvenkatsagar

Stereo_match.js(incomplete)

Jan 24th, 2016
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var cv = require('opencv');
  2. var fs = require('fs');
  3. console.log("Loading images ...");
  4. cv.readImage('aloeL.jpg',function(errL,imgL){
  5.   cv.readImage('aloeR.jpg',function(errR,imgR){
  6.     imgL.pyrDown();
  7.     imgR.pyrDown();
  8.     var window_size = 3;
  9.     var min_disp = 16;
  10.     var num_disp = 112 - min_disp;
  11.     var stereo = new cv.StereoSGBM(min_disp,num_disp,11,(8*3)*(Math.pow(window_size,2)),(32*3)*(Math.pow(window_size,2)),1,15,50,2);
  12.  
  13.     console.log("Computing disparity ...");
  14.     var disp = stereo.compute(imgL,imgR);
  15.     var disp8 = new cv.Matrix();
  16.     disp.convertTo(disp8, cv.Constants.CV_8U, 255/(num_disp*16.0))
  17.     disp8.save('test1.jpg');
  18.     console.log("generating 3d point cloud...");
  19.     var h = imgL.size()[0];
  20.     var w = imgL.size()[1];
  21.     var f = 0.8*w;
  22.     var Q = new cv.Matrix.Zeros(4,4);
  23.     Q.set(0,0,1);
  24.     Q.set(0,3,0);
  25.     Q.set(0,3,-0.5*w);
  26.     Q.set(1,1,-1);
  27.     Q.set(1,3,0.5*h);
  28.     Q.set(2,3,-f);
  29.     Q.set(3,2,1);
  30.     var points = cv.calib3d.reprojectImageTo3d(disp,Q);
  31.     var colors = imgL.copy();
  32.     colors.cvtColor('CV_BGR2RGB');
  33.  
  34.     var FLT_EPSILON = 1.19209e-07;
  35.     var max_z = 1.0e4;
  36.     var count = 0;
  37.     var ply = '';
  38.     for (var i = 0; i < points.size()[0]; i++){
  39.       for (var j = 0; j < points.size()[1]; j++){
  40.         if((Math.abs(points.pixel(i,j)[2] - max_z) < FLT_EPSILON) || (Math.abs(points.pixel(i,j)[2]) > max_z)) {
  41.           continue;
  42.         }
  43.         count = count+1;
  44.         ply = ply + points.pixel(i,j)[0] + " " + points.pixel(i,j)[1] + " " + points.pixel(i,j)[2] + " " + colors.pixel(i,j)[0] + " " + colors.pixel(i,j)[1] + " " + colors.pixel(i,j)[2] + "\n";
  45.       }
  46.     }
  47.  
  48.     var ply_header = 'ply\n'+
  49.     'format ascii 1.0\n'+
  50.     'element vertex '+count+'\n'+
  51.     'property float x\n'+
  52.     'property float y\n'+
  53.     'property float z\n'+
  54.     'property uchar red\n'+
  55.     'property uchar green\n'+
  56.     'property uchar blue\n'+
  57.     'end_header\n';
  58.  
  59.     ply = ply_header + ply;
  60.     fs.writeFile("out1.ply",ply,function(err){
  61.       if(err){
  62.         return console.log(err);
  63.       }
  64.       console.log("Saved out1.ply");
  65.     });
  66.   });
  67. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement