All Projects → analytech-solutions → fkMigration.jl

analytech-solutions / fkMigration.jl

Licence: MIT license
A Julia project demonstrating the fast f-k migration algorithm.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to fkMigration.jl

3dunderworld Sls Gpu cpu
A structured light scanner
Stars: ✭ 157 (+145.31%)
Mutual labels:  reconstruction
tike
Repository for ptychography software
Stars: ✭ 20 (-68.75%)
Mutual labels:  computational-imaging
EGSfM
The old implementation of GraphSfM based on openMVG.
Stars: ✭ 87 (+35.94%)
Mutual labels:  reconstruction
Recent slam research
Track Advancement of SLAM 跟踪SLAM前沿动态【2021 version】
Stars: ✭ 2,387 (+3629.69%)
Mutual labels:  reconstruction
Volumetriccapture
A multi-sensor capture system for free viewpoint video.
Stars: ✭ 243 (+279.69%)
Mutual labels:  reconstruction
napari-hub
Discover, install, and share napari plugins
Stars: ✭ 44 (-31.25%)
Mutual labels:  imaging
Cobratoolbox
The COnstraint-Based Reconstruction and Analysis Toolbox. Documentation:
Stars: ✭ 149 (+132.81%)
Mutual labels:  reconstruction
zoomg
Restoring room images from virtual background images
Stars: ✭ 32 (-50%)
Mutual labels:  reconstruction
yeast-GEM
The consensus GEM for Saccharomyces cerevisiae
Stars: ✭ 72 (+12.5%)
Mutual labels:  reconstruction
OpenGnsys
OpenGnsys (pronounced Open Genesis) is a free and open source project that provides tools for managing and deploying different operating systems.
Stars: ✭ 15 (-76.56%)
Mutual labels:  imaging
Kimera Vio Ros
ROS wrapper for Kimera-VIO
Stars: ✭ 182 (+184.38%)
Mutual labels:  reconstruction
Gipuma
Massively Parallel Multiview Stereopsis by Surface Normal Diffusion
Stars: ✭ 220 (+243.75%)
Mutual labels:  reconstruction
realtime-2D-to-3D-faces
Reconstructing real-time 3D faces from 2D images using deep learning.
Stars: ✭ 92 (+43.75%)
Mutual labels:  reconstruction
3d Iwgan
A repository for the paper "Improved Adversarial Systems for 3D Object Generation and Reconstruction".
Stars: ✭ 166 (+159.38%)
Mutual labels:  reconstruction
torchkbnufft
A high-level, easy-to-deploy non-uniform Fast Fourier Transform in PyTorch.
Stars: ✭ 133 (+107.81%)
Mutual labels:  reconstruction
Mvstudio
An integrated SfM (Structure from Motion) and MVS (Multi-View Stereo) solution.
Stars: ✭ 154 (+140.63%)
Mutual labels:  reconstruction
CompenNet
[CVPR'19] End-to-end Projector Photometric Compensation
Stars: ✭ 35 (-45.31%)
Mutual labels:  computational-imaging
SlicerRadiomics
A Slicer extension to provide a GUI around pyradiomics
Stars: ✭ 83 (+29.69%)
Mutual labels:  imaging
odak
🔬 Scientific computing library for optics 🔭, computer graphics 💻 and visual perception 👀
Stars: ✭ 99 (+54.69%)
Mutual labels:  computational-imaging
carveme
CarveMe: genome-scale metabolic model reconstruction
Stars: ✭ 99 (+54.69%)
Mutual labels:  reconstruction

fkMigration.jl

A Julia project demonstrating the fast f-k migration algorithm presented in Wave-based non-line-of-sight imaging using fast f−k migration by Lindell et al. at SIGGRAPH 2019.

Setup

If you are new to non-line-of-sight (NLOS) imaging, we have written an introductory blog post to provide some background and explain how we wrote this code.

First, clone the repository and run Julia from it.

cd fkMigration.jl
julia --project

Then, enter package mode ] and instantiate the project.

(fkMigration) pkg> instantiate
Project fkMigration v0.1.0
    Status `fkMigration.jl/Project.toml`
  [7a1cc6ca] + FFTW v0.3.0
  [23992714] + MAT v0.5.0
    Status `fkMigration.jl/Manifest.toml`
  [7a1cc6ca] + FFTW v0.3.0
  [23992714] + MAT v0.5.0

You will need to download and extract NLOS datasets from the Stanford Computational Imaging Lab in order to continue. We used the "teaser" dataset, and have it extracted to ../teaser. You will need to use those directory paths in calls to the fkMigration.jl project.

vertical-temporal waves vertical-horizontal waves

Usage

There is a simple demo function which you can run, but it requires a lot of system memory (>=32GB) to run. A couple of optional arguments can be provided to downsample and crop the data to reduce the memory usage. Either way, the function returns a dense array 3D volumetric represention of the scene. Therefore, the array must be collapsed in order to form a more traditional 2D image of the scene, and we simply use maximum as a way to achieve that below.

julia> using fkMigration

julia> fullVolume = demo("../teaser")
512×512×1024 Array{Float64,3}:
⋮

julia> lowResVolume = demo("../teaser", 64, 512)
64×64×512 Array{Float64,3}:
⋮

julia> lowResImage = maximum(lowResVolume, dims=3)[:, :] / maximum(lowResVolume)
64×64 Array{Float64,2}:

You now have a normalized array which you can further manipulate, view with the ImageView.jl package, or save with the FileIO.jl and ImageMagick.jl packages.

reconstructed scene

Also, if you want more control over the whole process, the lower-level functions used by demo are available to use for yourself.

julia> tau, calib = loadDataset("../teaser", "meas_10min.mat") ;

julia> calibrate!(tau, calib) ;

julia> tau = downsampleAndCrop(tau, 64, 512) ;

julia> tau = reconstruct(tau) ;
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].