Metal每日分享,调整胶片颗粒感滤镜效果
本案例的目的是理解如何用Metal实现调节胶片颗粒感滤镜,通过调整颗粒参数来调整晶粒尺寸来达到颗粒感效果;
Demo
- HarbethDemo地址
实操代码
// 调节胶片颗粒感滤镜
let filter = C7Granularity.init(grain: 0.7)// 方案1:
let dest = BoxxIO.init(element: originImage, filter: filter)
ImageView.image = try? dest.output()dest.filters.forEach {NSLog("%@", "\($0.parameterDescription)")
}// 方案2:
ImageView.image = try? originImage.make(filter: filter)// 方案3:
ImageView.image = originImage ->> filter
实现原理
- 过滤器
这款滤镜采用并行计算编码器设计.compute(kernel: "C7Granularity")
,参数因子[grain]
对外开放参数
grain
: 通过调整颗粒参数来调整晶粒尺寸,大小从0.0到0.5不等,其中0.0代表原始图像。
/// 调节胶片颗粒感
public struct C7Granularity: C7FilterProtocol {public static let range: ParameterRange<Float, Self> = .init(min: 0.0, max: 0.5, value: 0.3)/// The grain size is adjusted by adjusting the grain parameter. The grain size ranges from 0.0 to 0.5,/// Where 0.0 represents the original image,public var grain: Float = range.valuepublic var modifier: Modifier {return .compute(kernel: "C7Granularity")}public var factors: [Float] {return [grain]}public init(grain: Float = range.value) {self.grain = grain}
}
- 着色器
对坐标点归一化处理,计算出小数部分noise
,最后对每个像素x颗粒度;
kernel void C7Granularity(texture2d<half, access::write> outputTexture [[texture(0)]],texture2d<half, access::read> inputTexture [[texture(1)]],constant float *grain [[buffer(0)]],uint2 grid [[thread_position_in_grid]]) {const half4 inColor = inputTexture.read(grid);const float2 textureCoordinate = float2(float(grid.x) / outputTexture.get_width(), float(grid.y) / outputTexture.get_height());const float d = dot(textureCoordinate, float2(12.9898, 78.233) * 2.0);const half noise = half(fract(sin(d) * 43758.5453h));const half4 outColor = half4(inColor - noise * (*grain));outputTexture.write(outColor, grid);
}
Harbeth功能清单
- 支持ios系统和macOS系统
- 支持运算符函数式操作
- 支持多种模式数据源 UIImage, CIImage, CGImage, CMSampleBuffer, CVPixelBuffer.
- 支持快速设计滤镜
- 支持合并多种滤镜效果
- 支持输出源的快速扩展
- 支持相机采集特效
- 支持视频添加滤镜特效
- 支持矩阵卷积
- 支持使用系统 MetalPerformanceShaders.
- 支持兼容 CoreImage.
- 滤镜部分大致分为以下几个模块:
- Blend:图像融合技术
- Blur:模糊效果
- Pixel:图像的基本像素颜色处理
- Effect:效果处理
- Lookup:查找表过滤器
- Matrix: 矩阵卷积滤波器
- Shape:图像形状大小相关
- Visual: 视觉动态特效
- MPS: 系统 MetalPerformanceShaders.
最后
- 关于调整胶片颗粒感滤镜介绍与设计到此为止吧。
- 慢慢再补充其他相关滤镜,喜欢就给我点个星
Metal每日分享,调整胶片颗粒感滤镜效果相关推荐
- Metal每日分享,均值模糊滤镜效果
本案例的目的是理解如何用Metal实现均值模糊效果滤镜,均值模糊原理其实很简单通过多个纹理叠加,每个纹理偏移量设置不同达到一点重影效果来实现模糊; Demo HarbethDemo地址 实操代码 // ...
- Metal每日分享,纯色图片滤镜效果
本案例的目的是理解如何用Metal实现纯色图片效果滤镜,主要就是生成纯色图片: Demo HarbethDemo地址 实操代码 // 纯色滤镜 ImageView.image = C7Color.pu ...
- Metal每日分享,颜色转换滤镜效果
本案例的目的是理解如何用Metal实现像素颜色转换滤镜,通过对像素颜色的不同读取方式获取到相应像素颜色,灰度图移除场景中除了黑白灰以外所有的颜色,让整个图像灰度化: Demo HarbethDemo地 ...
- Metal每日分享,虚假颜色混合滤镜效果
本案例的目的是理解如何用Metal实现虚假颜色效果滤镜,使用图像的亮度在两种用户指定的颜色之间进行混合: Demo HarbethDemo地址 实操代码 // 混合颜色 let filter = C7 ...
- Metal每日分享,海报画滤镜效果
本案例的目的是理解如何用Metal实现海报画效果滤镜,主要就是改变颜色级别数量从而获取到新的像素颜色: Demo HarbethDemo地址 实操代码 // 海报画滤镜 let filter = C7 ...
- Metal每日分享,图像单色滤镜效果
本案例的目的是理解如何用Metal实现图像单色效果滤镜,将图像转换为单色版本,根据每个像素的亮度进行着色: Demo HarbethDemo地址 实操代码 // 去雾效果滤镜 let filter = ...
- Metal每日分享,调节亮度滤镜效果
本案例的目的是理解如何用Metal实现调节亮度滤镜,简单讲就是通过对像素rgb+亮度值来改变图片亮度; Demo HarbethDemo地址 实操代码 // 调节亮度滤镜 let filter = C ...
- Metal每日分享,自然饱和度滤镜效果
本案例的目的是理解如何用Metal实现自然饱和度效果滤镜,简单讲就是调整图像整体的明亮程度,如调节到较高数值,图像会产生色彩过饱和从而引起图像失真: Demo HarbethDemo地址 iDay每日 ...
- Metal每日分享,调整对比度滤镜效果
本案例的目的是理解如何用Metal实现调整对比度效果滤镜,调整对比度就是在保证平均亮度不变的情况下,扩大或缩小亮的点和暗的点之间的差异: Demo HarbethDemo地址 实操代码 // 对比度 ...
最新文章
- 【深度学习】90.94%准确率!谷歌刷新ImageNet新纪录!Model soups:提高模型的准确性和稳健性...
- (数据科学学习手札30)朴素贝叶斯分类器的原理详解Python与R实现
- windows下使用nginx调试简介
- H264学习_基本数据结构
- 蚂蚁金服生产级 Raft 算法库存储模块剖析 | SOFAJRaft 实现原理
- firefox驱动_零适配 + 全兼容!龙芯电脑推出办公外设利旧通用解决方案:运行原生 Windows 驱动程序...
- android 加载json停顿,java – 在Android上解析~1 MB JSON非常慢
- python中文字体奇怪_利用python检查 AS400的中文字问题
- 【Longest Palindromic Substring】cpp
- tomcat-maven-plugin 2.0版本发布
- Photoshop 入门教程「6」如何更改图像大小?
- Atitit 文件系统概论 艾提拉著 目录 1. NTFS系统	1 1.1. NTFS文件系统概述	1 1.2. 1.1 文件系统简介 1.2 NTFS文件系统	1 1.3. 第2章
- 三种call解释(一): cdcall stdcall naked call等在hook时,保持堆栈平衡
- 淘宝宝贝排名影响因素有哪些?
- 【Python爬虫历程】使用Cookie来模拟登陆
- 移动硬盘3.5寸和2.5寸的区别
- Springboot拦截器实现IP黑名单
- mos管的rc吸收电路计算_正激式RC吸收电路计算
- 小觅摄像头Opencv处理
- Android:技术在线面试还是屡次撞板,过来人告诉你不及时
热门文章
- Metal每日分享,均值模糊滤镜效果