Open stevengoldberg opened 6 months ago
Hey - thanks for the detailed reports, this is really helpful and easy to follow. Most bug reports aren't as high quality as this one :)
Here's my thoughts:
I wanted to add such intermediate callbacks to VisionCamera, but first of all that requires a significant rewrite with JSI/C++ (I already have a working concept of that in a separate project we're working on, still private), and also it does not work on Android.
You can however use the takeSnapshot
function in VisionCamera V4 to achieve something similar, where the actual photo comes in later.
Thanks for the reply — that makes sense re the perceived difference in capture speed.
The thing I’m still confused about is why choosing the format with a higher max iso results in a photo with a lower ISO according to the EXIF. Why do I need a max ISO of 12768 to take a photo with 1000 ISO? Is there some other difference between the formats that isn’t being reported, and the max ISO difference is merely coincidental?
Might also be the case, yes. I don't know what differences these are though
Here's some additional format details from all cameras on my iPhone 15 Pro:
The only real differences I spot between the top formats is colorspace. Do you think that makes a difference?
4032x3024 | 2592x1944@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB) | ISO: 55.0..5280.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
4032x3024 | 2592x1944@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB, P3) | ISO: 55.0..5280.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
4032x3024 | 3264x2448@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB) | ISO: 55.0..5280.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
4032x3024 | 3264x2448@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB, P3) | ISO: 55.0..5280.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
4224x2376 | 3840x2160@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB) | ISO: 55.0..5280.0 | Exposure: 2.3e-05..1.0 | Focus: phase-detection | Studio: false
4224x2376 | 3840x2160@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB, P3) | ISO: 55.0..5280.0 | Exposure: 2.3e-05..1.0 | Focus: phase-detection | Studio: false
4224x2376 | 3840x2160@30 | Binned: false | EDR: false | Tone Mapping: true (HLG_BT2020) | ISO: 55.0..5280.0 | Exposure: 2.3e-05..1.0 | Focus: phase-detection | Studio: false
4224x2376 | 3840x2160@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB, HLG_BT2020, LOG) | ISO: 55.0..5280.0 | Exposure: 2.3e-05..1.0 | Focus: phase-detection | Studio: false
4032x3024 | 4032x3024@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB) | ISO: 55.0..12320.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
4032x3024 | 4032x3024@30 | Binned: false | EDR: true | Tone Mapping: true (sRGB, P3) | ISO: 55.0..12320.0 | Exposure: 1.5e-05..1.0 | Focus: phase-detection | Studio: false
(ordered bottom to top in ranking)
heyo - bumping this @stevengoldberg
I'm afraid I don't have any more insight on this — I did skim through Apple's camera documentation, but didn't find anything that seemed relevant. In my app I'm back to using the iso: 'max'
filter to capture with max quality, which generally seems to match the output of the native camera app.
I'm afraid I don't have any more insight on this — I did skim through Apple's camera documentation, but didn't find anything that seemed relevant. In my app I'm back to using the
iso: 'max'
filter to capture with max quality, which generally seems to match the output of the native camera app.
Can you show me full format object ?
Can you show me full format object ?
Which one? I posted format objects in the original post of this thread.
The object which helps capture images with max quality, I tried your above objects but the image looks quite blurry and the speed also slows down every time I add format props. Thank you
Question
I'm revisiting the issue of how to take the sharpest photo possible while displaying the result as quickly as possible, and I'm confused about the results I'm seeing.
The following are all cropped segments of photos taken on an iPhone 14 Pro camera at neutral zoom. In all cases I am passing
enableHighQualityPhotos
to theCamera
component andphotoQualityPrioritization
is set to'quality'
.This is the result from the native iOS camera app:
The original photo was 3024x4032, ISO 1000, 24mm, f.178, 1/30s exposure.
This is the result from my
vision-camera
app using this format:The image is much blurrier. It's the same resolution, same camera, same everything except the ISO is 3200 and the exposure is 1/90s.
To take sharper photos, I've been adding
{ iso: 'max' }
to the format filter. Doing so selects the following format:Taking a photo with this format is noticeably slower — slower than using the native app, I think, but I can't measure it to be sure. Here is a screen recording demonstrating the difference in capture speed between the two formats. But the result looks similar to the native app:
And sure enough, this photo has the same specs as the one taken with the native app — ISO 1000, 1/30s exposure.
And just to be thorough, I took one with ShadowLens as well (after raising the exposure back to 0):
There's no lens information available, but it looks roughly in between the two results taken in my app.
Now, what confuses me is: why does selecting the format with the higher max ISO result in a sharper photo with a lower ISO value? These ISO values are nowhere close to the min or max stated by the formats. Is there any way to produce the sharp result without the capture slowing down so much?
What I tried
No response
VisionCamera Version
3.9.1
Additional information