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

题记:

最近研究了使用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时需要

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值