Photogrammetry Booth

I recently joined a group interested in photogrammetry, it is worth saying that I have been exploring this technology for the past three years. I believe that there is a huge ground yet to be covered and also that it has a huge potential for VR, AR, and game development industries.

A month ago, I had the opportunity to attend a quite interesting meeting held at CSM where a research team shared their experience in building a portable photogrammetry booth that could be used by both museums and similar organizations interested in documenting their collections.

I was really impressed by the array of 7 DSLR cameras, all reacting to the synchronized movement of a rotating platform holding the 3D Model. This project inspired me to create a low-cost alternative using Raspberry Pys as I already knew you could use them as cheap DSLR cameras.

I started my research by looking at the Raspberry Pi camera features and I was lucky enough to have access to both 5MP and 8MP versions so it was easy for me to run a series of tests using both cameras.

First, I learned how to take a single image using a python script that was executed from the Raspberry Pi. On the first two lines, it just calls some libraries needed to take the photo, the third line calls the camera object and the forth activates it, from there, all the consecutive lines set different parameters for the camera. Next, ” camera.capture” saves the image in a specific folder and the last line shuts the camera off.

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
sleep(3)
camera.iso = 100
camera.shutter_speed =8000
camera.sharpness = 10
camera.resolution = camera.MAX_RESOLUTION
camera.capture('/home/pi/Desktop/test3.jpg')
camera.stop_preview ()

It worked!

Next, I wanted to create a code that would allow me to take simultaneous photographs of an object from 8 different angles. As I did not have a rotating platform, I was aware that I needed enough time to manually rotate the object up to 45 degrees each time in order to achieve a full 360 rotation in 8 steps.

And this is the code I managed to create, it is basically the single image code duplicated eight times and separated by a small delay (sleep (X)).

from picamera import PiCamera
from time import sleep

camera = PiCamera()

camera.start_preview()
sleep(3)
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA1.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA2.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA3.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA4.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA5.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA6.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA7.jpg')
camera.stop_preview ()
sleep(5)
camera.start_preview()
camera.iso = 150
camera.shutter_speed =7000
camera.sharpness = 100
camera.capture('/home/pi/Desktop/imagesP4/imageA8.jpg')
camera.stop_preview ()

I also managed to create a proper setup using two sidelights and a lightbox to fade shadows as much as possible. I also managed to create a quite practical camera tripod by using a flexible desk light I had around.

Continue on page two.