1/2 million pictures a year – a recipe to ruin your DSLR
To be short I will be talking about long term tethered time-lapse photography (it is also a good platform for construction camera). While final movie can be very short this kind of photography involves lots of planning and technical skills. During long time time lapse project a lot of things can go wrong. Also prepare to ruin your DSLR if you are using one.
Today I will talk about one of my long term time-lapse setups. It was a Nikon D80 installed in office taking pictures of building construction, so it had pretty good operating conditions and died after almost 500000 pictures, which is much more than rated by manufacturer and I am pretty pleased by results. Today I have several experimental setups and they are all different:
- Nikon DSLR indoors (Camera died after 500k pictures taken)
- Canon DSLR outdoors (online, 100k and counting)
- IP-cam indoors (picture count is not relevant, almost a year online)
- IP-cam outdoors (picture count is not relevant, almost a year online)
- Hacked Canon G7 Point/Shoot camera outdoors (More than 2 years online, relocated 2 times, still operating, more than 1000000 pictures taken)
- GoPro 3 black hero (unreliable camera, was online for 2 months then died)
- ActionCam outdoors @ Ventes Ragas (was online for a 9 months, relocated, needs to be fixed)
- Dirty windows. Outside window will always get dirty. It is a good thing to install your camera near a window you can open. Watch and clean it constantly.
- Reflections. Unless you install camera in black room, in certain conditions there will be reflections from objects in a room. Mount shade around lens. Window facing side should be painted black non-reflective color.
- Eye piece. Unless room will be black during dark times, you must cover DSLR eye piece (see blue masking tape in a picture above). If you shine some light into it – exposure will be off and nocturnal shoots will be ruined.
- Remote location. Consider locating your camera in place where it will not be disturbed. You don’t want your camera to be touched during long time.
How it’s made
- Nikon D80 camera (thank you Juozas for donating one!)
- Carambola2 (with plexiglass case to protect against dust)
- Some trivial harness (Tripod, AC power supply for camera and Carambola, cables, UPS if available, temporary offline local storage is also good choice)
Carambola runs OpenWrt with installed gphoto. Nothing special for indoor installation. Unfortunately this setup hangs from time to time. Seems like it is Nikon USB issue – it is not designed for this kind of application. To reset – camera has to be rebooted. For completely unattended setup there should be installed relay for powering camera off and on.
How it works
Crond script running on Carambola2 fires script every minute – it takes a picture and uploads to server via FTPS (FTP with SSL security). Write only FTP server is also specially written Python script, which executes set of scripts after receiving a file. File is being resized, post-processed and archived. Also movie is being created every hour starting 00:00 hour. Resized and post-processed photo and video is pushed for public consumers using websockets.
This machinery is being hosted on commercial server to maintain performance and achieve maximum up-time. Unfortunately storage space is very expensive there, so another party involved – all archived pictures are downloaded and archived to RAID disk array server every night. That’s a very rough description of what’s going under the hood. Though it is possible to view live pictures live without any restrictions, server (which is also based on Python) has no load handling implemented and can’t be published for mass display at the time.
After collecting many many pictures you face a problem what to do with terabytes of data. Of course you can join them in a sequence, this is first idea that comes to mind. Second idea that comes to mind is how to find out what’s the quality of taken pictures. So another set of scripts comes into help – collect all taken pictures into one list (SQLite3 comes handy in this task) and analyze. Various data being put into one place – filename, date, EXIF information, temperature if available and so on. Now we can analyze this data and get visual representation of various parameters: temperature chart, cloudiness, movement, traffic intensity, calculate sunny days, etc. All this can be achieved with OpenCV library (some combining tasks might take a week, so prepare undisturbed computer). For time being I just wanted to combine all days each next to other and display parallel days at the same time. So here is a result – short movie of this hypnotizing view. View in 8K-UHD or 4K-UHD resolution if you can.
Here is one more extra video from Ventė Cape. This project is ended and, but might be renewed some day.
While I develop this project alone, I have no fixed goals and no deadlines set. It is just an way to experiment with technology. From time to time I have ideas to increase camera count, write or adapt software for distributed file storage so anyone could contribute not only with hosting camera but sharing some disk space. Also I have skills to build USB camera based high quality sensor (let’s say Sony IMX117, IMX135 or even IMX220), bit it requires an investment. If you need some prof that I am capable of making things – take a look at my recent projects (some of them are described in details in older blog entries).