专栏首页音视频技术学习笔记照片处理-阿宝色滤镜

照片处理-阿宝色滤镜

一、什么是阿宝色

阿宝色

阿宝色是一位摄影师名为阿宝(网名:aibao),原名董立竑,由他在2008年左右所创的一种特别的色彩。这种色彩主要是,橘色的肤色和偏青色的背景色调为主,整体的视觉效果非常清新、唯美,因而得到大家的喜爱。

二、Lab色彩模型实现a宝色(photoshop)

参考百科:

Lab 把颜色分成 L(黑->白),a(绿->红), b(蓝->黄)三通道。

对于风景人物照片,自然风景绿色为主、人的肤色红润为主。所以a通道中红色和绿色的部分比较明亮,因此将a通道中的数据复制到b通道中,增加蓝色和黄色,这样三通道混合后人物的肤色会变为橘色,环境中的绿色会变得青色,整体风格会显得高冷、缥缈。

PS中如何调整Lab,读者感兴趣可以在网上找找,有很多教程。简单说明下,图像->模式->Lab->选中a通道全选复制数据(cmd +A / cmd + c)->选中b通道粘贴(cmd + v),最后再切回RGB通道导出,可以得到阿宝色的图片。可能颜色不够舒适,还可以调整饱和度、亮度等属性。

三、基于LUT的代码实现

  1. 将原始LUT导入PS
  2. 按照上一步制作阿宝色的步骤,对LUT进行调节,得到阿宝色LUT

左边为原始LUT,右边为阿宝色LUT

右边为阿宝色效果

完整代码如下: 读取图片像素部分代码省略,主要逻辑就是一个3D LUT图标查找映射

 static int  f_Filter512(unsigned  char*  srcData,  int  width  ,int  height,  int  stride,  unsigned  char*Map)
{
    int  i,  j,  r,  g,  b,  offset,  pos,  nx,  ny,  k;
    unsigned  char*  pSrc  =  srcData;
    offset  =  stride  -  (width * 4);
    // 循环遍历原始图片像素
    for(j  =  0;  j  <  height;  j++)
    {
        for(i  =  0;  i  <  width;  i++)
        {
            b  =  pSrc[0];
            g  =  pSrc[1];
            r  =  pSrc[2];
            
            // 按照3D LUT规则,进行查表
            k  =  (b  >>  2);
            nx  =  (int)(r  >>  2)  +  ((k  -  ((k  >>  3)  <<  3))  <<  6);
            ny  =  (int)(((b  >>  5)  <<  6)  +  (g  >>  2));
            pos  =  (nx * 4)  +  (ny * 512 * 4);
            pSrc[0]  =  Map[pos];
            pSrc[1]  =  Map[pos  +  1];
            pSrc[2]  =  Map[pos  +  2]; 
            pSrc  +=  4;
        }
        pSrc  +=  offset;
    }
    return    0;
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 图像处理基础-USM锐化

    上一篇讲拉普拉斯锐化,不能提供精细的调整,在photoshop中采用USM(Unsharp mask)可以进一步优化。目的是:

    sumsmile
  • 照片处理-几何滤镜实现哈哈镜

    几何滤镜比较简单,不涉及色彩模型,按照某种算法,对原图进行采样,得到一张新的图片。看起来就像是把原图进行了几何变形。 这篇文章通过两个简单的案例,更直观的感受...

    sumsmile
  • 照片处理-LUT颜色滤镜

    LUT:Look Up Table,即颜色查找表。把要处理的颜色效果,以一张表提前存好,图片处理时查找提前准备好的LUT图,比如整体颜色调暗。

    sumsmile
  • 并查集

    void Make_set(int n) { for(int i=0;i<=n;i++) { father[i]=i; ...

    用户1624346
  • leetcode-137-Single Number II-第一种解法

    chenjx85
  • 贪心思想

    在学习数据结构的时候,我们已经见过了贪心思想在Prim和Kruskal中的完美应用,贪心思想因为其的简洁在算法中经常会被用到,有的时候在生活中,我们也会无意中使...

    黑白格
  • 树状数组 单点修改 区间查询

    用户2965768
  • Java网络编程的Java流介绍

    网络程序所做的很大一部分工作都是简单的输入输出:将数据字节从一个系统移动到另一个系统。Java的I/O建立于流(stream)之上。输入流读取数据,输出流写入数...

    纪莫
  • Android 深入(一)- 自定义View之BottomTitleImageView

    1)从图中我们View的整个生命周期,主要由三部分操作完成分别是measure()、layout()、draw(),作用如下:

    热心的程序员
  • HDU 3829 Cat VS Dog(二分图最大独立集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3829

    Ch_Zaqdt

扫码关注云+社区

领取腾讯云代金券