-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reconstruction from videos #232
Comments
I'd be interested in this. I understand image quality is a major factor in good reconstruction but there's an element of "quantity over quality" that can come into play and I know there's been active research on using "lots of frames" to make up for the lower quality and resolution of each individual frame. I also wonder if the inherently temporal nature of video can be used to improve feature matching. Assuming no straight cuts in the video then the software can assume that each image is only slightly spatially different to the previous one. There's a lot of information (or at least optimisations) that could be derived from this. |
It would also eliminate the need of taking too many pics. One video from all angles and done. And do you know where can I find Meshroom docs? |
(This is a bit beyond my technical comprehension level but definitely seems relevent: https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Resch_Scalable_Structure_From_2015_CVPR_paper.pdf ) |
This may sound dumb but, why not split a video into pictures, then cherry pick the ones that are good/not blurry and use that? |
Yeah. On a simple level that would do the trick. The least worst part of that approach is the "split a video into pictures". Cherry picking would soon become awfully time consuming with a few minutes of footage so it would be great if this step wasn't necessary. But the ideal situation would be:
|
I think that Zephyr can do the automated image picking from videos.
…On Mon, 3 Sep 2018 9:19 pm Andy Baker, ***@***.***> wrote:
Yeah. On a simple level that would do the trick.
The least worst part of that approach is the "split a video into pictures".
Cherry picking would soon become awfully time consuming with a few minutes
of footage so it would be great if this step wasn't necessary.
But the ideal situation would be:
1. Totally automated workflow. No need to split to images
2. Feature detection optimized for the situation where there's a lot
of photos but each photo is going to be lower quality. I think it's
probably going to be a slightly different set of trade-offs.
3. Finally (and I realise this is a massive feature so I'm not
expecting anyone to actually implement this in the near future) deriving
some benefit from the sequential nature of video over and above what's
possible when the source images aren't similarly constrained.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#232 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AkMXgovrljt4MX8pgdp6SuusPEI-5aVvks5uXU-XgaJpZM4WXRB_>
.
|
@andybak : Thanks for the interesting link. We don't have this level of integration for video but I agree that this is an interesting area. There is an experimental node for keyframe selection in a video, which removes too similar or too blurry images. This node is not yet provided in the binaries as it introduces many dependencies. So if you built it by yourself, you can test the KeyframeSelection node. It is not yet fully integrated into Meshroom, so you have to manually drag&drop the exported frames to launch the reconstruction (instead of just adding a connection in the graph). If someone is interested to contribute for a deeper integration of videos, we would be glad to provide assistance. |
I'd love to help but it's just that I am not a coder YET.
…On Tue, 4 Sep 2018 9:05 pm Fabien Castan, ***@***.***> wrote:
@andybak <https://github.com/andybak> : Thanks for the interesting link.
We don't have this level of integration for video but I agree that this is
an interesting area.
There is an experimental node for keyframe selection in a video, which
removes too similar or too blurry images. This node is not yet provided in
the binaries as it introduces many dependencies.
So if you built it by yourself, you can test the KeyframeSelection
<https://github.com/alicevision/meshroom/blob/develop/meshroom/nodes/aliceVision/KeyframeSelection.py>
node. It is not yet fully integrated into Meshroom, so you have to manually
drag&drop the exported frames to launch the reconstruction (instead of just
adding a connection in the graph).
If someone is interested to contribute for a deeper integration of videos,
we would be glad to provide assistance.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#232 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AkMXgourbv_2sKjADlwAWOJeR19_LgUQks5uXp3agaJpZM4WXRB_>
.
|
There are a number of video-specific algorithms with publications and (mostly) working code. Off the top of my head, Elastic Fusion comes to mind. I know of several others that I can list some other time. |
It would be relatively easy to reconstruct a volumetric video from multiple videos that were recorded using a stereo camera system. You would only need to combine the first frame of each video, then the second frame, and so on, for every simultaneous frame in each video. Each video would need to have exactly the same number of frames, starting and ending at the same time. Reconstructing a 3D model from a single video might also be possible, since you would only need to select several frames from the video to be used as input. There are several software libraries for monocular SLAM that can reconstruct 3D models in real-time while tracking the camera's position. |
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. |
Any update on this? |
The KeyframeSelection node has been included in the binary release of Meshroom 2019.2. |
And how can I add it to the default graph? |
For now, you have to create a KeyframeSelection node (right click in the graph editor) and compute it separately. Then you can import the result of the KeyframeSelection into Meshroom by usual drag&drop of the extracted images. |
Thank you |
When running the node I get
Where can I find such file? |
vlfeat_K80L3.SIFT.tree from https://gitlab.com/alicevision/trainedVocabularyTreeData/raw/master/vlfeat_K80L3.SIFT.tree KeyframeSelection side note: not all video formats are supported. mp4 is known to work. |
Create an ImageMatching node, and copy/paste the value of the "tree" param. It's already in the release files. |
In fact, it's supposed to have the correct default value already... |
Actually when I create a new ImageMatching node the Tree parameter seems to be empty |
That's strange. Are you using the release? Which platform? |
I'm using the release from here on Ubuntu 18 |
And is the "tree" param of the ImageMatching also empty in the default graph? |
Ok I found the error, apparently I cloned the meshroom in the same folder in which I downloaded the release. I removed the cloned repo and now it is working fine. |
How about placing the KeyframeSelection node before the CameraInit node? In my opinion being able to actually include the node in a graph would be better (and more intuitive) than some stand-alone node. |
Currently, when I submit on renderfarm all uncomputed nodes are submitted in the same way. |
I understand. So it is probably the best to remove the KeyframeSelection node and move it to a dedicated menu. I guess we will have the same problem with aliceVision_utils_split360Images, so we might want to create a "add data" menu for adding images from path, splitting 360 images and importing videos. |
Another way would be to have the logic in this kind of nodes to provide the maximum number of images that could be extracted and use that all along the pipeline, so we can keep all the current behaviors. |
Yes this was also something I thought of, but assumed the maximum number of images could become really huge in some cases. Here is a workaround I am using at the moment: |
By the way, do you know why I get this error?
The path is copy pasted from nautilus. |
@nicofirst1 I think you need a full path (https://gitlab.gnome.org/GNOME/nautilus/issues/634) |
I already provided the full path as: I even tried dragging and dropping the video into the media attribute with the same result |
@nicofirst1 Hmm, no idea. You could try running aliceVision_utils_keyframeSelection from the cli. |
You mean the one in ./aliceVision/bin? If so I tried running them but i get this error:
Same thing with version 2 |
@nicofirst1 Ok, does Meshroom work with imported images? You could try this. |
I install Meshroom from the binaries. The default pipeline works without error. I can import images/dir with either drag/drop or specifying a path and no error is risen. |
I am having the same issues that @nicofirst1 reported with Any clue? |
keyframeSelection relies on OpenCV for reading the video and normally the release version is built with opencv support. So most likely the codec is not recognized by opencv. Can you share the details (codec name) of the video you are trying to use? So the only way is to convert the video into a sequence of images into a directory and feed that directory as input (I know, if the video is long, it's gonna be a waste of space...). If you have ffmpeg installed you can do it from command line |
The original video is a MOV from an iPhone. I converted it into mp4 using ffmpeg, but got the same result. Also, I tried to extract one frame per second as JPG using
This also happened with the 2019.1.0 version. Then, I also tried to use Meshroom from cloning the Github repo, but I guess that I need to compile AliceVision (https://github.com/alicevision/AliceVision/blob/develop/INSTALL.md) to make it work, so when I call the previous command in the cloned repo (after installing
The only way I got this video frames working from my Ubuntu 18.04 Server was by connecting to the server using |
You need to set the |
Issue resolved. Drag and drop import of videos will be supported in the next release https://github.com/alicevision/meshroom/blob/2381cde667d86dca13a539a3709865e8f68117d6/meshroom/ui/reconstruction.py#L621-L626. Details added to the documentation. |
Would the possibility of computing based on optical flow be exploited ? |
@ad48hp Yes, that would be cool. I would support any contribution in this direction. |
I have some videos without (correct) metadata. Would it be possible to estimate the FOV from a video file without manual input? |
Same than for photos, meshroom will start with a 45° guess and if you scene is constrained enough it should converge to the right value. |
hi there, i have started a new issue with a problem related, could anyone here help me? issue #955 |
So, I am just asking if Meshroom supports reconstruction from videos. And please make a forum and start using that YouTube channel of yours.
The text was updated successfully, but these errors were encountered: