我们在用美颜相机或者直播时,相信都离不开一个效果那就是 美容 。这次我们就来分析一种常用滤波(双边滤波),刚好就可以实现一些美容效果。**双边滤波(Bilateral Filter)**是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存。双边滤波采用了两个高斯滤波的结合。一个负责计算空间邻近度的权值,也就是常用的高斯滤波器原理。而另一个负责计算像素值相似度的权值。在两个高斯滤波的同时作用下,就是双边滤波。

首先,我们不妨来回顾一下之前所讲的高斯滤波,**高斯滤波(Gauss Filter)**是线性滤波中的一种。在OpenCV图像滤波处理中,高斯滤波用于平滑图像,或者说是图像模糊处理,因此高斯滤波是低通的。其广泛的应用在图像处理的减噪过程中,尤其是被高斯噪声所污染的图像上。 高斯滤波的基本思想是: 图像上的每一个像素点的值,都由其本身和邻域内其他像素点的值经过加权平均后得到。其具体操作是,用一个核(又称为卷积核、掩模、矩阵)扫描图像中每一个像素点,将邻域内各个像素值与对应位置的权值相称并求和。从数学的角度来看,高斯滤波的过程是图像与高斯正态分布做卷积操作。大家不妨看看这篇文章:Android 性能优化实战 - 界面卡顿

直接的去看概念和文字,大家可能会有些蒙 B ,下面我们来讲通俗一些,如果只是对图片进行单纯的高斯模糊,那么无法较好的保留其轮廓信息,肯定是无法达到预期的效果。那么双边滤波是怎么做到的呢?为啥说他有美容效果?首先双边滤波是基于高斯滤波,但由于高斯滤波无法较好的保留轮廓信息,因此双边滤波就增加了一种方案,那就是考虑两点的色差值。请看上面这张图,头发和脸庞的交界处,它们两边的色差值比较大,那么我在做权重计算时就不考虑进来。也就是说图像轮廓边缘的色差往往比较大,如果我们加入色差值的判断,那么就可以较好的保留轮廓信息。

一、双边滤波的公式

g(i, j)代表输出点;
S(i, j)的是指以(i,j)为中心的(2N+1)(2N+1)的大小的范围;
f(k, l)代表(多个)输入点;
w(i, j, k, l)代表经过两个高斯函数计算出的值(这里还不是权值)

上述公式我们进行转化,假设公式中w(i,j,k,l)为m,则有

设 m1+m2+m3 … +mn = M,则有

此时可以看到,这明显是图像矩阵与核的卷积运算了。其中m1/M代表的第一个点(或最后一个点,看后面如何实现)的权值,而图像矩阵与核通过卷积算子作加权和,最终得到输出值。

接下来我们来讨论最关键的w(i, j, k, l)
ws为空间临近高斯函数,wr为像素值相似度高斯函数


二、OpenCV 的 bilateralFilter

/*** 对图片进行美容*/
void hairdressingBitmap(JNIEnv *env, jobject, jobject bitmap) {Mat mat;// java bitmap -> opencv matcv_helper::bitmap2mat(env, bitmap, mat);// 双边滤波Mat dst;bilateralFilter(mat, dst, 10, 50, 10);// opencv mat -> java bitmapcv_helper::mat2bitmap(env, dst, bitmap);
}

上面的效果似乎还未达到我们想要的效果,整个图片看起来比较模糊,我们再对其做一次掩摸操作:

Mat final;
Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(dst, final, dst.depth(), kernel);

视频地址:https://pan.baidu.com/s/1-WwELv3s9Du8tKnXc0TODA
视频密码:0dqe

图形图像处理 - 实现图片的美容效果相关推荐

  1. [图像处理]彩色图片转手绘效果

    效果: 转 手绘效果图: 代码: from PIL import Image import numpy as npa = np.asarray(Image.open('./1.png').conver ...

  2. 【matlab图像处理】图片生成油画效果(选择路径-交互)

    %油画效果 function [I_painted]=OilPaint(I_rgb, radius, intensity_level) [filename pathname]=uigetfile({' ...

  3. 图形图像处理 - 手写 QQ 说说图片处理效果

    OpenCv 的基础学习目前先告一段落了,后面我们要开始手写一些常用的效果,且都是基于 Android 平台的.希望我们有一定的 C++ 和 JNI 基础,如果我们对这块知识有所欠缺,大家不妨看看这个 ...

  4. Android图形图像处理:马赛克(Mosaic)效果【直接可用】

    首先看效果 然后这是代码 /*** Create by Mazhanzhu on 2020/9/25* Android图形图像处理:马赛克(Mosaic)效果*/ public class Mosai ...

  5. 迹美 java_三款图像处理软件人像美容效果大比拼

    面对电脑中超级多的个人照片,你知道该如何对它们进行后期处理,使之更加具有赏心悦目的效果吗?下面我们选择美图秀秀.iSee图片专家和光影魔术手三款图像处理软件,针对单纯的人像美容效果进行比较,看看哪一款 ...

  6. 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值

    from:http://blog.csdn.net/housisong/article/details/1452249 图形图像处理-之-高质量的快速的图像缩放 中篇 二次线性插值和三次卷积插值    ...

  7. 矩阵实验:图形图像处理

    矩阵实验 矩阵 工程应用:图像平滑 看待矩阵的四种视角:数据.系统.变换.空间 线性变换 工程应用:图形变化 矩阵变化的推导 总结 矩阵 在线性代数里,用的最多的概念是[矩阵]. 一个具体的矩阵: 一 ...

  8. OpenCV-Python图形图像处理:制作雪花飘落特效

    ☞ ░ 老猿Python博文目录:https://blog.csdn.net/LaoYuanPython ░ 一.引言 前几天有博友咨询,能否在视频中实现雪花飘落的效果,答案是肯定的.老猿前天简单构思 ...

  9. 第二章--图形图像处理技术——基础理论和基本工具的使用

    2.1.1人类视觉特性 眼睛对光的感觉被称为光觉,对颜色的感觉被称为色觉,它们是眼睛的基本特性. 1.光觉 视觉系统要产生光感觉,就需要有一定量的光进入眼球,我们把产生光觉的最小亮度称为光觉门限或光觉 ...

最新文章

  1. 人为什么要睡觉?科学家给出进一步答案
  2. 一般向量空间的基变换_从希尔伯特空间的角度看线性变换的一般思想和问题
  3. java多态替换switch_使多态性无法解决那些switch / case语句的麻烦
  4. hexo-cli博客 hexo-admin编辑器 next主题安装命令整理
  5. 毕业设计(论文)-c++小型ftp服务器系统【毕业论文】.doc,毕业设计(论文)-C++小型FTP服务器系统.doc...
  6. 最短哈密尔顿圈matlab解法_复杂制造过程最优哈密尔顿圈算法的MATLAB仿真与分析.doc...
  7. 广东科技学院计算机应用技术专业,广东科技学院是几本 [深圳大学应用技术学院计算机技术专业2018考研调剂信息]...
  8. ContestHunter暑假欢乐赛 SRM 03
  9. 静态方法和类方法之间的区别
  10. 一条SQL语句求前面记录的平均值
  11. 数据挖掘的9大成熟技术和应用
  12. Telink 825x 蓝牙开发笔记4
  13. PDMS批量输出ISO图
  14. 网吧电影服务器解决方案完全指南(二)
  15. 图新地球 “请选择目标图层后再下载”
  16. 什么是数学建模?如何在数学建模中拿奖?通过建模学到了啥?
  17. 关于htons和htonl
  18. ros和carla的联合
  19. 优麒麟mysql_ubuntu 优麒麟下mysql5.7root密码的重置
  20. 基于openssl的计算机安全学demo(包含Diffie-Hellman,HAMC,AES的简单应用)

热门文章

  1. tiktok中文叫什么?能做什么?
  2. PyCharm入门教程
  3. Lifecycle详解
  4. 设计师与客户:迁就难出好设计
  5. 优先队列(堆)详细整理学习
  6. 大数据运维到底是什么 又需要做些什么
  7. 浏览了6000+网页后,我精选了一份最适合个人使用的AI产品清单
  8. 图解Redux中middleware的洋葱模型
  9. 常见几个方式禁止IP访问网站(PHP、Nginx、Apache不同设置方法)
  10. 【已解决】【一眼就会】Exception in thread “main“ java.lang.NoClassDefFoundError java.lang.ClassNo【jar中没有主清单属性】