Over the course of the last few weeks, I've become enchanted by Kodak's discontinued Aerochrome film, and color infrared photography in general. This post chronicles what I've learned, how I produced images like this using less than $200 of supplies, and how it could be done for less than $100.
What you are seeing is a meaningful visualization of life in infrared. It is, you might say, "real".
Quick disclaimer: I'm going to be writing this in language phrased as if you, the reader, are following steps to do this yourself. If you actually consider doing this, please read the post fully and carefully before committing! While I'm really glad I got this to work, I can't guarantee you will or that it will make sense for you. That said, it should be fascinating to read about regardless of whether you want to do this yourself!
Table of contents:
Introduction to infrared imaging
The hardware
Assembly
Logging onto the Pi
Taking pictures with the camera
Configuring raw image support
Photo editing
Bonus experiments and video
Conclusion and gallery
1. Introduction to infrared imaging:
The electromagnetic spectrum is huge. Gamma rays go down to a wavelength of a picometer, while some radio waves have wavelengths of kilometers. Humans being humans, we only get to directly see wavelengths in the approximate range of 380 nanometers to 700 nanometers. But our dear camera sensors are not nearly so limited! Not by default that is. Take a look at this diagram I found helpful:
(From https://www.ir-photo.net/ir_imaging.html)
The sensor's natural sensitivity is indicated by the black line, and you can clearly see that it doesn't stop right at 700 nanometers. No, it goes on up past 1000 nanometers! Of course, this usually makes photos look somewhat unusual - camera companies generally want to market their cameras as life-like, not turn-your-garden-into-an-alien-world-like. So, they add a "hot mirror" - a filter that blocks all but the visible spectrum of light. This is in addition to the Bayer pattern that gives us the red, green, and blue components of pixels. That Bayer pattern is a whole other topic, but there should be some great info online if you aren't already familiar. Suffice it to say that if the camera doesn't include the hot mirror, it can be used to see what we cannot.
2. The hardware:
Let me lay out everything I've used here. Essential components will be in bold, though I'm including everything I used.
$35 - Raspberry Pi 3 Model B
$30 - Raspberry Pi NoIR Camera
$25+ - Battery bank with at least 2A output (or equivalent power supply)
$10 - Micro SD card
$50 - Pimoroni HyperPixel 4.0 TFT Touch Display
I also found a Phillips head screwdriver, tape, and a few wooden pencils handy.
You can use other materials. Actually, I'll go as far as to say you should use other materials. The Pi 3 Model B is outdated and still a little pricey. For the most versatile component for use in this and other projects, consider a Pi 4. If budget is your main concern, you might consider a Pi Zero W (note that the Zero will require more connectors than I've discussed). There are actually bundles available with both the Pi Zero W and the NoIR Camera for about $40! A display will be very useful and highly recommended, though not absolutely required. If you don't use some sort of portable display, you'll need to take shots 'blind' through a network connection with another computer. But given that the HyperPixel is rather expensive, definitely consider cheaper displays. Finally, this would be awesome to put in a 3D printed case. I don't have the time or will to do that, but if you did, you could make a much nicer thing than I did and not have to worry about pencils falling off!
3. Assembly:
(Photos in spoilers to save space)
1. Lift the black bar on the ribbon cable connector (the one by the HDMI connector and headphone jack), insert the camera cable, then press the black bar back down.
2. If using the HyperPixel display, lay it screen side down on a flat and clean surface. Be sure the standoffs are installed. Align the GPIO pins, then insert the Pi on top of the screen with smooth and even pressure. Be careful, these screens can be somewhat delicate! Once connected, screw together the Pi and display.
3. At this point, evaluate your specific parts to find some sort of overall goal design. Make sure the Pi won't be in contact with conductive surfaces when in operation; you might need to cover the back of the Pi with tape or some other means of insulation. Also, be sure to keep the SD card slot somewhat accessible - we still need to flash and install the SD card. If you think you'll have trouble getting to the slot later, skip to the SD card installation tips, set it up, and install it now.
4. Use a liberal amount of tape to firmly attach the Pi (or Pi and display) down to the battery bank. Try to do this such that the battery bank becomes a sort of grip for the whole project.
5. Bend the ribbon cable over to the opposite side. Tape the ribbon cable down to partially secure the camera board. Get creative with the tape to fully secure the camera board.
6. It's very possible that if set down with the display up, the whole contraption is resting on the camera module. Probably not ideal! Gather some odds and ends to boost the assembly off the camera. For me, this consisted of three pencils, ends cut off, one cut in half. Use tape or anything else you deem appropriate to secure the odds and ends to the bottom. If you did this right, the device can now rest screen up and the camera module is not touching the table.
Here's what mine looked like at the end of assembly:
This was an assembly overview, so some simple online searches should bring more details on connecting the Pi and camera or the Pi and display.
4. Logging onto the Pi:
You'll probably want to use Raspberry Pi OS (formerly known as Raspbian) flashed to a micro SD card. My preferred method is to download the ISO file from the Raspberry Pi Foundation, then use a tool like Balena Etcher to flash the ISO to the card. Once the micro SD card is flashed, simply plug it into the Raspberry Pi and it should successfully boot. Alternatively, you could try the Raspberry Pi installation tool, found here. I've never used it but it might very well be easier.
Now you have to access the Raspberry Pi. If you have a display that works via HDMI, perfect! Just plug in the Pi, boot, then use the default credentials of username = pi, password = raspberry. You should be on the desktop GUI, or if you selected the light version of the OS, a command line interface.
This isn't the only way to log onto the Pi, however. Suppose you have no screen to set things up, or you have a screen that needs to be set up while logged onto the Pi - what to do? SSH is an incredibly useful way to log on remotely, but typically you need to enable it while logged on to a Pi through the raspi-config command. Get around this by adding a file to the top directory of the micro SD card with the filename "ssh" - no parentheses, no file extension. If you can, by far the easiest thing to do now is connect the Pi to your network via Ethernet. If that is impossible for whatever reason, this thread from Stack Exchange should help you configure it to connect to WiFi. Assuming you have connected the Pi to your network, you need to get its IP address - my favorite tool is the Fing app, found here. The app will scan your network and give a list of all devices connected and their local IP addresses. Once you've found the Pi's IP, you'll need to SSH to the Pi. The tool Putty is great, but if you're sick of installing new apps, you can SSH directly from the Windows command line:
ssh pi@192.168.1.63
Make sure to replace "192.168.1.63" with whatever IP address you've found. If you've already configured the Pi with a different username, just replace "pi" with your username. If this has worked, I'd recommend changing your password. Anyone on your network currently has admin access if they know anything about Raspberry Pi's and the default credentials, so probably best to change that.
If you're using a display HAT, configure it now. The Hyperpixel needs drivers to work, so use this guide from Pimoroni to do that.
5. Taking pictures with the camera:
Preface to this section - I'll be writing as if I expect you are somewhat comfortable with the Linux/Unix command line interface. Many applications on Linux are primarily accessed or installed through the command line interface, so it's kind of a necessity. It's not so bad as it might seem at first! That said, a cheat sheet can make all the difference. Search "Linux commands cheat sheet" or something like that, you should find some useful resources. I don't have the time to write a full Linux tutorial in this IR imaging post though, and plus, it's been done before. Search engines are your best friend in this!
You should be logged onto the Pi now - time to test your IR camera! Open the command line; the following command will save an image named "image.jpg" in your current directory:
raspistill -o image.jpg
If you're logged on directly with a screen, you should see a little preview come up for a few seconds, then the photo will be taken. If you're logged on through SSH, no preview displays. Basically, the camera software is somewhat dumb and just overlays the preview over direct graphics output, and since SSH isn't a graphics output, there's no preview. But don't worry, the photo will still be taken after a few seconds.
This is a good place to mention how you can take pictures without a screen. As I've said, it's not ideal, but it's definitely possible. You'll need to use SSH to do this, so I'd say configure your Pi to connect to WiFi. Connect the Pi to the battery, SSH into it with a laptop, then go to some photogenic scene within WiFi range and use the command line through SSH to take pictures. There will be no preview and it only works in range of WiFi or tethered to Ethernet. Not ideal at all, I know. After all, infrared photos are best taken outdoors with lots of plants. But if you're determined to save a few bucks, you could rig up a somewhat mobile solution by using your router in a backpack with batteries to power it, then connecting both the Pi and laptop to the local network. At that rate, perhaps just get a screen.
6. Configuring raw image support:
At this point, you have all you really need to take infrared imagery. But it's still somewhat limited. You definitely aren't seeing the same result there as I showed at the beginning. To get results like that, you'll need to adjust things like white balance and saturation. White balance is possible to change directly on the Pi! I'll get into that later, but it won't be quite as good as being able to adjust everything afterwards. For that, you'll need raw images. The Raspberry Pi camera software does have a setting for this. Just use the command:
raspistill -r -o image.jpg
The -r stands for raw, basically meaning it saves all the data the camera has, not discarding any data at all. After all, for an image to look natural, cameras have to process the data and in doing so, find that some of that information won't affect the final image at all. So, to save space, a camera throws that data out. But that data is essential to change settings after the photo has been taken, which is what we need to do!
Unfortunately, this JPG file stores the raw data in a way that can't be used by most raw photo editors like Lightroom or Raw Therapee. To extract this data, you'll need to install a tool onto the Pi. If you haven't already connected the Pi to your network, now's the time. Once you've done that, you'll need to install an app called PyDNG, which creates a "digital negative" DNG file from the raw JPG. This post is a great resource, and is how I got this working myself. Instead of trying to rewrite their instructions, just read their post and examine the GitHub linked in the post for further info. If there are any specific issues that crop up, feel free to let me know and I can see if I can help.
Okay, at this point you should have PyDNG installed, and have followed the information in the post to extract a DNG file from the raw JPG you took earlier. We've just got to get the DNG file to your main computer to do some final adjustments. If you're using a screen, it might be easiest to use a USB drive to transfer the files. If you're using SSH, you'll probably want to use FTP - file transfer protocol. If you search for "Raspberry Pi FTP", you should find some detailed tutorials. But in short, you'll want to install something like WinSCP, then use the Pi's IP address and credentials to connect and log in. Once you're in, just find the file on the Pi that you want to transfer and drag it to your computer.
7. Photo editing:
We're getting there! You've taken the photo, converted it, and transferred it. It's just down to editing it now! If you already have Adobe's Lightroom, you know what to do to get this in there. But assuming you don't, I highly recommend RawTherapee! It's free, open source, cross platform, and does almost everything that Lightroom does. Install it, then use it to open your DNG file. I'll put a couple of pp3 preset files here - you can use them to automatically set everything to what worked for me.
Aerochrome.pp3Aerochrome_denoised.pp3
Save this somewhere you can remember, then go back to RawTherapee. If you've selected your file, the software should look somewhat like this. Click on the circled area to open the pp3 file.
Navigate to where you saved the downloaded file, then select it. You should be greeted with vibrant reddish pink plants, dark blue sky, and everything in-between! Play around with various settings from here to get the image to where you want it, then click on the save icon on the left of the bottom bar. You've done it! You read through this monstrously long post, and you might even have a color infrared image to boot!
For the photo experts out there who didn't want to use RawTherapee or my pp3 file, I can explain what is otherwise saved in the pp3. Use the white balance picker to select what you want to be white (clouds, sky, etc), that should make the whole image way less pink. Adjust exposure, contrast, and saturation to your liking. Now adjust the luminance according to hue so that the blue of the sky is somewhat darkened. Adjust the chromacity according to hue so that the blue of the sky is a tad more saturated. And adjust hue according to hue so that the cotton candy pink of the plants becomes a more Aerochrome-like orange-red-pink. Finally, there may be some fairly rough noise as a result of the cheap-ish camera module and heavy edits. Just use a de-noise filter and adjust things until it looks decent. That should do the trick!
8. Bonus experiments and video:
By adjusting white balance, you can get half-decent video in the style of Aerochrome out of this thing! This whole section is very experimental and I can't offer much detail, so I'm putting it all in spoilers to save space. But feel free to experiment. Also note that the sample video below is rather compressed to fit in the post, so it should look marginally better if you try it.
AerochromeVideo.mp4
9. Conclusion:
Is this a smooth experience? Admittedly, not really. Will it take a significant investment of time to set up? Yes, probably best to do as a weekend project. Do you get beautiful results for much less money than other infrared camera solutions? For me, yes! For you, maybe! If you've already got some or all of the materials like I did, I'd say go for it. I don't know that I could have justified spending nearly as much as $100+ on this, but everyone is different, so it's really up to you. I was simply infected with the bug of infrared images and I wanted to take some with what I had, so I did this. If you do end up doing this or something like it, please share your results! Also, while I can't be a tech support agent on this, if you get seriously stuck on something, feel free to reach out and I'll see if I can help.
For now, I'll leave you with my favorite shots made with this method!