均值滤波计算_从零学美颜算法保边滤波
作者:天儿哥
有了前面的照片处理基础,这一篇开始讲美颜算法。
一、滤波为什么要保边?
人像美颜技术中,最重要的技术之一就是磨皮,没有磨皮谁还敢自拍,谁还敢直播?
磨皮本质上就是对图像进行滤波,比如前面讲的均值滤波,或者高斯滤波,说直白点就是对整张图片进行一定程度的模糊。但是仅这么处理是不够的,整张图片都会模糊掉,所以需要在模糊的同时,保留人像面部的边界特征,此处的“保留”就是保边。
二、保边滤波算法
保边滤波算法有很多种,我们不一一展开,这里仅讨论有代表性的“双边滤波”,带大家感性认识保边滤波的实现思路。其他的保边滤波算法列在文末,有兴趣的读者可自行研究。
2.1 双边滤波原理:参看下面示意图。
左边的输入是一个表面粗糙并且有边界的图像,那个阶梯表示边界。
中间的滤波算法是一个高斯模糊 * 范围的权重,即在高斯模糊的基础上,保持阶梯的突变。
右边是滤波的结果,图像的边界依然存在,没有被模糊,阶梯两侧均进行了平滑的模糊。
聪明的你会发现,其实就是在高斯模糊的同时,根据当前像素周围的像素信息,来计算不同的权重,结合权重来模糊。大多数空间滤波的本质都是如此,掌握双边滤波一种,其他的也更容易理解。
2.2 结合双边滤波的公式加深理解:
假设像素I(i, j)的邻域半径为R,邻域⼤⼩为S,邻域内的像素为I(k,l),那么滤波后的像素值Id的计算公式如下,w(i, j, k,l )是权重函数
其中权重w的计算如下:
σd和σr分别是空间距离、颜色差值的方差,exp函数即自然数e的幂。
可以想象,当处理到边界像素时,像素突变,I(i, j) - I(k,l) 值非常大,Wr ≈ 0,W(i,j,k,l)整体很小,即周围的像素影响很小,几乎保留了当前像素的原始值。这就是通过权重,实现了“保边”。
同理,当I(i, j) - I(k,l) 接近,Wr ≈ 1,则主要体现了高斯模糊Wd的权重,该像素进行了平滑的模糊处理。
处理结果:
三、其他滤波
算法比较枯燥,单篇不适宜大而全,这里列举其他常见保边滤波算法,读者可自行研究。
1. Surface Blur滤波
Surface Blur滤波又叫表⾯模糊滤波,是Photoshop中的⼀种常⽤滤波算法,也是⼀种空间域滤波算法。
2. Guided滤波算法,论文:
http://mmlab.ie.cuhk.edu.hk/pdf/pami12Guided%20Image%20Filtering.pdf
3. 局部均值滤波算法
局部均值滤波算法是 JONG-SEN LEE于 1980年在论⽂[8]中提出的⼀种基于局部均值⽅差的滤波算法。在普通的均值滤波基础之上,增加了方差的权重,由于效率高被广泛应用。
4. Anisotropic滤波
算法原理有点复杂,需要复习多元微积分,熟悉“散度”的定义
Anisotropic滤波也叫各向异性扩散滤波,由Pietro Perona和Jagannatch Malik在1990年发表的论⽂[9]中提出,在图像去噪中效果明显。此算法可以在去噪的同时,保留图像的边缘,因此,笔者认为此算法也可以作为美颜算法的可选算法之⼀
5. Smart Blur滤波算法
Smart Blur是Photoshop 2018(简称PS2018)中出现的⼀种保边滤波器,具体参考论⽂不详。
6. MeanShift滤波算法(均值飘移)
MeanShift即均值漂移,最早由Fukunaga在1975年提出,论⽂题⽬为“The Estimation of the Gradient of a density function”。MeanShift滤波算法是⽤MeanShift算法来实现的⼀种图像保边滤波算。理解起来有点复杂,算法复杂度较高,感觉不适合实际的应用,且当参考。
本篇没有给出代码,后面有时间,我写一个demo,将算法内置到Android iOS中供读者参考。
参考:图像视频滤镜与人像美颜
均值滤波计算_从零学美颜算法保边滤波相关推荐
- sql两个数字之差取最接近的_从零学DAX/Sql/Python030203SQL数据分类汇总续篇
点击"数字化审计",可以关注哦! 开篇啰嗦话 上篇文章,为你介绍了SQL语句中select 的group by参数进行分类统计,group by在审计数据分析过程中是必然绕不 ...
- java 正负号数值比较_从零学java笔录-第10篇 数据类型(四)
从零学java笔录-第10篇 数据类型(四) 凯哥Java 凯哥java 本文是<凯哥陪你学系列之java基础篇> 感谢: 感谢网友:志远162.在上一篇中对错误指出. 在上篇中模运算正负 ...
- 均值滤波计算_均值滤波器
作者:泛音公众号:数学交点分享知识,共同学习,欢迎机器学习爱好者的投稿. 均值滤波器 介绍 均值滤波器属于低通滤波器: 输出为模板内领域像素的简单平均值: 主要用于图像的模糊和降噪,去除尖锐部分,比滤 ...
- 均值滤波计算_图像处理基础均值滤波(模糊)
作者:爱干球的RD 图像处理中,有几种常见的基础算法,比如"模糊"."灰度"."浮雕"."黑白"."底片&qu ...
- 均值滤波计算_图像处理之低通滤波
在图像处理或者计算机视觉应用中,在正式对图像进行分析处理前一般需要一个预处理的过程.预处理是对图像作一些诸如降维.降噪的操作,主要是为后续处理提供一个体积合适的.只包含所需信息的图像.这里通常会用到一 ...
- 协议crc计算_从零了解modbus协议 第三篇
Modbus 介绍 协议介绍 MODBUS协议是一种消息传递结构,广泛用于智能设备间建立主从通信.一个MODBUS消息从主机发给从机,包含了从机地址.命令(例如,读寄存器或者写寄存器).数据.校验码( ...
- CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)
CSDN博客地址(关注,点赞) 人工智能推荐 GitHub(Star,Fork,Watch) [前言] 为了更加真实的模拟生产部署环境,不仅需要Linux环境支持,而且ELK需要在不同的机器上部署:再 ...
- sql group by 取每组符合条件_从零学SQL-经典面试题
面试训练题根据数据库school来练习,其中四个表数据如下: 一.简单查询 面试官:查询姓"猴"的学生名单. 面试官:查询姓名中最后一个字是"猴"的学生名单. ...
- python脚本编程实例_从零学python系列之数据处理编程实例(一)
要求:分别以james,julie,mikey,sarah四个学生的名字建立文本文件,分别存储各自的成绩,时间格式都精确为分秒,时间越短成绩越好,分别输出每个学生的无重复的前三个最好成绩,且分秒的分隔 ...
最新文章
- 文本框怎么变大html,如何设置HTML文本框的大小?
- python中matplotlib条形图-python matplotlib库绘制条形图练习题
- OpenRASP xss算法的几种绕过方法
- 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
- CF1110E Magic Stones(构造题)
- maven+scala和java_maven打包scala+java工程
- 微信扫码提示在浏览器中打开的2种实现方式
- 朴素贝叶斯和情感分类
- 天猫小黑盒从发布新品到影响供应链
- Deltix宣布CryptoCortex与MPC钱包提供商Curv整合
- 网络编程(6)--------javaweb(TCP协议)
- 天轰川 推荐的Javscript大收集 大集锦 收藏
- [在线挑战]【i春秋】渗透测试入门 —— 渗透测试笔记 --转
- 2014华为南研所实习生求职
- .MMAP是什么格式?
- 二分图/二部图(bipartite graph)
- 支付宝支付sdk解析
- PAT 1070 结绳
- css样式(火狐的兼容性问题)
- 狼人杀超详入门攻略2之狼人战术
热门文章
- .NET Timer控件
- linux中的echo%3e文件,Linux学习笔记-shell脚本中${}的使用方法
- 阿里云 redis mysql_Redis 和 MySQL数据一致
- oj运行时错误_FME服务器链接运行时错误(由于缺少适当的权限,用户未授权的请求)...
- python依赖注入_什么是依赖注入?
- PSD分层模板|电商促销海报设计技巧
- 设计师必收藏!!!让你灵感迸发的配色网站
- 设计师需要收藏|一起来看看UI设计的配色专辑
- mysql 安装 权限_MySQL的安装、使用及权限管理
- 变量命名规则_Java变量与常量