当前位置: 首页 > news >正文

OpenCV-24双边滤波

一、概念

双边滤波对于图像的边缘信息能够更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。

空间距离:指的是当前点与中心点的欧式距离。空间域的高斯函数及其数学形式为:

其中(xi,yi)为当前点的位置,(xc,yc)为中心点位置,sigma为空间域标准差。

灰度距离:指的是当前点灰度与中心点灰度的差的绝对值。值域高斯函数及其数学形式为:

其中gray(xi,yi)为当前点的灰度值,gray(xc,yc)为中心点的灰度值,sigma为值域标准差。

双边滤波本质上是高斯滤波,双边滤波和高斯滤波不同的就是:双边滤波既利用率位置信息又利用了像素信息来定义滤波窗口的权重。而高斯滤波只用了位置信息。

对于高斯滤波,仅用空间距离的权值系数与图像卷积后,确定中心点的灰度值。即认为离中心点越近的点,其权重系数越大。

双边滤波加入了对灰度信息的权重,即在邻域内,灰度值越接近中心点灰度值的点权重更大,灰度值相差大的点权重越小,此权重大小,则由值域高斯函数确定。

两者权重系数相乘,得到最终的卷积模板。由于双边滤波需要每个中心点邻域的灰度信息来确定其系数,所以其速度相比较一般的滤波慢的多,而且计算量增长速度为核大小的平方。

双边滤波可以保留边缘,同时可以对边缘内的区域进行平滑处理。(有美颜的效果)

如果在边界出现灰度值变化较大

二、代码演示

使用API---bilateralFilter(src, d, sigmaColor, sigmaSpace[,dst[,borderType]])

--- d相当于卷积核的大小,为整数

--- sigmaColor是计算像素信息使用的sigma

--- sigmaSpace是计算空间信息使用的sigma

示例代码如下:

import cv2
import numpy as npgirl = cv2.imread("beautiful women.png")
new_girl = cv2.bilateralFilter(girl, 7, sigmaColor=50, sigmaSpace=50)cv2.imshow("img", np.hstack((girl, new_girl)))
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

可以看出,右边的图片人物表面平滑,有美颜效果。

http://www.lryc.cn/news/280044.html

相关文章:

  • AI智能分析网关V4:太阳能+4G智慧水库远程可视化智能监管方案
  • 第8章-第8节-Java中的文件类File的简单介绍
  • CTF-PWN-沙箱逃脱-【seccomp和prtcl-2】
  • 【Docker篇】使用Docker操作镜像
  • css宽度适应内容
  • 粒子物理和原子核物理的理论在模拟和分析电路中的粒子束和辐射效应中的应用
  • Opentsdb官方优化文档 - 翻译
  • JavaScript深拷贝与浅拷贝的全面解析
  • ESU毅速丨制造企业需不需要建设增材制造中心?
  • Linux shell编程学习笔记39:df命令
  • 简单高效 LaTeX 科学排版 第004集 命令与环境
  • 初识XSS漏洞
  • 白嫖aws创建Joplin server服务器
  • metartc5_jz源码阅读-p2p通过stun服务器进行通信
  • 总结:Java程序员读书清单顺序
  • ubuntu通过virtualbox安装win虚拟机
  • 云流量回溯的工作原理及关键功能
  • DCP文件传输的重要性与应用
  • JAVA面试部分——后端-线程后篇
  • C语言辨析——深入理解字符常量与表达式
  • Springboot + websocket 实现 一对一 单人聊天
  • GEE机器学习——利用最短距离方法进行土地分类和精度评定
  • 数据结构时间复杂度与空间复杂度
  • 【计算机网络】内容整理
  • 【K12】Python写分类电阻问题的求解思路解析
  • 数据库面经---10则
  • 深度学习基本介绍-李沐
  • 【上分日记】第369场周赛(分类讨论 + 数学 + 前缀和)
  • CMake Error at CMakeLists.txt:14 (project): The CMAKE_CXX_COMPILER:
  • Sqoop与其他数据采集工具的比较分析