Skip to content

Commit

Permalink
update permissions, update README
Browse files Browse the repository at this point in the history
  • Loading branch information
andyzeng committed Dec 16, 2016
1 parent 943c9c2 commit 68be2a9
Show file tree
Hide file tree
Showing 60 changed files with 9,988 additions and 9,897 deletions.
Empty file modified LICENSE
100644 → 100755
Empty file.
4 changes: 2 additions & 2 deletions README.md
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# 3DMatch Toolbox
3DMatch is a ConvNet-based local geometric feature descriptor that operates on 3D data (i.e. point clouds, depth maps, meshes, etc.). This toolbox provides code to use 3DMatch for geometric registration and keypoint matching, as well as code to train 3DMatch from existing RGB-D reconstructions. This is the reference implementation of our paper:

### 3DMatch: Learning Local Geometric Descriptors from 3D Reconstructions ([pdf](https://arxiv.org/pdf/1603.08182v2.pdf), [webpage](http://3dmatch.cs.princeton.edu/))
### 3DMatch: Learning Local Geometric Descriptors from RGB-D Reconstructions ([pdf](https://arxiv.org/pdf/1603.08182v2.pdf), [webpage](http://3dmatch.cs.princeton.edu/))

*Andy Zeng, Shuran Song, Matthias Nießner, Matthew Fisher, Jianxiong Xiao, and Thomas Funkhouser*

Expand Down Expand Up @@ -273,7 +273,7 @@ Note: the TDF voxel grids of the scene fragments from the synthetic benchmark we

See folder `3dmatch-toolbox/evaluation/model-fitting-apc`

Includes code and pre-trained models to evaluate 3DMatch for model fitting on the Shelf & Tote dataset. For an evaluation example, run Matlab script `getError.m`
Includes code and pre-trained models to evaluate 3DMatch for model fitting on the [Shelf & Tote dataset](http://www.cs.princeton.edu/~andyz/apc2016). You can download our pre-computed data (TDF voxel grid volumes for objects and scans, surface keypoints, descriptors, and pose predictions) [here](http://vision.princeton.edu/projects/2016/3DMatch/downloads/apc-intermediate-data.zip). For an evaluation example, run Matlab script `getError.m`

### Mesh Correspondence in Shape2Pose

Expand Down
Empty file modified core/external/estimateRigidTransform/crossTimesMatrix.m
100644 → 100755
Empty file.
Empty file.
Empty file modified core/external/estimateRigidTransform/estimateRigidTransform.m
100644 → 100755
Empty file.
Empty file modified core/external/estimateRigidTransform/estimateRigidTransform.zip
100644 → 100755
Empty file.
Empty file modified core/external/estimateRigidTransform/license.txt
100644 → 100755
Empty file.
Empty file modified core/external/estimateRigidTransform/quat2rot.m
100644 → 100755
Empty file.
Empty file modified core/external/estimateRigidTransform/sampleData.mat
100644 → 100755
Empty file.
Empty file modified core/external/peter/derivative5.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/fundmatrix.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/gaussfilt.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/harris.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/hcross.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/hline.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/hnormalise.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/homography2d.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/iscolinear.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/matchbycorrelation.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/matchbymonogenicphase.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/matrix2quaternion.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/monofilt.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/nonmaxsuppts.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/normalise2dpts.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/quaternion2matrix.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/ransac.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/ransacfitfundmatrix.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/ransacfithomography.m
100644 → 100755
Empty file.
Empty file modified core/external/peter/show.m
100644 → 100755
Empty file.
Empty file modified core/external/sfm/estimateRt.m
100644 → 100755
Empty file.
Empty file modified core/external/sfm/ransacfitRt.m
100644 → 100755
Empty file.
Empty file modified demo-teaser.jpg
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 82 additions & 0 deletions depth-fusion/fuseSceneFragments.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
% Script to fuse depth maps from real-world test scenes to generate scene
% fragments. Fragments are used as part of the real-world geometric
% registration benchmark, in the same spirit as Choi et al 2015. See our
% paper for more details.
%
% ---------------------------------------------------------
% Copyright (c) 2016, Andy Zeng
%
% This file is part of the 3DMatch Toolbox and is available
% under the terms of the Simplified BSD License provided in
% LICENSE. Please retain this notice and LICENSE if you use
% this file (or any portion of it) in your project.
% ---------------------------------------------------------

% User configurations (change me)
cudaBinPath = '/usr/local/cuda/bin';
cudaLibPath = '/usr/local/cuda/lib64';
cudnnLibPath = '/usr/local/cudnn/v5.1/lib64';
numFramesPerFrag = 50;
voxelSize = 0.006;
truncMargin = voxelSize*5;
voxelGridOrigin = [-1.5,-1.5,0.5];

dataPath = '../data/test';
sceneList = {'7-scenes-redkitchen', ...
'sun3d-hotel_umd-maryland_hotel3', ...
'sun3d-mit_76_studyroom-76-1studyroom2', ...
'sun3d-mit_lab_hj-lab_hj_tea_nov_2_2012_scan1_erika', ...
'sun3d-home_at-home_at_scan1_2013_jan_1', ...
'sun3d-home_md-home_md_scan9_2012_sep_30', ...
'sun3d-hotel_uc-scan3', ...
'sun3d-hotel_umd-maryland_hotel1'};

% ./demo ../data/sample/depth-fusion-demo/camera-intrinsics.txt ../data/sample/depth-fusion-demo/rgbd-frames 8 8 50 -1.5 -1.5 0.5 0.006 0.03

for sceneIdx = 1:length(sceneList)

sceneName = sceneList{sceneIdx};

scenePath = fullfile(dataPath,sceneName);
seqList = dir(fullfile(scenePath,'seq-*'));

camKPath = fullfile(scenePath,'camera-intrinsics.txt');

cloudIdx = 0;

mkdir(fullfile(fragmentsPath,sceneName));

for seqIdx = 1:min(length(seqList),3)

seqName = seqList(seqIdx).name;
seqPath = fullfile(scenePath,seqName);
frameList = dir(fullfile(seqPath,'*.depth.png'));

% frameIdx = 0:numFramesPerFrag:(length(frameList)-1-numFramesPerFrag) % all other scenes
% frameIdx = 0:100:(6000-1-numFramesPerFrag) % sun3d-home_at-home_at_scan1_2013_jan_1, sun3d-home_md-home_md_scan9_2012_sep_30
% frameIdx = [0:100:(2750-1),7500:100:(length(frameList)-numFramesPerFrag-1)] % sun3d-hotel_uc-scan3
% 0:100:(length(frameList)-1-numFramesPerFrag) % sun3d-hotel_umd-maryland_hotel1
for frameIdx = 0:numFramesPerFrag:(length(frameList)-1-numFramesPerFrag)

% System call to fuse depth maps into a scene fragment
system(sprintf('export PATH=$PATH:%s',cudaBinPath));
system(sprintf('unset LD_LIBRARY_PATH; export LD_LIBRARY_PATH=LD_LIBRARY_PATH:%s:%s; ./demo %s %s %d %d %f %f %f %f %f %f',cudaLibPath,cudnnLibPath,camKPath,seqPath,frameIdx,frameIdx,numFramesPerFrag, ...
voxelGridOrigin(1),voxelGridOrigin(2),voxelGridOrigin(3),voxelSize,truncMargin));
% Copy point cloud file to fragment folder
pointCloudFile = fullfile(fragmentsPath,sceneName,sprintf('cloud_bin_%d.ply',cloudIdx));
movefile('tsdf.ply',pointCloudFile);

% Save camera pose of base frame
extCam2World = dlmread(fullfile(seqPath,sprintf('frame-%06d.pose.txt',frameIdx)));
fid = fopen(fullfile(fragmentsPath,sceneName,sprintf('cloud_bin_%d.info.txt',cloudIdx)),'w');
fprintf(fid,'%s\t %s\t %d\t %d\t\n',sceneName,seqName,frameIdx,frameIdx+49);
fprintf(fid,'%15.8e\t %15.8e\t %15.8e\t %15.8e\t\n',extCam2World');
fclose(fid);

cloudIdx = cloudIdx + 1;
end

end

end

Empty file modified depth-fusion/utils.hpp
100644 → 100755
Empty file.
Empty file modified evaluation/geometric-registration/getKeyptsAndDesc.m
100644 → 100755
Empty file.
Loading

0 comments on commit 68be2a9

Please sign in to comment.