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 np

girl = 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()

输出结果如下:

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

相关推荐
隔窗听雨眠5 分钟前
MCP会成为Agentic AI的标准吗?技术演进、生态博弈与标准之路的深度分析
人工智能
2601_967659887 分钟前
2026年多个网页快速提取重点、自动汇总、对比并整理成表格的AI工具清单
人工智能
IT古董10 分钟前
AI资讯日报|2026年9月5日:GPT-6 Astra全量推送却遭“翻车“,奥特曼紧急致歉一天12条大新闻:OpenAI翻车、英伟达收购、最狠AI法案出台
人工智能
chen_zn9513 分钟前
《WAM 系列》Zero-WAM | 人类视频上下文学习 | 未来片段预测 | 零样本跨任务泛化
人工智能·具身智能·vla
airank18 分钟前
2026年GEO服务商选型指南:系统梳理服务商分类框架、主流服务商能力横评、企业级选型六大维度及避坑要点,帮助企业在AI搜索时代做出科学决策。
大数据·人工智能·数据分析·aigc
Delite80224 分钟前
摆脱实验室束缚:便携式卡尔费休微量水分检测技术与现场应用解析
大数据·网络·人工智能
Jialu.26 分钟前
模型压缩实战:BERT 量化从 390MB 到 146MB 的实践
人工智能·深度学习·bert
袋鼠云数栈31 分钟前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
ACP广源盛139246256731 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
罗西的思考1 小时前
DreamZero 与 DreamDojo:世界模型与策略的分层协同综合分析与对比
人工智能·算法·机器学习