Android GPU加速实现图像颜色传递(Color transfer)
来源:互联网 发布:狄仁杰魔术师皮肤优化 编辑:程序博客网 时间:2024/06/05 05:12
题记:
最近研究了使用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时需要进行实时计算最终结果,而这即只能提供40-50ms,所以最终只能考虑使用gpu加速进行实现。
最终效果图如下图:最下面一排为被转移图像或者可以称为自定义滤镜,下面这张图像使用了最左边的作为自定义滤镜。
1. 搭建Android gpu图像处理加速框架
- Android GPU加速实现图像颜色传递(Color transfer)
- Color Transfer between Images实现
- Android Color 颜色过度计算实现方法
- flare3d实现GPU加速Demo
- 利用GPU实现Matlab加速
- GPU 加速下的图像处理
- GPU 加速下的图像视觉
- 安装cuda支持GPU加速图像处理
- GPU 加速下的图像处理
- GPU 加速下的图像处理
- GPU 加速下的图像视觉
- GPU 加速下的图像处理
- GPU 加速下的图像视觉
- GPU 加速下的图像处理
- color transfer
- Color Transfer
- android 颜色(color)
- Android 颜色Color
- linux 命令系列之 echo(40)
- 字符串简单匹配算法
- hbase down机 重启zookeeper 解决的异常
- ORA-19909: datafile 1 belongs to an orphan incarnation 一例
- linux 命令系列之 history(41)
- Android GPU加速实现图像颜色传递(Color transfer)
- android比较好的博客
- 临时变量与复制构造函数
- linux 命令系列之 alias 和 bash快捷键(42)
- Map容器(hash_map)
- 媒体曝光社保系统漏洞,数千万社保用户信息或泄露
- 关于云服务怎么玩
- 仿快图系统自带图片浏览器应用源码项目
- tomcat添加到系统服务,提供启动脚本