前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS图像处理系列 - 双重曝光技术的GPUImage实现

iOS图像处理系列 - 双重曝光技术的GPUImage实现

作者头像
天天P图攻城狮
发布2018-02-01 16:59:52
2.8K3
发布2018-02-01 16:59:52
举报
文章被收录于专栏:天天P图攻城狮天天P图攻城狮

多重曝光(multiple exposure)是摄影中一种采用两次或者更多次独立曝光,然后将它们重叠起来,组成单一照片的技术方法。由于其中各次曝光的参数不同,因此最后的照片会产生独特的视觉效果。

多重曝光是一种拍摄技法,不过为了烘托气氛,常常选择这种技法,多重曝光技术一般用来拍摄双影或多影照片。可以拍摄出魔术般无中生有的效果,这也正是它的独具魅力之处,所以才吸引了很多人使用这种技法。

下面的图1和图2就是双重曝光摄影技术的两个典型示意。

Screen混合模式是重曝技术中应用最广泛的混合模式,它将两个混合图层的色值先取逆,再相乘,最后再对所得的乘积取逆,即f(a,b)=1-(1-a)(1-b)。Screen模式可以获得比两个原始图层更亮的像素值。

它的fragment shader如下,

在实际应用中由于用户照片与叠加层素材的分辨率不尽相同,为此我们定义了四种剪裁拉伸方式来规范素材纹理的输入。

第一种拉伸裁剪方式为素材等比缩放,照片居中:即把素材图等比放大或缩小至能够恰好包含用户的照片,并使用户的照片居中融合;它适合于内容重点较居中,无所谓边缘裁剪的素材图。

第二种拉伸裁剪方式为素材等比缩放,照片贴顶(贴底):即把素材图等比放大或缩小至能够恰好包含用户的照片,并使用户的照片贴顶(贴底)融合;它适合于内容重点较边缘,需要保留边缘的素材图。这里的“照片贴顶(贴底)”,对于横版素材图来说就是贴左(贴右)。

第三种拉伸裁剪方式我们称之为素材按照片尺寸拉伸:即把素材图放大或缩小(不需要保证长宽比)至用户照片的大小,并与之完整融合;它适合于内容比较抽象的素材图,比如云朵、彩虹。

第四种拉伸裁剪方式为素材等比缩放,素材居中:即把素材图等比放大或缩小至能够恰好被用户的照片包含,并使素材图在用户的照片居中融合;它适合于图案独立,且需要完整保留在用户照片中的素材。

上图给出了以上四种拉伸剪裁方式的示意,具体地我们重写了基类GPUImageFilter的

- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex方法以增加拉伸剪裁操作。

另外我们会实时地计算人脸所在的区域,用以在融合过程中避开用户的人脸。下图所示是带有人脸抠除的双重曝光滤镜处理链示意。首先我们对摄像头采集到的每一帧画面做一个基础颜色调整得到中间帧1。与此同时,根据用户选择的素材图按照上文中提及的某种方式进行拉伸剪裁得到中间帧2。系统在帧1上进行人脸检测,计算得到人脸中心与人脸区域相对该中心的最大半径,根据这两个值实时生成一个从圆心到圆周的渐变遮罩即中间帧3。圆心为纯黑(0x000000),圆周为纯白(0xffffff),中间带有渐变。将中间帧1与中间帧2根据中间帧3进行混合,得到中间帧4。由于混合以后的中间帧4的脸部丢失了素材图的基底色,略显突兀,须补上。因此在最后计算出中间帧2的一个基色值,并由此生成一帧纯色图,根据中间帧3的反色遮罩,与中间帧4再做一次混合,得到最后呈现在相机预览界面的实时图像。

作者简介:atilazhang(张子鋆),天天P图iOS工程师

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 天天P图攻城狮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档