第二十九节高斯双边模糊

高斯双边模糊是一种更高级的图像模糊方法。

  1. 原理

• 它在考虑空间距离(像素位置)的同时,还考虑了像素值的差异(灰度或颜色差异)。传统的高斯模糊(只考虑空间距离)主要是根据像素离中心像素的远近分配权重,而双边模糊在此基础上,对于与中心像素值差异较大的像素,会进一步降低其权重。

• 例如,在处理图像边缘时,边缘一侧的像素和另一侧的像素值差异较大,双边模糊会使这些像素对边缘像素的影响变小,从而在模糊的同时更好地保留边缘细节。

  1. 公式及权重计算(简单理解)

• 它有两个高斯函数来计算权重。一个是空间域高斯函数,和普通高斯模糊类似,用于考虑像素的空间距离。另一个是值域高斯函数,用于考虑像素值的差异。最终的权重是这两个高斯函数计算出的权重的乘积。

• 假设空间域高斯函数计算出的某像素权重为,值域高斯函数计算出的权重为,那么该像素的最终权重。

  1. 应用场景

• 常用于需要保留边缘细节的模糊处理。比如在人像摄影中,当想要模糊背景同时保持人物边缘清晰时,高斯双边模糊是很好的选择。它也用于对图像进行高质量的降噪处理,因为它可以避免在去除噪声的同时模糊掉重要的细节。

API

bilateralFilter(src, dst, d, sigmaColor, sigmaSpace[, borderType])。

• src:输入图像,即要进行双边模糊处理的原始图像,可以是彩色图像或者灰度图像。

• dst:输出图像,用来存储双边模糊后的图像。如果不指定,函数会自动创建一个合适的输出图像。

• d:表示在滤波时每个像素邻域的直径。如果这个值为非正数,它会根据sigmaSpace参数自动计算。一般来说,较大的值会使模糊效果更明显,但计算速度可能会变慢。

• sigmaColor:颜色空间滤波器的标准差。这个参数衡量了像素值(如RGB值)之间的差异。较大的值意味着更多的颜色混合,模糊效果更明显。

• sigmaSpace:坐标空间滤波器的标准差。它决定了根据像素位置进行模糊的程度,较大的值会使较远的像素也对中心像素产生较大的影响。

• borderType(可选):用于处理图像边界的像素,和其他滤波函数中的边界类型类似,比如复制边界像素、反射边界像素等。



void QUickdemo::Bifilter_Blur(Mat& image) {

Mat dstImage;

bilateralFilter(image, dstImage, 0, 100, 10);

// 使用 bilateralFilter 函数对输入图像 image 进行双边高斯模糊处理,结果存储在 dstImage 中。
// 第一个参数为输入图像,第二个参数为输出图像,第三个参数为像素邻域直径,这里设置为 0,表示自动计算。
// 第四个参数为颜色空间滤波器的标准差,这里设置为 100,表示颜色差异较大时权重下降较快。
// 第五个参数为坐标空间滤波器的标准差,这里设置为 10,表示根据像素位置进行模糊的程度适中。

imshow("双边高斯模糊", dstImage);

}

相关推荐
vocal8 分钟前
谷歌第七版Prompt Engineering—第一部分
人工智能
MonkeyKing_sunyuhua8 分钟前
5.6 Microsoft Semantic Kernel:专注于将LLM集成到现有应用中的框架
人工智能·microsoft·agent
arbboter16 分钟前
【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明
人工智能·大模型·notepad++·ai助手·ai插件·aicoder·notepad++插件开发
IT_Octopus29 分钟前
AI工程pytorch小白TorchServe部署模型服务
人工智能·pytorch·python
果冻人工智能33 分钟前
AI军备竞赛:我们是不是正在造一个无法控制的神?
人工智能
暴龙胡乱写博客39 分钟前
OpenCV---图像预处理(四)
人工智能·opencv·计算机视觉
程序员辣条1 小时前
深度测评 RAG 应用评估框架:指标最全面的 RAGas
人工智能·程序员
curdcv_po1 小时前
字节跳动Trae:一款革命性的免费AI编程工具完全评测
人工智能·trae
程序员辣条1 小时前
为什么需要提示词工程?什么是提示词工程(prompt engineering)?为什么需要提示词工程?收藏我这一篇就够了!
人工智能·程序员·产品经理
孔令飞1 小时前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go