gpt4 book ai didi

ios - 将 CIFilter 保存为 RAW 图像

转载 作者:行者123 更新时间:2023-11-28 20:50:14 25 4
gpt4 key购买 nike

因此 CIFilter 接收 RAW DNG 图像。有没有办法可以将图像输出为 RAW?

我正在尝试混合作为 CIFilter 加载的 RAW 图像,然后将它们作为 RAW 输出。它是缓冲区 RAW 值的简单插值。是的,我知道 RAW 照片没有像素。我只是想在这里使用底层的 BAYER 过滤器表示。有什么方法可以使用 CIFilter 来做到这一点。使用第三方库怎么样?

编辑:我正在尝试做的事情:

所以我正在尝试混合(类似于 exposure stacking )使用 Bracketed Photo Capture 拍摄的多张图像.所以我有多个 RAW 照片的像素缓冲区,我试图对它们的像素值进行平均。

在此之前,我会尝试确认我的像素值是否正确。所以我拍了一张红绿或蓝纸的照片,这样它就变成了纯色(差不多),然后我试着看看像素缓冲区值是否符合我的预期。 iPhone 有 RGGB bayer layout所以我希望非常纯红色的图片具有以下布局:

        Col0 Col1 Col3 Col4...
Row 0: [HIGH LOW HIGH LOW ....]
Row 1: [LOW LOW LOW LOW ....]
Row 2: [HIGH LOW LOW LOW ....]

我有以下代码:

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
guard error == nil else { print("Error capturing photo: \(error!)"); return }

guard let pixelBuffer = photo.pixelBuffer else {return}
guard let baseAddress = CVPixelBufferGetBaseAddress(pixelBuffer) else {return}
let bufferHeight = Int(CVPixelBufferGetHeight(pixelBuffer))

let uint16Buffer = baseAddress.assumingMemoryBound(to: UInt16.self)

for row in 0..<bufferHeight {
let col0 = uint16Buffer[row*bufferWidth + 0]
let col1 = uint16Buffer[row*bufferWidth + 1]
let col2 = uint16Buffer[row*bufferWidth + 2]
let col3 = uint16Buffer[row*bufferWidth + 3]
print(col0, col1, col2, col3) // See pixel values
if (row > 3) {break} // don't print more than 4 rows for debugging
}

}

最佳答案

没有办法用 Core Image 做你想做的事。您可以使用 CIFilters“仅”开发和处理基于像素的 RAW 输入。

但是,您可以直接使用 CVPixelBufferGetBaseAddress()(以及一些适当的锁定)访问 CVPixelBuffers 的数据。因此,您可以在 CPU 上进行混合,并可能使用 vDSP 来提高性能。

关于ios - 将 CIFilter 保存为 RAW 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59025046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com