Six Camera Face Scan Rig (using 123DCatch / Photofly for Processing)

27,853

93

36

Introduction: Six Camera Face Scan Rig (using 123DCatch / Photofly for Processing)

I was recently asked to build "something fun" for a science museum event.

Since I was already waist deep in the world of photogrammetry at work (the reconstruction of 3D data from photographs), I decided to build a camera rig for capturing the faces of the visitors (mostly kids). Now if you have kids, or have ever seen a kid on TV, you know that they very rarely sit still for more than 0.25 seconds unless they are sleeping or in an Elmo-induced hypnotic trance... though even that lasts for only about 0.58 seconds. How then, can kids be photographed from multiple angles simultaneously?

Hmm... we could get a super high speed camera (let's say 10,000 frames per second), put the child on a stool in front of the camera and spin him really fast! Surely we'll get at least a few useable angles with high similarity and no vomit. The parents have an issue with that? Whatever! Little Johnny will almost certainly experience much worse, likely self-inflicted scenarios.

Fine, next idea: Purchase 6 cheap-wad digital cameras and wire them up to one trigger button. That's it! Simple and obvious!

This photo gallery (with annotations) illustrates the 3-week long process of sourcing, cutting, soldering, rigging, wiring and data collecting. In the end, you'll see that the ability to freeze little people in time from multiple angles pays off!

Read on, friends!

Make It Real Challenge

Participated in the
Make It Real Challenge

Be the First to Share

    Recommendations

    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge
    • Big and Small Contest

      Big and Small Contest
    • Make It Bridge

      Make It Bridge

    36 Comments

    0
    AkievS
    AkievS

    6 years ago

    hello

    Can you print in full color sandstone from this 3D file since it does not have projectors to capture textures.

    0
    JackN6
    JackN6

    8 years ago

    Hey man are u still around..im creati g a photogrmetry studio and really want to ask u just a few questions if u dont mind

    0
    threiner
    threiner

    10 years ago on Introduction

    really nice a bit more construction details wouldbecool

    0
    Gilius
    Gilius

    10 years ago on Introduction

    What software did you use for the 3d reconstruction?

    0
    Tall-drinks
    Tall-drinks

    Reply 10 years ago on Introduction

    I direct you, good sir, to the title. ;)

    I use Autodesk's 123DCatch for processing. Its fast, clean and so far free! :D
    Better results than competitors in my testing (like Agisoft).

    I'd definitely recommend it, even before I found out that Instructables was purchased by Autodesk! ;)

    0
    Gilius
    Gilius

    Reply 10 years ago on Introduction

    Oh I missed that. I am very impressed because all my results with 123D have been a lot worse

    0
    Tall-drinks
    Tall-drinks

    Reply 10 years ago on Introduction

    Ha! Just messin' with ya!
    if you follow the guidelines for Catch (lots of YouTube videos from Autodesk), you should get good results.

    The most important things that I found were:
    1. Take clear and well spaced photos. This means little image grain, no motion blur, sharp focus and plenty of overlap between shots (15-30 degree increments). Try not to rotate camera too much. Keep all shots either in landscape or portrait.

    2. Watch the exposure! This is huge, especially with skin. You need to set the exposure on your camera so that there are no blown out highlights and no black shadows. The software has nothing to "latch onto" in these types of areas, and you'll get crazy lumps in the mesh. On a mobile phone, I just tap the brightest spot on the subject and it auto exposes and focuses on that which usually works. Best results with a good camera or DSLR though.

    3. There should be no movement in your scene from shot to shot. No moving leaves, shadows, facial expressions, cars, hair etc. that's why this 6 camera system works great.

    Good luck! Feel free to ask any questions you have.

    0
    kakungulu
    kakungulu

    Reply 10 years ago on Introduction

    Hi,
    I tried this trick with simple stereo (2 camera) rig. I even bought a couple of video cameras that have IR remote control. In my experience with both sets of cameras, still and video, there's a problem of "over design" in their electronics, i.e. they are too internally complex to guarantee that shutters triggered simultaneously will actually take simultaneous pictures. In other words, something in the software/hardware is building inconsistent latency, which results in in shutter skew. I took some photos of people and at least 30% of them show movement between frames, even though they were triggered simultaneously!
    Since I noticed those cheapy GE cameras, I've been fantasizing about getting ~6-10 cameras to create a light-field array (a real one, not the Lytro "focus later" gimmick), which can also serve the functions of taking more than 2 frames for lenticular 3D array and super hi-def panoramas.
    But spending ~500$ and only realizing later that the latency issue makes my camera only good for still images, on a 0MPH wind days, is going to be heartbreaking.
    So my obvious question is: are the GE cameras displaying that annoying "feature" when you use them in an array? I was hoping they are simple enough (or at least sold with a single software version).
    Thanks for the instructable.

    0
    elabz
    elabz

    Reply 10 years ago on Introduction

    I think the biggest issue with timing here is not the complexity of the cameras or different software versions but the fact that you are using IR control.

    IR protocols are designed to add redundancy because IR propagation is not very reliable and you're not always pointing straight at the receiver. They re-send the same command multiple times and I think what happens with the cameras is that the different cameras get the correct reading at different  times. For example, because the IR transceiver in the camera is slightly more or less sensitive or it's running on a slightly lower voltage or simply the IR window has a thumb print on it.

    Since we are talking about really slow speed IR protocols, the difference in time between the moments when each camera can finally get enough good readings to guarantee a reliable command, can be really big, certainly big in a photography shutter speed sense.

    Hardwire them, I think you'll find that the slight differences in timing because of the cameras' internal complexity are so slight that they are probably measured in microseconds and would not register in the photographs.  I think IR is what's holding you back.

    Cheers!

    0
    Tall-drinks
    Tall-drinks

    Reply 10 years ago on Introduction

    I'd agree with the IR comment. I began building an IR blaster rigged approach, but, like elabz notes, the signal received was too random.

    I was going to trigger the shutters with a mechanical lever or servo depressing each button, but ran into problems there too: these cheap cameras focus themselves when the shutter is depressed halfway, and so they would independently try to acquire the best focus for their own view per shot. This added a large 1+ second lag before the photo was snapped, and also presented the risk that some cameras might focus on a wall instead of the subject.

    The solution I landed on was to manually half-depress each shutter button at the beginning of a session (just once per poewr on cycle, not bad at all), to focus all of the cameras on a test-subject. Then, when the shutter button contacts were closed, due to the soldered contact points I chose through trial and error, the cameras all just captured, and skipped the focus step. BTW, there is no manual focus mode on cheap cameras. Boo.

    Lastly, I neglected to include my camera settings step in this Instructable, partially by accident, but I think they wouldn't matter unless someone sourced the exact same model. My fault though.

    I set all of the cameras to the exact same settings before shooting, leaving nothing to default or automatic mode. This included the ISO, exposure offset, flash mode (off), turning off face-detection, as this adds to the delay per camera, setting focus type (center/9 point) the same, and any other settings or modes which could potentially affect the ability to fire instantaneously.

    I ended up with all 6 firing within a 10th of a second or so.
    Admittedly not good enough to capture action shots, or low light shots, but definitely worked for every subject who followed the rules of "sit still, look here, and press button when you're ready"!

    Good luck in your quest.
    Unfortunately, the best answer means buying good DSLRs with cabled shutter releases and manual focus modes and settings.

    0
    kakungulu
    kakungulu

    Reply 10 years ago on Introduction

    That was a great tip. Thanks! Last June, I took two of my cheap cameras as a stereo rig to a 14'er peak here in Colorado. I kept in mind your half-depressed pre-focus tip and got excellent stereo pairs. I even captured animals in motion, in perfectly matching left/right. Thanks again for the tip. I wish I knew it when I first took a 2 camera rig with me to Africa.

    0
    dconnolley
    dconnolley

    Reply 10 years ago on Introduction

    If this rig its going into a science museum.... 3d souvineer!!! and its of themselves!!! doesn't get more personal than that.

    just something to think about...

    0
    Tall-drinks
    Tall-drinks

    Reply 10 years ago on Introduction

    My friend...
    The words "3d" and "printer" come up in every other sentence I squeeze out of my lungs. I'm on it! :)

    Nobody else is ever on board with me though. C'est la vie and stuff!!

    Sniff.

    0
    kakungulu
    kakungulu

    Reply 10 years ago on Introduction

    100msec is a long time, but maybe it's good enough. The system I'm *imagining* will "void the warranty" for sure, because I'm not going to leave the cameras in their original plastics, but strip and embed them in a new housing, so I can drag the array with me to road trips. In light of that, I plan on soldering together both the full and half triggers and maybe other controls so I can control all the cameras together in the field. The AA entries will be fed from a common power-tool battery with a DC/DC converter. Again, the original battery compartments are redundant. The next improvement would be to add a controller board that will have programmable controls and USB interface to stream the data from the cameras to a central SSD.
    It's all good "on paper"; but just a fantasy so far...
    I'll start "small" by buying two cameras and making a stereo pair using your method. 100$ is a reasonable tuition.
    Thanks elabz and Tall-drinks for the useful input.

    0
    morval666
    morval666

    10 years ago on Introduction

    Great article. A question though. You only used 6 cameras and they were front facing. So you only captured the front of the face? And were 6 cameras enough to get that nice mesh you had above? Doesn't 123d catch want 30 or more pictures?
    I want to do this to take pictures of my dogs mainly and then 3d model them. You can't tell the dog to sit still so you need to take all the pics at once. I want to capture the whole head (body would be even better, but need more cameras).
    If you use Canon P&S cameras and hack the firmware with CHDK there are some nice DIY and premade switches you can get.
    http://www.gentles.ltd.uk/gentstereo/sdm.htm

    0
    onlyjus
    onlyjus

    10 years ago on Introduction

    Nice project! I am thinking about copying your idea. Although I am thinking about using cheap webcams instead? I have experience using OpenCV to read webcams (write now I am playing with two). I am thinking about using 9 webcams, and OpenCV to query single frames from all the cameras. I can't stream all the webcam feeds or I will hit the USB bandwidth limit. Let me know what you think.

    0
    Tall-drinks
    Tall-drinks

    Reply 10 years ago on Introduction

    I do believe that would work fine, friend! Your results likely won't be too high end due to the clarity and excessive noise (noise kills the results) in most webcams, but if you light it really well (not overblown) and get you settings right, you should get a decent result. I actually got a fair mesh using an iPhone front facing 640x480 camera. No great details but the basic shape was there.

    I did experiment with webcams, kids cheap point and shoots, Kinects and such early on. Try to grab as much meta data as OpenCV will allow too. If you can keep the metadata stored in the jpgs, it'll be a great help to the 123dcatch system in terms of calibrating the lens properties and giving you a more true result.

    Check this out too:
    http://digiteyezer.com/joomla/index.php?option=com_content&view=article&id=77&Itemid=445

    They are using 9 webcams I believe in a very pleasant and automated package.

    Good luck!

    0
    onlyjus
    onlyjus

    Reply 10 years ago on Introduction

    So I started playing with this concept. I bought 9 cheapo Logitech web-cams off of ebay. I wrote a python script, using Opencv, to initialize and grab pictures from an arbitrary number of web-cams.

    However, on my laptop, I am exceeding the USB controllers bandwidth and can only access three web-cams. booo.

    I am trying to find ways around this. Anyone have an ideas?

    0
    iddit
    iddit

    10 years ago on Introduction

    What a cool project! Have you considered using hacked Canon DCs? The hacked firmware allows manual controls and custom scripts!

    0
    spystealth1
    spystealth1

    10 years ago on Introduction

    Great sense of humor, oh and your instructable was nice too. Just kidding. :) This is awesome! I want to get into 3d designing and modeling. 123D Catch seems a bit finicky though. I guess if I had better lighting and a capturing jig it would be easier. Is there anything else you did with the 3D model besides print it, (use it in a game or something digital like that)?