Forum

Author Topic: Algorithms used in Photoscan  (Read 70173 times)

Arko

  • Newbie
  • *
  • Posts: 4
    • View Profile
    • Homepage Arko Lucieer
Algorithms used in Photoscan
« on: May 02, 2011, 04:04:36 AM »
Dear Dmitry,
First of all, I would like to say that you have produced a very impressive bit of software. We are using Photoscan and Photoscan Professional here at the University of Tasmania to derive 3D point clouds from historical aerial photography and aerial photographs acquired from an unmanned aerial vehicle (UAV). I have previously worked with SIFT, libsiftfast, Bundler, PMVS2, and CMVS, and have achieved some very good results with these tools. I have come across some examples where Photoscan outperforms Bundler when it comes to calculating camera position, orientation, and distortion parameters, especially when the focal length is unknown or uncertain (like in underwater photography). I am keen to publish some of our results in scientific journals, however, in order to do that I want to be able to report on the general type of algorithms that are used in Photoscan. As far as I can tell Photoscan follows a very similar approach to the following workflow:
  • SIFT
  • key matching
  • bundle adjustment for camera position, orientation, and distortion parameters + sparse point cloud (based on Bundler?)
  • patch-based multi-view stereo for dense point cloud reconstruction (based on PMVS2 and or CMVS?)
  • surface reconstruction based on Delauney triangulation or Poisson surface reconstruction
  • Texture mapping

I am curious to known if you developed your own algorithms from scratch or if you have built on and improved on existing algorithms. I realise that you might not be able to or not want to provide too much technical detail. However, in order to use the Photoscan results in a publication I want to be able to report on the workflow and methods. Any help would be greatly appreciated.
Thanks in advance and keep up the great work!
Arko
--
Dr Arko Lucieer
Senior lecturer in GIS and Remote Sensing
School of Geography and Environmental Studies
University of Tasmania, Australia
+61 (0)3 6226 2140
http://www.lucieer.net

Dmitry Semyonov

  • Agisoft Technical Support
  • Full Member
  • *****
  • Posts: 200
    • View Profile
Re: Algorithms used in Photoscan
« Reply #1 on: May 03, 2011, 06:47:57 PM »
Hello Arko,

We are happy to get positive feedback regarding PhotoScan software.

PhotoScan workflow is similar to the one you have presented, with an exception that our implementation is not based on the popular Bundler+PMVS2+CMVS assembly.

Here is a more detailed explanation of individual processing steps:

  • Feature matching across the photos.
    At the first stage PhotoScan detects points in the source photos which are stable under viewpoint and lighting variations and generates a descriptor for each point based on its local neighborhood. These descriptors are used later to detect correspondences across the photos. This is similar to the well known SIFT approach, but uses different algorithms for a little bit higher alignment quality.
  • Solving for camera intrinsic and extrinsic orientation parameters.
    PhotoScan uses a greedy algorithm to find approximate camera locations and refines them later using a bundle-adjustment algorithm. This should have many things in common with Bundler, although we didn't compare our algorithm with Bundler thoroughly.
  • Dense surface reconstruction.
    At this step several processing algorithms are available. Exact, Smooth and Height-field methods are based on pair-wise depth map computation, while Fast method utilizes a multi-view approach.
  • Texture mapping.
    At this stage PhotoScan parametrizes a surface possibly cutting it in smaller pieces, and then blends source photos to form a texture atlas.

Many of the PhotoScan algorithms are based in part on previously published papers, but are implemented from scratch and are thoroughly optimized for faster processing speeds. It is worth noting that we have favored algorithms with higher accuracy output over faster approaches with less accurate output.

With best regards,
Dmitry Semyonov
AgiSoft LLC
« Last Edit: May 03, 2011, 06:49:51 PM by Dmitry Semyonov »
With best regards,
Dmitry Semyonov
Agisoft

sjupin

  • Newbie
  • *
  • Posts: 6
    • View Profile
Re: Algorithms used in Photoscan
« Reply #2 on: October 04, 2012, 03:07:13 PM »
hi,

you r referencing papers your great soft is based on, would it be possible to get
references of this papers ?
I would need these for biblio for a paper about using photoscan on standing stones a research lab.
by the way, I really loves the 0.9 evols.

thks for the work.

an198317

  • Newbie
  • *
  • Posts: 42
    • View Profile
Re: Algorithms used in Photoscan
« Reply #3 on: May 30, 2013, 02:09:00 AM »
Hi Dmitry,

We are a research team at Kansas State University. We used PhotoScan Pro heavily for various of projects. So do you think it's possible to share the literatures you mentioned in your post? We need do a project report as well based on Algorithms Photoscan uses.

Thanks a lot!!
Nan

Hello Arko,

We are happy to get positive feedback regarding PhotoScan software.

PhotoScan workflow is similar to the one you have presented, with an exception that our implementation is not based on the popular Bundler+PMVS2+CMVS assembly.

Here is a more detailed explanation of individual processing steps:

  • Feature matching across the photos.
    At the first stage PhotoScan detects points in the source photos which are stable under viewpoint and lighting variations and generates a descriptor for each point based on its local neighborhood. These descriptors are used later to detect correspondences across the photos. This is similar to the well known SIFT approach, but uses different algorithms for a little bit higher alignment quality.
  • Solving for camera intrinsic and extrinsic orientation parameters.
    PhotoScan uses a greedy algorithm to find approximate camera locations and refines them later using a bundle-adjustment algorithm. This should have many things in common with Bundler, although we didn't compare our algorithm with Bundler thoroughly.
  • Dense surface reconstruction.
    At this step several processing algorithms are available. Exact, Smooth and Height-field methods are based on pair-wise depth map computation, while Fast method utilizes a multi-view approach.
  • Texture mapping.
    At this stage PhotoScan parametrizes a surface possibly cutting it in smaller pieces, and then blends source photos to form a texture atlas.

Many of the PhotoScan algorithms are based in part on previously published papers, but are implemented from scratch and are thoroughly optimized for faster processing speeds. It is worth noting that we have favored algorithms with higher accuracy output over faster approaches with less accurate output.

With best regards,
Dmitry Semyonov
AgiSoft LLC

Ludwig Hilger

  • Newbie
  • *
  • Posts: 20
    • View Profile
Re: Algorithms used in Photoscan
« Reply #4 on: November 06, 2013, 03:56:23 PM »
Hello,

same here! has there been any info concerning the papers yet?

best regards,
Ludwig

Christina K

  • Newbie
  • *
  • Posts: 14
    • View Profile
Re: Algorithms used in Photoscan
« Reply #5 on: July 11, 2014, 06:45:40 PM »
this is very interesting, any paper yet for reference on the algorithms used in photoscan? :)

stihl

  • Sr. Member
  • ****
  • Posts: 410
    • View Profile
Re: Algorithms used in Photoscan
« Reply #6 on: July 12, 2014, 03:52:24 AM »
Have you really just bumped up a topic from page 29?! :o

ThomasVD

  • Full Member
  • ***
  • Posts: 107
    • View Profile
Re: Algorithms used in Photoscan
« Reply #7 on: August 05, 2014, 10:43:51 AM »
Not sure if this would be too much of a "treat" to competing photogrammetry software companies, but it would indeed be interesting to know on which algorithms each step is based, specifically when writing academic articles.

To answer one of Arko's original questions; I believe PhotoScan's Surface Reconstruction algorithm is based on the Poisson Surface Reconstruction algorithm, but modified to automatically remove excessively large polygons (ie the mesh is not closed). I took a dense point cloud from PhotoScan, processed it in Meshlab with Poisson Reconstruction, and the resulting mesh was a precise copy of the mesh produced in PhotoScan (but PhotoScan is a lot more stable than Meshlab, yey!)

jtuhtan

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: Algorithms used in Photoscan
« Reply #8 on: August 31, 2014, 01:56:21 AM »
Would also be interested in the papers, since we are often asked which algorithims are implemented and are currently forced to admit that we can only guess.. ;)

ugo

  • Full Member
  • ***
  • Posts: 167
    • View Profile
Re: Algorithms used in Photoscan
« Reply #9 on: September 29, 2016, 02:45:22 PM »
Hello,

can i get this algorithmus papers?

hachpai

  • Newbie
  • *
  • Posts: 4
    • View Profile
Re: Algorithms used in Photoscan
« Reply #10 on: November 25, 2016, 02:05:24 PM »
Hello!

I would be really interested too. Maybe you cannot provide everything, but a pseudo code, or kind of detailed functions workflow is thinkable?

We're experiencing a lot, and would like to understand correctly what is happening under the hood.

Thanks!

PH

Labokube