Android GPU加速实现图像颜色传递(Color transfer)

本文探讨了在Android上使用OpenGL ES实现图像颜色传递的GPU加速方法,以解决CPU处理耗时问题。通过将图像转换到Lab色彩空间,计算均值和方差,然后应用特定算法来改变目标图像的颜色特性。GPU版本的实现显著提高了处理速度,适应了实时调整和用户交互的需求。
摘要由CSDN通过智能技术生成

题记:

最近研究了使用opengl es在安卓上实现图像颜色传递。其要实现的效果是将一张图像的颜色特征传递给另外一幅目标图像。算法基于http://www.cs.utah.edu/~shirley/papers/ColorTransfer.pdf。基本思想是将图像转换到lab色彩空间,计算被转移图像和目标图像在该空间中的均值与色彩方差,之后将目标图像像素的lab值减去该图像的lab均值,再乘以被转移图像方差与目标图像的方差比值,最后加上被转移图像的lab均值。计算结束后,将图像从lab转换到rgb颜色空间进行显示。

该算法在pc上可以使用cpu进行计算,但是在手机上只是使用cpu需要消耗很长的时间,尤其该算法需要至少5次遍历图像像素,即便提前计算出被转移图像的lab空间均值与方差,依旧需要3次图像像素遍历(目标图像计算均值遍历一次,计算方差遍历一次,还原rgb计算一次),同时该算法遍历图像时需要进行log和pow运算,该两项运算又是极为耗时。在实现GPU版本之前,本人先实现了安卓上的cpu版本(native层实现处理),其中log和pow运算使用查表方式,但是处理一张1080*720的图像依旧需要300ms。这在用户体验上是不可接受的,尤其为了更方便用户的操作,本人对于原算法进行了一点改进,在最后一步加被转移图像均值时(假设为 meanSource),用户可以实时的在(0 - 2 * meanSource)中进行选择,其意义为将该图像有多么偏向于被转移图像。用户在拖动seekbar时需要

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值