我想在 iPhone 应用程序中进行一些极端的自定义色温调整,我试图了解:使用 AVFoundation 与使用 CoreImage 滤镜有什么区别?
当您使用 RAW 拍摄照片时,与 JPEG 文件甚至 TIFF 等无损格式相比,RAW 文件从相机传感器记录的图像信息更多。我认为正因为如此,您才能对 RAW 文件进行真正的事后白平衡,而佳能的这位发言人似乎也这么认为。
由于 iOS 不允许您访问类似 RAW 的相机数据表示,因此我假设您需要在拍摄时使用 iOS 相机系统本身进行色温和色调调整。AVFoundation 为此提供了 API,在 iOS8 中引入。它允许您通过查询设备支持的色温调整范围deviceWhiteBalanceGainsForTemperatureAndTintValues(_:)
。(这使您可以使用温度/色调对来计算白平衡增益,并且设备会报告其允许的最大白平衡增益。)
但是,Core Image也提供了用于调整图像色温的 API,通过CITemperatureAndTint
. 这让我很困惑,因为 Core Image 不需要 RAW 数据,也不需要访问设备的相机系统。
如果你只能用 RAW 数据做真正的白平衡和色温调整,而 iOS 没有给你这些信息,那么 Core Image 怎么能做到呢?此外,如果 AVFoundation 允许根据设备进行不同的调整,那么 Core Image 如何以独立于设备的方式进行呢?
Core Image 是否只是粗略地近似了 AVFoundation 做得更好并且数据更多的情况?还是 AVFoundation 白平衡例程只是现有核心图像过滤器的高级包装器?
我想问这个问题的另一种方法是询问 AVFoundation 的色彩校正例程是否受益于对我自己无法访问的传感器数据的特权访问,使用相对较低级别的 API,例如captureStillImageAsynchronouslyFromConnection(_:completionHandler:)
和CMSampleBufferGetImageBuffer
.