Meshroom icon indicating copy to clipboard operation
Meshroom copied to clipboard

[FeatureRequest] Contribution of single camera on SfM (and visa versa)

Open Baasje85 opened this issue 5 years ago • 10 comments

It would be good to see the influence of a single camera on the point cloud. A rendering I could think of is using a selection colour on the point cloud. The inverse: what cameras have contributed to a single point would also be interesting.

From GUI perspective:

  • a single click on a camera, would highlight the part of the point cloud influenced
  • a single click on a point, would highlight the cameras contributing to the location

Baasje85 avatar Jun 16 '19 11:06 Baasje85

Hi, I'm also really interested in this featured.

While there isn't currently a way to see which points are related to which photos on the GUI, may I get some advice on how to get this information from the logs (e.g. which node's info should I be looking into)?

I've just recently started using Meshroom so I'm still a bit unfamiliar with the code structure, and reading throught the docs I couldn't find an answer to this problem, so searching for it was what actually led me to this issue.

I tried looking into the .log files from the FeatureExtraction to the StructureFromMotion nodes in the default pipeline but couldn't really get a grasp of them for the most part. To better understand what each of them does, is there a good place to start reading into?

Thank you.

laurelkeys avatar Oct 31 '19 02:10 laurelkeys

@laurelkeys What exactly are you trying to achieve? Each image imported in Meshroom will get an unique IdView number that is then being used internally. You could follow a single image/pair though the default pipeline.

natowi avatar Oct 31 '19 15:10 natowi

@natowi I'm using Meshroom to reconstruct images captured by multiple drones (currently simulated on AirSim), with the aim of optimizing their trajectory for maximum scene coverage, so I'm trying to identify which places in the cloud are less dense to capture more pictures in those areas.

Therefore, I'd like to be able to query which points in the reconstructed point cloud came from a specific image, and also which camera viewpoints have contributed to a single point.

I was looking into the StructureFromMotion output (converted to JSON) and, from what I understood, it seems like I can get most of this info from there, since it has a "viewId" for each image and inside of "structure" I can get the coordinates of each point with "X", and which pictures were used with "observations".

Is this the information that would be used to implement the requested feature on the GUI?

laurelkeys avatar Nov 01 '19 01:11 laurelkeys

@laurelkeys We could setup a confcall if you are interested to contribute to the implementation of such a feature.

fabiencastan avatar May 15 '20 23:05 fabiencastan

a single click on a camera, would highlight the part of the point cloud influenced a single click on a point, would highlight the cameras contributing to the location

UAV Mapper has this feature, but sadly only binaries are provided so far.

singlepoint coverage

natowi avatar Jun 14 '20 10:06 natowi

@laurelkeys Hello,

I would like to have a precision on what you said. I want in a file, not visually in the gui, the coordinates of the matches points of each pair of photos in the point clouds. I think that the pipeline to create the point clouds use this information but i don't find it in the files... I just want an equivalent of the matches point in pixel in the photos and in (x,y,z) system in the cloud points. I looked what you said but in structure from motion there is only point clouds of intermediate_steps and two other points clouds, the rest of the files are only statistics files, i don't have a file with coordinates of points for each "viewid", where do you find this ?

EmilienCerem avatar Jan 14 '21 10:01 EmilienCerem

@EmilienCerem You can retrieve it from "observations" on the 3d landmarks in the sfmData. See: https://github.com/alicevision/AliceVision/blob/71273a615935d22d3e3beae89124228ca5f944cc/src/aliceVision/sfmData/SfMData.hpp#L64 https://github.com/alicevision/AliceVision/blob/71273a615935d22d3e3beae89124228ca5f944cc/src/aliceVision/sfmData/Landmark.hpp#L64

fabiencastan avatar Jan 14 '21 10:01 fabiencastan

@EmilienCerem You can retrieve it from "observations" on the 3d landmarks in the sfmData. See: https://github.com/alicevision/AliceVision/blob/71273a615935d22d3e3beae89124228ca5f944cc/src/aliceVision/sfmData/SfMData.hpp#L64 https://github.com/alicevision/AliceVision/blob/71273a615935d22d3e3beae89124228ca5f944cc/src/aliceVision/sfmData/Landmark.hpp#L64

So i have to convert "smf.abc" in json and look the file to see the structure ?

EmilienCerem avatar Jan 14 '21 14:01 EmilienCerem

Yes, or use the AliceVision API to load the ABC and access the SfMData C++ structures.

fabiencastan avatar Jan 14 '21 15:01 fabiencastan

Add visualisation mode for landmarks observations #2177 (not for all points, but for detected landmarks)

natowi avatar Sep 04 '23 18:09 natowi