Using A Mirror To 3D Scan Both Sides Of An Object At Once

Photogrammetry is the process of 3D scanning an object by taking a lot of photographs, then using software to turn those into a 3D model. But the process can only scan what the camera can see, and one can’t always get a good view of every part of an object. To solve this, [Thomas Megel] shared an experiment in using a mirror to capture the underside of an object simultaneously with its top. The results were encouraging!

Using a mirror as the turntable allows the camera to image the underside at the same time.

To do this he perched a small tabletop gaming mini on a mirror serving as a turntable platform in his self-designed OpenScan Mini machine, which is designed to take highly structured photos of small objects for scanning purposes. This produced a single scan with two objects, the original and its mirror image, together in one file.

Aligning separate models and combining them into one is a common way to deal with partial or incomplete scans. The idea here is to get two scans at once, instead of separately with a reposition of the object in between. Additionally, it should be possible for the software to automatically separate, align, and combine the two since it is known exactly where the mirror plane is.

As far as a proof of concept, it’s encouraging. [Thomas] is still playing with the idea and looking for suggestions, so if you have any insights be sure to share them.

3D scanning can be a very useful tool, and while photogrammetry can be done with little more than your mobile phone’s camera, in some ways the concept is over a hundred years old.

28 thoughts on “Using A Mirror To 3D Scan Both Sides Of An Object At Once

  1. This is one of those concepts that you slap yourself on the forehead and say, “why didn’t I think of this” . I could be wrong here but it looks like the inverse of a catadioptric imager, which uses a convex mirror to get a 360 view with a single lens.

    I wonder if using a deeper and wider convex mirror to move the focal point “up” a little would give him better images for taller objects. That or going the same route as phone camera arrays and using multiple fixed focal lengths.

    Looking forward to seeing this evolve.

    1. The ghost effects only seem to be visible at very shallow angles and the photogrammetry software produces multiple virtual models with a certain offset. Though with higher angles, the effect seems to diminish and only one virtual object is produced as shown in the above raw scan result.

  2. A polar filter might be worth experimenting with to help manage the unwanted reflections. Unless I’m mistaken the primary reflection should be un-polarised where the 2nd and 3rd order reflections would be.

      1. Sorry that was very poorly worded by me.

        Thomas specifically calls out having “a second and third copy” as an issue limiting the useable angle, which would be from surface and internal reflections in the glass. Not sure why my late night brain just tacked the word “order” on there.

        My point was a polar filter might help cut down on double reflection issues without changing to a first surface mirror.

        1. I already use a cross-polarizer setup with the camera (one linear polarizer in front of the ringlight and a second perpendicular polarizer in front of the camera) in order to filter reflections on the surface of the object. In order to filter those internal reflections one might need to align the polarizer(s) to the mirror, which I might try. Though my brain did not fully wrap itself around the various physical effects here..

  3. Consider resting the object on a clear piece of glass and having the mirror below that a bit. More space might help get a more complete scan? Also fiducials around the rim.

    1. I did have a similar thought myself. It might be better for software processing if it could detect the position and orientation of the mirror, probably using fiducials.

      However more glass and distance might make things worse due to refraction and similar effects. The best option for clarity is likely a first surface mirror instead. For creating distance between the mirror and object a support attached to the base of the object would probably be best and should be relatively easy to cut out of the final 3D model, perhaps it could even be coloured or patterned in a specific way to remove it with image processing.

    2. This is absolutely the goal after this initial experiment. So far, I just wanted to test, whether photogrammetry software can handle the inputs and it turned out surprisingly well. In the end, I’d like to have a multi-cam rig with known camera and mirror positions in order to fully automate the pipeline.

    1. This is partially true. The double images are only notable at shallow angles between cam and mirror. depth of field can be “easily” solved with focus stacking (which i used for the shown scan) – I took a total of 6 images per position covering the full depth between the virtual and the real object and stacked those on the raspberry pi.

  4. I wonder how far you can go with this idea. If you think about it a large amount of an image captured for photogrammetry isn’t giving you info on the object.
    Could you use a bunch of mirrors to basically fill the image leaving only the bare minimum for camera position detection or it could be part of a rig that could provide camera location directly.

    1. It should be possible to get multiple viewpoints from a single camera using multiple mirrors, though you definitely lose quite some detail due to the higher distance from camera to virtual object. The goal after this initial experiment is creating a static multi-cam rig with all the known camera poses + mirror(s) positions to automate the full pipeline.

  5. This does seem to make a ton of sense, especially the part about capturing more information about the object at once, but doesn’t the information about what is not the object also used as part of the process? Meaning that there is probably a limit to how much can be mega-captured at any given time.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.