alicevision / Meshroom

3D Reconstruction Software
http://alicevision.org
Other
11.09k stars 1.08k forks source link

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

Open Baasje85 opened 5 years ago

Baasje85 commented 5 years ago

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:

laurelkeys commented 4 years ago

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.

natowi commented 4 years ago

@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.

laurelkeys commented 4 years ago

@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?

fabiencastan commented 4 years ago

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

natowi commented 4 years ago

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

EmilienCerem commented 3 years ago

@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 ?

fabiencastan commented 3 years ago

@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

EmilienCerem commented 3 years ago

@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 ?

fabiencastan commented 3 years ago

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

natowi commented 1 year ago

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