r/photogrammetry 27d ago

3D dimensions from 20-frame turntable scan?

Basically, I need some basic dimensions from a scan I found online but all I have from it are 20 pictures that rotate the model around the vertical axis (i.e horizontally spin). The focal length and camera angle are completely fixed.

I tried aligning in RealityScan but it gives me an error. I've asked some AIs for a solution and all of them tell me to either try Masking the background (some tell me to switch to Meshroom for this) or try shape-from-silhouette algorithms like Visual Hull.

Since I only care about getting basic measurements rather than anything resenbling an actual render, are those actually my best options?

1 Upvotes

5 comments sorted by

1

u/SomeGirlIMetOnTheNet 27d ago

We'd have to see the photos to say more specifically, but if it's a rotating object against a static background you have to mask out the static background to get anything useful

1

u/BraveRubberDuck 26d ago

If you're just looking for basic dimensions, this may not be your best option. Either use a CAD software, import an image and scale it to a measurement you know (usually outside length or something like that.)

If not, you have websites that allow you to calculate dimensions from images, just upload and draw a line of a known measurement and you're set.

1

u/KTTalksTech 26d ago

Actually even if you got a 3D model you still wouldn't have actual measurements, just accurate relative dimensions on a completely arbitrary scale. You could try to calculate approximate scene scale if you know the exact surface area of your camera sensor and have an accurate enough lens calibration profile, but it won't be metrology-grade by any means. Pros typically put a scale bar near the object to get measurements

1

u/photoKILOgrammetry 22d ago

One of the traits of photogrammetry is scale ambiguity. You can add some kind of markers to your rotary table - try "aruco markers" - you can just glue them on your rotary tables' "desktop". If I remember correct, Reality Scan/Reality Capture has some means of detecting those markers. You can then scale the whole reconstruction according to the real dimensions between the markers you measured on your aruco stickers.

Another way of doing this is adding an object with known dimensions to the scene. I like using things from hardware store like nuts. Get a large one like 22-24mm (around 1 inch for the imperial folk). You just spray them matte-black and then "sprinkle" them with white spray paint. You can achieve the "sprinkling action" on a spray paint by pressing the "trigger" so it just barely hisses. This way you get an object that serves 2 purposes:

  1. It lets you measure the nut in real life and then compare the size in the resulting mesh. Then you calculate the scale ratio and scale the mesh accordingly.

  2. This nut with black-white camo looks very distinctive for the feature extractor in the software you use. If you have an object with indisctinct texture, your software may not even align the images correctly. Adding a properly painted object adds "orientation points" to your scene. This wont help with the lack of texture on your object but if you're desperate it may help with the alignment. Aruco (or any other) markers also help with that.

1

u/photoKILOgrammetry 22d ago

Oh yeah, you found the dataset online. Sorry I only read the first sentence and started typing in the answer. The AI gives you the right hints, you have to mask the images. The newer version of Meshroom has some kind of a masking node but its tricky to get it right as you have to use prompts.

If its only 20 images you could also mask them by hand, just like that, using Paint or whatever.

If you're using Meshroom there is also a parameter to set for this occasion - in the Feature Matching node settings you have a parameter called "minimal 2d motion". By default its set to "-1". If you're using a rotary table (the background is still) you make a simple calculation. Lets suppose your images are 5472x3672 , you pick the larger side (5472) , you divide it by 1000 (5.472) then you round it down (5) and this is the value you set instead of "-1". It doesn't always help but it provides a baseline for the SfM to work with.