iPhone 12 系列在设置曝光时间和 ISO 时会出现照片噪点的问题。

3

当使用iPhone 12系列以自定义曝光时间和ISO拍摄照片时,与iPhone 11和X系列相比,结果会包含大量噪点。

可以通过以下方式之一设置自定义曝光时间和ISO:

  • 使用括号设置进行捕获:
AVCapturePhotoOutput *photoOutput;
// ...
NSArray *bracketedSettings = @[[AVCaptureManualExposureBracketedStillImageSettings manualExposureSettingsWithExposureDuration:CMTimeMake(1, 7000) ISO:50]];
AVCapturePhotoBracketSettings *photoSettings = [AVCapturePhotoBracketSettings photoBracketSettingsWithRawPixelFormatType:0 processedFormat:nil bracketedSettings:bracketedSettings];
[photoOutput capturePhotoWithSettings:photoSettings delegate:self];
  • 设置捕捉设备的曝光和ISO:
AVCaptureDevice *captureDevice;
// ...
[captureDevice setExposureModeCustomWithDuration:CMTimeMake(1, 7000) ISO:50 completionHandler:^(CMTime syncTime) {
   // capture photo
}];

这些方法中的任何一种都会导致 iPhone 12 系列的照片噪点更多。使用超广角镜头将会得到最差的结果。

此示例项目 使用不同曝光时间(1/7200、1/1600、1/400、1/100、1/24、1/12、1/6、1/3、1/2)和 ISO 设置为 50 拍摄了 9 张照片,其中 1/100 和 1/24 的噪音最多:

iPhone 11 Pro 1/24 enter image description here

iPhone 12 Pro 1/24 iPhone 12 Pro

我迄今为止尝试过的事情:

  • 以RAW格式、压缩格式(JPEG/HEIC)和3种不压缩支持格式(875704422、875704438、1111970369)捕获。
  • 将照片设置质量为AVCapturePhotoQualityPrioritizationSpeedAVCapturePhotoQualityPrioritizationBalancedAVCapturePhotoQualityPrioritizationQuality(当在捕获设备上设置曝光时间和ISO时,始终设置为速度,否则设置的快门速度和ISO可能会被忽略,如documentation所述 - 在线文档没有指定这一点,但XCode文档有)。
  • 应用噪声减少CIFilter,但它几乎没有改善结果。
  • 在设置捕获设备的曝光模式和ISO时延迟捕获0.5-1秒,因为我注意到在完成处理程序被调用后立即开始捕获会导致图像似乎不尊重设置的参数。
  • 以以下任何一种方式将图像写入磁盘:
    • NSData writeToFile:atomically: 用于photo.fileDataRepresentation
    • 从photo.fileDataRepresentation创建UIImage,并使用UIImageJPEGRepresentation(UIImage *, CGFloat)以不同的压缩级别进行写入
    • 创建CIImage,并使用CIContext writeJPEGRepresentationOfImage:toURL:colorSpace:options:error:以不同的压缩级别进行写入

噪音问题该如何解决?


你是说在iPhone 12系列上运行相同的代码来捕捉照片,结果比在iPhone 11和X系列上运行相同的代码更嘈杂吗?另外,只是好奇,如果使用原生照片应用程序捕捉照片,结果是否相同或更好? - jjramos
1个回答

0

这与编程方面无关,而是由于硬件限制。

ISO 是指相机传感器(CMOS)对光的敏感度。ISO 设置越高,CMOS 芯片中运行的电压就越高,这个芯片捕捉光线、放大它们并生成数字信号,我们得到的就是原始图像或一些处理后的图像。

在使用高电压时,会产生噪声作为副产品。这就像将微弱的音频剪辑音量增加,我们会听到比增加音量之前更多的噪声。

通常,一些聪明的去噪算法可以帮助数字减少噪声,但图像质量可能会降低或看起来不自然。如果您感兴趣,这里有一篇文章涵盖了其中一些算法: https://towardsdatascience.com/introduction-to-image-denoising-3e269f176483

根据该文章,这些噪声可能被认为是高斯噪声,并且恢复涉及估计原始图像。它说:

高斯滤波器是一种线性滤波器,可以有效地抑制噪声并平滑图像。它的工作原理类似于均值滤波器,都是将滤波窗口中的像素取平均值作为输出。
虽然照片会稍微模糊一些。

这远非对我的问题的技术回答。事实上,高ISO意味着高噪点。上面的例子中ISO设置为50,而标准镜头的最小支持ISO为33,超广角镜头的最小支持ISO为25。我已经尝试过苹果的降噪滤镜,它略微改善了结果。 - Dog
“可能这些噪声被认为是高斯噪声”:这是CMOS相机的错误噪声模型。噪声通常更复杂,因为在获得“原始”图像之前会发生很多内部处理。在处理之前,噪声由热噪声和电子噪声主导,它们通常不会累加到高斯分布,特别是在信号较少且噪声较多的情况下。处理意味着分布对于每个像素都不同,这使建模变得更加困难。 - Cris Luengo
@Dog,我不知道你将ISO设置为固定的50。你最近对问题进行了修改以突出显示这一部分,这非常受欢迎。你是说1/100和1/24曝光设置是最嘈杂的吗?这是否意味着其他更长时间的曝光不会产生太多颗粒? - Kiran Shakya
@CrisLuengo 感谢您的澄清。我只是在参考文章中的一些摘录。 - Kiran Shakya
@KiranShakya,最后一次编辑是在3月26日,早于你的回答。高曝光仍然有噪点,但不像以前那么多了。Github上的项目也展示了拍摄结果。 - Dog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接