Skip to content

Commit 904d00c

Browse files
author
nils-hamel
committed
Revision of README and code cleaning
1 parent 70b344c commit 904d00c

9 files changed

+9
-23
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# Overview
22

3-
_Note : This framework is under active developments. The master branch contains the current state of the framework._
4-
53
This framework implements an experimental structure from motion pipeline designed for _true_ spherical image. From an sequence of _true_ spherical images, the pipeline is designed to take advantage of the specificity of such images to compute the 3D structure of the environment captured on the images. It implement a novel optimization algorithm that is able to deduce the pose of the image based on the matching features.
64

75
The considered _true_ spherical images are characterized by the centrality of the camera that captured them. A camera able to capture _true_ spherical is then understood as a camera that focus all rays of light on the same and unique focal point, producing parallax-free panoramic images.
@@ -24,19 +22,21 @@ These codes and the physical camera give access to a full city digitization pipe
2422

2523
# sfs-framework
2624

27-
To illustrate the pipeline results, the following spherical image are used. They are produced by the spherical central camera built during the _ScanVan Project_ that is able to produce _true_ spherical images. The following images shows example of such images in equirectangular projection :
25+
As an example, a small set of _spherical images_ is used here. These images are produced by the spherical central camera built during the _ScanVan project_. The following illustration shows a summary of the images used for this example :
2826

2927
<br />
3028
<p align="center">
31-
<img src="https://github.com/ScanVan/sfs-framework/blob/master/doc/20200220-155121-476244.jpg?raw=true" width="384">
29+
<img src="https://github.com/ScanVan/sfs-framework/blob/master/doc/20190319-103833-344893.jpg?raw=true" width="384">
3230
&nbsp;
33-
<img src="https://github.com/ScanVan/sfs-framework/blob/master/doc/20200220-155121-726279.jpg?raw=true" width="384">
31+
<img src="https://github.com/ScanVan/sfs-framework/blob/master/doc/20190319-103833-594895.jpg?raw=true" width="384">
3432
<br />
35-
<i>Example of central spherical camera images sequence</i>
33+
<i>Illustration of the spherical images dataset</i>
3634
</p>
3735
<br />
3836

39-
As the camera acquire almost everything surrounding it, it also capture part of itself and the vehicle on which it is mounted. This parts have been hidden on the previous images and replaced by extrapolated pixels.
37+
The spherical images dataset along with the input configuration and pipeline outputs are accessible in the [this repository](empty).
38+
39+
As the camera acquire almost everything surrounding it, it also capture part of itself and the vehicle on which it is mounted. This is the reason a mask image is provided to the pipeline to indicates the pixel areas to drop during reconstruction process.
4040

4141
The pipeline starts by computing a sparse model using traditional features (_AKAZE_) in small amount. This allows to compute the odometry of the camera. In order to improve the performances, the pipeline assumes that the images are acquired in continuous sequence. It is also able to remove _duplicated images_ in order to take into account the effect of traffic and traffic lights during image acquisition.
4242

doc/20190319-103833-344893.jpg

54.2 KB
Loading

doc/20190319-103833-594895.jpg

53 KB
Loading

doc/20200220-155121-476244.jpg

-207 KB
Binary file not shown.

doc/20200220-155121-726279.jpg

-208 KB
Binary file not shown.

doc/dataset.jpg

28.7 KB
Loading

src/framework-feature.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void Feature::setRadius(double newRadius, double newDisparity){
8686
radius=newRadius;
8787

8888
// Compute and assign normalised disparity
89-
disparity=newDisparity;
89+
disparity=newDisparity/newRadius;
9090

9191
}
9292

src/framework-structure.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,7 @@ void Structure::computeRadius(unsigned int lowViewpoint){
292292
if(feature->getViewpoint()->getIndex()>=lowViewpoint){
293293
vector=position-(*feature->getViewpoint()->getPosition());
294294
radius=(*feature->getModel()).dot(vector);
295-
vector/=vector.norm();
296-
feature->setRadius(radius,acos(vector.dot(*feature->getModel())));
297-
295+
feature->setRadius(radius,(vector-(*feature->getModel())*radius).norm());
298296
}
299297
}
300298

src/framework-viewpoint.hpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,6 @@ class Viewpoint {
4545
Eigen::Vector3d position;
4646

4747
public:
48-
/* To be moved in cpp */
49-
//cv::Mat* getImage(){return &this->image;}
50-
//void releaseImage(){image.deallocate();}
51-
//void setCvFeatures(std::vector<cv::KeyPoint> &image){this->cvFeatures = cvFeatures;}
52-
//std::vector<cv::KeyPoint>* getCvFeatures(){return &this->cvFeatures;}
53-
//void setCvDescriptor(cv::Mat &image){this->cvDescriptor = cvDescriptor;}
54-
//cv::Mat* getCvDescriptor(){return &this->cvDescriptor;}
55-
//void setPosition(Eigen::Vector3d position){this->position = position;}
56-
//std::vector<Feature*> *getFeatures() { return &features; }
57-
//void addFeature(Feature *f){ features.push_back(f); }
58-
//Feature *getFeatureFromCvIndex(uint32_t i){ return features[i]; }
59-
6048
unsigned int getIndex();
6149
cv::Mat * getImage();
6250
std::vector<cv::KeyPoint> * getCvFeatures();

0 commit comments

Comments
 (0)