【发布时间】:2021-12-21 07:57:42
【问题描述】:
在我的应用程序中,我试图实现一种运动模糊功能,它将来自视频输出的不同帧(平均它们)堆叠成单个图像。我试图获得的效果在这里得到了很好的解释:https://photographylife.com/image-averaging-technique。
我尝试使用自定义 CIKernel 对每个颜色通道执行平均操作,如下所示:
float4 makeAverage(sample_t currentStack, sample_t newImage, float stackCount) {
float4 cstack = unpremultiply(currentStack);
float4 nim = unpremultiply(newImage);
float4 avg = ((cstack * stackCount) + nim) / (stackCount + 1.0);
return premultiply(avg);
}
您可以在此处找到有关完整代码的更多详细信息:Problems with frame averaging with Core Image
它可以工作,但过了一会儿,图像中开始出现奇怪的补丁,暗示颜色通道正在剪切。
有没有一种方法可以在核心图像中使用 alpha 混合来实现相同的结果?也许,不是在颜色通道上进行堆叠操作,我可以堆叠具有递减 alpha 值的后续图像吗?
如果是这样,执行此操作的程序/算法是什么?
【问题讨论】:
标签: swift avfoundation core-image