Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ethanhe42/3d-reconstruction
two view structure from motion
https://github.com/ethanhe42/3d-reconstruction
matlab motion
Last synced: 17 days ago
JSON representation
two view structure from motion
- Host: GitHub
- URL: https://github.com/ethanhe42/3d-reconstruction
- Owner: ethanhe42
- License: mit
- Created: 2016-05-20T17:42:02.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2022-02-28T02:33:50.000Z (over 2 years ago)
- Last Synced: 2024-04-13T06:54:57.394Z (7 months ago)
- Topics: matlab, motion
- Language: MATLAB
- Homepage: https://yihui-he.github.io/blog/structure-from-motion-with-matlab
- Size: 260 MB
- Stars: 93
- Watchers: 12
- Forks: 46
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# structure from motion with MatLab
[GitHub - yihui-he/3D-reconstruction: two view structure from motion](https://github.com/yihui-he/3D-reconstruction)
![https://raw.githubusercontent.com/yihui-he/3D-reconstruction/master/result/Screenshot%20from%202016-05-20%2022-02-50.png](https://raw.githubusercontent.com/yihui-he/3D-reconstruction/master/result/Screenshot%20from%202016-05-20%2022-02-50.png)
![https://raw.githubusercontent.com/yihui-he/3D-reconstruction/master/result/selfff.png](https://raw.githubusercontent.com/yihui-he/3D-reconstruction/master/result/selfff.png)
### 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
1. get camera intrinsic matrix.
2. features detection and points matching.
3. 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.
4. dense matching.
5. 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](https://en.wikipedia.org/wiki/Camera_resectioning) and write it to `intrinsic.new`[https://wikimedia.org/api/rest_v1/media/math/render/svg/a73c022621ea3e7546d2a95c22a74fb22a3b3b7c](https://wikimedia.org/api/rest_v1/media/math/render/svg/a73c022621ea3e7546d2a95c22a74fb22a3b3b7c)
You can set parameters except $\alpha_x$ and $\alpha_y$ can be default value: zero,
[https://wikimedia.org/api/rest_v1/media/math/render/svg/3f0b99ce362b84c94a603bca45c11454cb95f6f1](https://wikimedia.org/api/rest_v1/media/math/render/svg/3f0b99ce362b84c94a603bca45c11454cb95f6f1)
,
[https://wikimedia.org/api/rest_v1/media/math/render/svg/eb5fb4f7aef1abe7c21500f0486677fec1e2ceca](https://wikimedia.org/api/rest_v1/media/math/render/svg/eb5fb4f7aef1abe7c21500f0486677fec1e2ceca)
, represent focal length in terms of pixels, where $m_x$, $m_y$ 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