How to run
1. You can directly go to result folder to see all results
2. To make it easier to view all results , I selected two images for each imageset. You can reproduce all 3D models using main.m. All 8 pclouds will show up together after program finished.
.ply
files will be saved to result folder, which you can be opened with meshlab. main;
3. You can specify two images(intrinsic.new must be in the same folder):
SfM2('imgFolder/img1.JPG','imgFolder/img2.JPG');
will not show model after finished, only save
.ply
to result.SfM2('imgFolder/img1.JPG','imgFolder/img2.JPG',true);
will show model after finished, and save
.ply
to result.This system has been tested under Matlab 2016a and Ubuntu 16.04. please make sure your matlab have vision toolkit
Features
- dense matching.
- MSAC instead of RANSAC.
main steps of my code
- get camera intrinsic matrix.
- features detection and points matching.
- estimate fundamental matrix using feature pairs in two images. Then compute essential matrix using K and F. Decompose E to R and t. Get P using E.
- dense matching.
- put pairs of points onto 3D(triangulate).
How to use your own images
- prepare 2 images taken from two different views
- get the intrinsic matrix and write it to
intrinsic.new
You can set parameters except and can be default value: zero,
, represent focal length in terms of pixels, where , are the scale factors relating pixels to distance and f is the focal length in terms of distance. They can be obtained by looking into your camera info or the jpeg meta info. You can google the way to get them.
- Put them into the same folder, then modify
main.m
to point to the images