It’s been six weeks since my last update (still working on my goal to be a better communicator in 2018), and although I know there hasn’t been much to see from the outside, I’ve been making some really exciting progress on FilmLab. In an effort to keep all my updates from being ridiculously long, I’m going to break this one into series of shorter parts. Here’s part 1.
Getting color conversion code production-ready
In my last update, I talked about the work I’ve been doing developing a new color conversion engine. In the time since, I’ve been working on getting that code (which was running inside a small test app on my desktop so I could test changes quickly) ready for use on mobile. That was a bit of a challenge, since it has to work at 30 frames per second on devices with less processing power, but it’s looking good now. And I’ve been gaining useful knowledge about optimizing image processing.
I’ve also been integrating with native color management frameworks (first on iOS, with Android coming up next). This lets FilmLab read more accurate input colors from the device camera (and from files with embedded ICC profiles), and generate output files with wide-gamut colors that accurately reflect the beautiful tones of film prints and slides. There’s a whole lot more to say about color, so I’ll cover that topic in detail in the next installment.
Improving automatic exposure and color balance
Having good color conversion still doesn’t get you all the way to having good looking results. You still need to pick exposure and color balance settings for the digital “print” being made from the negative. FilmLab is going to allow you to do this manually, but for ease of use it needs to have good automatic settings too. The initial implementation I did for FilmLab 0.1 was barely adequate, so I’ve been developing new automatic exposure and color balance algorithms to go with the new color conversion.
This is one of those tasks where there’s probably a never-ending number of improvements that could be made. Like, wouldn’t it be cool to have automatic face detection, and then choose settings to optimize the skin tones in faces? But I don’t want to go down that rabbit hole just yet. I think what’s there now will be good enough to get to version 1.0, and I can always spend more time on it in the future.
FilmLab beta 0.3
With these changes in place, it’s FINALLY almost time to get another release into the hands of testers. The next FilmLab beta will be version 0.3, the first in what will be a series of 0.3.x releases. The 0.3 series is going to be all about image editing, with a secondary focus on fixing Android bugs. In version 0.3.0, the new color conversion code will be running inside the existing editing UI, but there’s a whole new editing UI on the way after that. Before we move on to version 0.4 I want to have the image editing UI completely finished.
UI stories wanted
Image editing on mobile is an interesting UI problem. How do you provide access to lots of powerful editing controls, while still keeping the UI out of the way so the user can focus on their image? I’ve been doing a lot of thinking and sketching, and evaluating how other image editing apps solve similar problems. And I want to take this chance to reach out to the community and ask for your opinions too.
So tell me: what mobile image editing apps are your favorite to use, and why? Are there some user interfaces you find a joy to use? Which UIs are the most frustrating? Please let me know. Hearing your experiences will help me make better decisions as I build out the FilmLab editing interface.
FilmLab 0.3.0 will be released for iOS next week, and for Android the week after that. From there, it will be a few more weeks of iterating on version 0.3.x as I build out all the UI controls, and work to get FilmLab running reliably on all Android devices.
Once 0.3.x is complete, I’ll start working on the 0.4.x series, which will be all about better live preview, automatic frame recognition, and capture. This is something I’ve been looking forward to getting back to for a long time, and I’m full of ideas that I’m excited to put into action.
I mentioned in my last post how I’ve been thinking about using machine learning to develop intelligent frame recognition. I still think that’s the right approach in the long run, but I don’t think it worth holding up FilmLab 1.0 while I work on that. So I’ve come up with a few ideas for simpler frame-recognition techniques, which hopefully will work well enough to let me ship FilmLab 1.0.
To continue to pay my bills while working on FilmLab, I’m considering taking on a small amount of consulting or short-term programming projects. I don’t want to stray far from my main project of FilmLab, though, so I’m limiting myself to projects involving photography, image processing, and analog media digitization. I will have a few consulting/programming weeks available over the coming months. So if you have an interesting project involving technology and photography, and you’d like to hire a programmer who’s been living, breathing, and bleeding analog film for the past year, drop me a line at email@example.com.
Next week, in the FilmLab February update part 2: What I’ve learned about film negatives and color, in 5,000 words or less. And with pictures!