Experimental Nighttime Photography with Nexus and Pixel
research.googleblog.com
research.googleblog.com
This should be the future of DSLRs. Provide some sort of API so that I can create recipes for my photography project. Bonus if the hardware is powerful enough for me to process the way I want to on it (as opposed to the builtin, mostly useless, features).
As a silly example, say I want to take 10 photos. I want the first photo to be 1/30s. The next 1/15s, and so on - doubling the interval each time. I just want to be able to program this, and assign it to a button/menu item, so it will do it automatically.
Or I want to do custom focus stacking. It should automatically take N shots of predefined focal distances, and if powerful enough, stack them.
I've never coded Android apps, so I don't know how much control over the camera is exposed to you, but why can't camera companies provide the same level of control?
I never considered Sony. Too limited in terms of lens choices. But if this capability is flexible/powerful enough, then it does kind of compensate.
The one thing it doesn't do is much in the way of image processing on board the camera. Generally it is left to the user to perform post-processing on a PC - partly due to lack of CPU power on the camera, and partly because you can get far better tools and hence results on a PC anyway.
[1] http://www.magiclantern.fm/
[2] http://www.magiclantern.fm/forum/index.php?topic=14828.0
I'd heard of Magic Lantern, but never looked into it as it's for Canons. I own a Pentax :-(
It inserts hooks into the Canon firmware to give you many professional features, and supports scripting so you can customise what it does.
I haven't used it (yet) but it might do what you need.
Also the Android (and probably iPhone) stores have many like this https://play.google.com/store/apps/details?id=de.dslrremote
There are some options available: http://chdk.wikia.com/wiki/CHDK , http://magiclantern.wikia.com/wiki/Magic_Lantern_Firmware_Wi...
Link to said app: https://play.google.com/store/apps/details?id=eu.chainfire.d...
DSLR Controller is written by Chainfire. The same developer who also created SuperSU, FlashFire, CF-Auto-Root etc.
Most DSLRs already have something like that. Both Nikon and Canon, at least, have free SDKs downloadable from their websites, and on Linux gphoto supports a ton of cameras.
As far as doing everything on camera, most higher end DSLRs have built-in controls for bracketing, multiple exposures, time lapse, etc.
I haven't used it directly myself, but Capture One uses the Nikon SDK, and it's able to fully control my camera with live view. In fact, they even have an iPad app for controlling the camera, with live view on the iPad.
Get the best of both world by combine Android as GUI/API layer + some big DSLR sensor/ custom image processing HW magic.
The techniques in that blog post are known since 10 years ago. In fact they are quite crude, as they don't account for other types of noise like readout noise, also it does not takes a map of individual pixel sensitivity taking "flat" frames.
Stacking pictures is the foundation of astrophotography and there are many free utilities that does this, for example:
http://deepskystacker.free.fr/
BTW digital cameras already take a "black" frame and substract it from the "light" frame automatically, that's why sometimes the camera takes some time to show you a long-exposure picture: it's taking a black frame with the same exposure time.
Something like auto focus stacking. The camera need not do the stacking - just automatically focus on various portions of the scene and take pictures. I can then stack on my computer. Currently I have to focus at one spot, take the picture, then focus on another, take the picture, etc. What I'd like to do is to specify the five focus points, and have it then do the rest of the work.
The in-built bracketing capability in cameras is really minimal.
I was looking at Magic Lantern, and it has a time lapse that essentially maintains a constant brightness - so when the day transitions into night, the camera auto-adjusts the exposure to make sure the subject does not become darker.
Lots of possibilities.
The main problem I have is that it shuts down after 10-30 minutes of use - no help from google. https://code.google.com/p/android/issues/detail?id=227849 Makes me want an iPhone. (see below Huawei might be fixing)
[1] - https://chimicles.com/google-nexus-6p-battery-early-shutoff-...
[2] - https://www.engadget.com/2017/04/21/lawsuit-takes-aim-at-goo...
https://issuetracker.google.com/issues/37117345
Despite the comments there about software it is most likely about heat and a component which is affected over time.
I've had a 5x just go dead. Bought a Pixel, it died after a week (probably unrelated to this fault). The replacement is fine though and the phone is great overall and the camera is fantastic.
I called Google (bought it from the play store), they asked me to try a couple of things in order to repair the phone (completely useless but the operator has to follow the script).
Of course it made no difference, but just after confirming that, they sent me replacement device.
The takeaway is that with some effort and intelligent use of other software tools, you can put together a nice image with all sorts of lower-end cameras. The bit at the end about hopefully adding some of this functionality to software available on the phone was a nice touch, as I imagine all of the big players are always working on that sort of thing.
DSLR: https://1.bp.blogspot.com/-JJORxMmYFuw/WPkESrozTuI/AAAAAAAAB... Pixel: https://4.bp.blogspot.com/-yo9hRd3xLLg/WPkERdbOs7I/AAAAAAAAB...
What's the reason for this? Is it a hardware restriction? I suppose an artificial software restriction could be removed by using root / other camera software.
Shortest explanation: The sensor exposure time register has a maximum value.
Next shortest: But it's actually in units of row readout time, on many sensors, which is also configurable, so the exposure time can be made longer at the cost of slower image readout. In normal operation, readout has to happen at 30fps at least, so extra code is needed to switch to slower readout for extended exposure values. This code then needs validation, the image processing tuning tables need to be updated and verified for the new long exposure durations, and any preview glitches, etc, from resetting base sensor configurations need to be addressed. So a lot of extra work, for a relatively niche feature on a smartphone.
Even longer: Many sensors also have an external shutter trigger signal pin, for unlimited exposure duration. But that needs to be wired to the CPU, and all the SW considerations above also apply.
When collecting light, an image sensor pixel isn't really using up any active power (each pixel is basically a capacitor collecting electrons generated by light hitting the silicon).
However really long exposures are going to suffer from star trail effects - the earth is rotating relative to the stars, so a long exposure changes stars from a point to a short line, which _usually_ isn't what you want. On a 35mm camera with a fairly wide lens you can get away with ~ 30s of exposure time.
On a pixel phone I think you'd be able to get away with ~ 3s exposure time, but as it's going to get pretty hot over this time I'm not sure how much extra image quality you'd actually end up with.
Not as fast, but the results look fairly similar.
I've tried with iPhone to take long exposures and crank up the brightness/HDR to bring out as much signal as possible. This is the best that I could do on a fully moonlit night: http://imgur.com/a/km1D9
Look at the detail added to the mountains in the background
I used Camera+ which stitches together images similarly to the article
Although this article is about the challenge - decent photography with a mobile phone - it does outline how easy it is to layer up lots of images in Photoshop, median everything out and get a long exposure image. Taking out the sensor 'median' was clever too.
So you could use this with DSLR images too, to take better long exposure images whatever the sensor, so long as everything is fully HDR and manual.
I think that I might just give it a go. With PHP Imagemagick so that I can automate the Photoshop part and tweak settings easily.
On advanced models (and hacked cameras like MagicLantern/CHDK), you can turn this off and do it manually, e.g. shoot a dark frame for only the first image in a series so you can get ~95% duty cycle rather than ~45%. Especially useful if you're trying to capture a rare event, e.g. lightening.
What's weird about the technique in TFA is he takes N bright frames and then N dark frames, computes both medians and then subtracts. By interleaving bright and dark frames, and doing the subtraction before stacking, I'm pretty sure they'd get better results.
As for image stacking, there's tons of ways to do it, and quite a few turnkey apps for image stacking for astrophotography as well, e.g. here's a review from last year of a Mac app doing just this:
https://petapixel.com/2016/02/20/stack-photos-epic-milky-way...
(e1 + e2 + ... en) / n - (b1 + b2 + ... bn) / n = (e1 - b1 + e2 - b2 + ... en - bn) / nIt's possible that something like Thue-Morse (+--+-++--++-+--+ etc.; one way to define this is to look at the parity of the number of 1-bits in the binary representation of the frame number) might be better than alternating. If whatever disturbances you might worry about are smooth in the right sort of way, it gives you more exact cancellation than alternating.
I've already started using phone camera app to enhance my vision for text that's too far to read. Advances in post-processing will increase our vision even more, as well as allow for night vision and understanding text in other languages. We are transitioning into cyborgs by means of android platform...
given the previous posts from the googleblog I kind of expected a bit more algorithmic involvement beyond image stacking.
Not so fast buddy. Some of us have been playing with this stuff for a really long time :)