如何从 3 个 8 位灰度图像创建 RGB CIImage?

How do I create an RGB CIImage from 3 8-bit gray images?

我有 3 个 CIImage 对象,它们是灰色的 8-bpp 图像,它们是新图像的 8 位 R、G 和 B 通道。除了低级图像像素数据操作之外,是否有一种方法可以构造 CIImage(通过过滤器或其他更简单的方法)

我意识到我可以通过循环遍历新 RGB 图像的像素并从我拥有的灰色通道设置它来做到这一点 -- 我想知道是否有更惯用的方式来处理通道。

例如,在 Python 的 Pillow 中,它是 Image.merge([rChannel, gChannel, bChannel]) -- 如果没有内置方式,我知道如何编写像素访问方式。

本书 Core Image for Swift 介绍了如何执行此操作并在此处提供了执行此操作的代码:

https://github.com/FlexMonkey/Filterpedia/blob/master/Filterpedia/customFilters/RGBChannelCompositing.swift

基本思路是,你需要在GPU着色器语言中提供一个颜色核函数,并将其包装在一个CIFilter子类中。

注意:此处未复制代码,因为它属于 GPL,这是与 Whosebug 答案不兼容的许可。如果您想查看它是如何完成的,可以关注 link,如果它与您的许可证兼容,则可以使用它。