Milkscanner – 3D Mapping That’s Good For You

[Blind Tree Frog] sent in the Milkscanner. It’s an oh-so-simple method of mapping a 3d object. [fiezi] used a small tub, a lego mounted webcam, a small supply of milk and a bit of software to create the map and import it to moviesandbox.. The object is placed in the tub, then then it’s scanned by the camera as the milk level is slowly raised (in this case, via spoon power) and voila: 3d map.

Video is after the jump, or at the top of the read link.

25 thoughts on “Milkscanner – 3D Mapping That’s Good For You

  1. oh this is the coolest thing i’ve seen in ages. i’ve always been interested in 3d scanners, but the need for considerable precision in the mechanical design has always put me off. this on the otherhand…

  2. Like I said when I sent it in, I’d prefer to see the milk added automatically with a basic circuit and pump, but over all this is great. Such a simple solution to this problem that it’s easy to over look.

  3. Saw this when it was orignally posted on instructables. Extremely cool, it always amazes me when somebody pulls of what is normally considered a complex problem with simple household materials.

  4. I can see one problem; he adds three spoons of milk for every frame, but that does not correspond to the same amount of milk-level raising each time. I’d say that adding a pipe-line with a milk supply, and some sort of way to measure the milk-level, would be an approach offering greater detail-level and correctness.

    Of course, I don’t know what I’m talking about, so just ignore me ^^

  5. You could easily measure the milk level with some kind of bar at 45 degrees to the vertical in the cameras field of view. By measuring the length of the bar that’s visible to the camera, you can calculate depth.

    Using this method, the system could be made easier very quickly by starting with the container full, and putting a small hole+cork in the bottom to let the milk drain out. As it drains, you constantly measure the depth and take readings at intervals of say 0.5mm, giving a much better resoloution. The wet and therefore reflective object being scanned may give holes in the model though, so it might be better to have the milk draining in from another higher up container.

    A way to improve the accuracy would be to consider parallax, by adding in some trig calculations to the program, and then have multiple cameras in different places, using those calculations to allow “overhanging” bits of the model to be picked up.

    Also, by using say a uv ink and uv light instead of the milk would allow you to easily scan items which are too white to programaticly discern with milk.

  6. Combining comments at the link the best idea I’ve heard mentioned is using an overflow style of tank (so the milk is at the top and overflows as the object lowers) with a shelf that the object sits on and lowers down into the tank automatically.

    The milk then stays at the same level (because you just keep the tank full to the rim at all times) and you don’t have to adjust for the milk getting closer or further from the lens.

  7. that wont make it go linear. where the object is wide, the milk will rise a bit due to more milk displacement. it would have to be combined with a diagonal ruler, or some sort of floating device. (like the ones in toilet flushers)

  8. >> Post 13 (loebas)
    “that wont make it go linear. where the object is wide, the milk will rise a bit due to more milk displacement. it would have to be combined with a diagonal ruler, or some sort of floating device. (like the ones in toilet flushers)”

    At which point the milk will overflow over the edge of the container (like I stated) and the level of the milk will stay at the same exact level every single time.

  9. Very nice. Any way to do this with plain water? Perhaps with a different colored lights or something and a piezo element to make the water reflect all lamps? Then take a continuous video while it’s filling up and then post-process.

  10. @ hello1024:
    The 45 degree bar method isn’t as simple a it first appears. For large increases in depth (e.g., 2mm steps), no problem. Once you start getting into the smaller steps (e.g., 0.5mm and so on), you’re going to run into problems with surface tension and the milk’s meniscus. You may have to increase the level several times before surface tension gives in and allows the milk to change location on the level.

  11. Now this is a sweet hack. Is there someway this method could create a 3D CAD file for the scanned object? I’ve been working on a project that would need metal parts machined to the contours of my head, and this would solve my dillema if I could create an accurate 3D CAD file for my head. Any thoughts?

  12. The trouble with this is that it’s using a webcam, which means the images it captures are in perspective. That’s okay for small objects where accuracy isn’t that necessary (as shown), but I wouldn’t use it for any precision work.

    If you can manage to get a scanner head to take focused images a few inches away, then you’d really have something.

  13. To fix the issue of surface tension with the diagonal bar, just add alcohol to the milk to break the tension (a white russian scanner?) Or perhaps float a thin layer of oil on top (the oil will stay in place, since with the bar, you don’t have to let the milk overflow anymore).

  14. Unless I’m misunderstanding the method here, it seems it will only accurately scan objects that narrow as you move up the Y-axis because otherwise the object’s width would be blocking the camera’s view.

    If this were a profile view(the webcam would still be viewing from the top), the webcam wouldn’t see anything below the widest point of the object.
    / \
    / \
    \ /
    \ /

    This of course could be solved by scanning one side and then the other but would still leave some objects unscannable. Good for what it is though.

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.