博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聊下图片滤镜,手机上的,lookup table(颜色查找表
阅读量:5335 次
发布时间:2019-06-15

本文共 1699 字,大约阅读时间需要 5 分钟。

今天这里要介绍的是lookup table(颜色查找表),简而言之就是通过将每一个原始的颜色进行转换之后成为一个新的颜色。

打一个比方,比如原始颜色是红色(r:255,g:0,b:0),进行转换后变为绿色(r:0,g:255,b:0),以后所有是红色的地方都会被自动转换为绿色。

而颜色查找表就是将所有的颜色进行一次(矩阵)转换,而很多的滤镜功能就是提供了这么一个转换的矩阵,在原始色彩的基础上进行颜色的转换。

引:作者:謝灰灰在找胡蘿蔔
链接:https://www.jianshu.com/p/b470a5b5a560
 
 
更多见:

 
 
Original Lookup Table

然而IOS自带的图像处理API中并没有提供颜色查找表相关的内容。即使如此,善解人意的GPUImage的大大们给我们提供了一个相关的接口,今天就来简单的介绍一下用法。


1 图片添加滤镜效果

 

资源:一张图片(随意),photoshop

a)在photoshop中载入原始图片

 
原始示例图片

 

b)调整photoshop中的调整面板,对图像进行调整,并达到满意的效果。

 
在该调整面板对图像进行调整

 

 
调整后的图像

 

c)在达到满意的效果之后,对original lookup table(原始颜色查找表)进行一次相同的调整操作

 
调整前

 

 
调整后

 

d)将调整后得到的lookup table另存为NewLookupTable.png

 

2 代码中引用lookup table

 

GPUImage是一个相当出名的第三方图像处理库,这里就不对这个库进行介绍了。

GPUImage中有一个专门针对lookup table进行处理的滤镜函数GPUImageLookupFilter,使用这个函数就可以直接对图片进行滤镜添加操作了。

 

//originalImg是你希望添加滤镜的原始图片

- (UIImage *)applyFIlter:(UIImage *)originalImg {

UIImage *inputImage =originalImg;

UIImage *outputImage = nil;

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];

//添加滤镜

GPUImageLookupFilter *lookUpFilter = [[GPUImageLookupFilter alloc] init];

//导入之前保存的NewLookupTable.png文件

GPUImagePicture *lookupImg = [[GPUImagePicturealloc] initWithImage:[UIImageimageNamed: @“NewLookupTable.png”]];

[lookupImg addTarget:lookUpFilteratTextureLocation:1];

[stillImageSource addTarget:lookUpFilteratTextureLocation:0];

[lookUpFilter useNextFrameForImageCapture];

if([lookupImg processImageWithCompletionHandler:nil] && [stillImageSource processImageWithCompletionHandler:nil]) {

outputImage= [lookUpFilterimageFromCurrentFramebuffer];

}

return outputImage;

}

就这样滤镜就可以添加成功了,很简单把,哈哈。

对了哈,GPUImage这个库里面会有一张lookup table的图片的,在GPUImageLookupFilter相关的文件夹内,大家可以找一找。

转载于:https://www.cnblogs.com/Anita9002/p/8426711.html

你可能感兴趣的文章
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
关于 linux 的 limit 的设置
查看>>
MTK笔记
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
struts1和struts2的区别
查看>>
Redis常用命令
查看>>
2019.02.15 bzoj5210: 最大连通子块和(链分治+ddp)
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
C#类与结构体究竟谁快——各种函数调用模式速度评测
查看>>
我到底要选择一种什么样的生活方式,度过这一辈子呢:人生自由与职业发展方向(下)...
查看>>
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>