07OpenCV 图像模糊

文章目录

图像掩膜操作

图像掩膜操作

模糊原理

  • Smooth/Blur是图像处理中最简单和常用的操作之一

    使用操作的原因之一就是为了给图像预处理时候减低噪声

    图像噪声是指存在于图像数据中的不必要的或多余的干扰信息

  • Smooth/Blur操作原理是数学的卷积运算,根据不同卷积运算公式,划分了多种图像滤波方式

    图像滤波:指的是在尽量保留图像特征的条件下对目标图像得噪声进行抑制

均值滤波

均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重

6x6像素表中,3x3的卷积算子从图一所示的红色像素开始卷积,依次从左至右,从上至下。取黄色像素值之和的平均值赋给红色像素,则红色像素为卷积之后的新像素。由此每次移动一个像素。显然,计算平均值时,取值范围越大,"模糊效果"越强烈。

高斯滤波

高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同

一阶高斯算子
> 二阶高斯算子


这9个点的权重总和等于0.4787147,如果只计算这9个点的加权平均,还必须让它们的权重之和等于1,因此上面9个值还要分别除以0.4787147,得到最终的权重矩阵.

将这9个值加起来,就是中心点的高斯模糊的值。

对所有点重复这个过程,就得到了高斯模糊后的图像。如果原图是彩色图片,可以对RGB三个通道分别做高斯模糊。

中值滤波

去除椒盐噪声

双边滤波

高斯双边模糊 -- 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变

双边滤波就是经典的常用的能够保留图像边缘信息的滤波算法之一。双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法,可以实现在保留区域信息的基础上实现对噪声的去除、对局部边缘的平滑。双边滤波对高频率的波动信号起到平滑的作用,同时保留大幅值的信号波动,进而实现对保留图像中边缘信息的作用。双边滤波器是两个滤波器的结合,分别考虑空域信息和值域信息,使得滤波器对边缘附近的像素进行滤波时,距离边缘较远的像素值不会对边缘上的像素值影响太多,进而保留了边缘的清晰性。

空域核:在窗口内每个位置都有权重(即每个位置的像素都考虑)。

i,j 为模板窗口的其他系数的坐标;

k,l为模板窗口的中心坐标点;

σ为高斯函数的标准差。

w空间域核由像素位置欧式距离决定的模板权值

值域核:一定像素差范围进行局部模糊,像素值高的在高的部分模糊,低的在低的那部分模糊,保留了边缘区分

i ,j为模板窗口的其他系数的坐标,

f(i,j)表示图像在点i,j处的像素值;

k,l为模板窗口的中心坐标点,对应的像素值为f(k,l)

σ为高斯函数的标准差。

w值域核是由像素值的差值决定的模板权值
双边滤波器的模板权值
双边滤波器的数据公式
空域权重衡量的是 p,q两点之间的距离,距离越远权重越低

值域权重衡量的是 p,q两点之间的像素值相似程度,越相似权重越大

算子

blur 算子

c 复制代码
void blur( InputArray src, OutputArray dst,Size ksize, Point anchor = Point(-1,-1),int borderType = BORDER_DEFAULT );
/*******************************************************************
*			src: 					输入图像
*			dst:					输出图像
*			ksize:					内核大小
*			anchor:				 	 锚点
*						默认Point(-1,-1):锚点在核中心
*			borderType:				 外部像素边界模式(一般不管)	   
*********************************************************************/

高斯算子

c 复制代码
void GaussianBlur( InputArray src, OutputArray dst, Size ksize,double sigmaX, double sigmaY = 0,int borderType = BORDER_DEFAULT );
/*******************************************************************
*			src: 					输入图像
*			dst:					输出图像
*			ksize:					内核大小
*					x,y必须是整数,并且为奇数
*			sigmaX:				 	 X方向滤波系数
*			sigmaY:				     Y方向滤波系数
*			borderType:				 外部像素边界模式(一般不管)	   
*********************************************************************/

中值滤波

c 复制代码
void medianBlur( InputArray src, OutputArray dst, int ksize );
/*******************************************************************
*			src: 					输入图像
*			dst:					输出图像
*			ksize:					内核大小
*				      大小必须是大于1而且必须是奇数
*********************************************************************/

双边滤波

c 复制代码
void bilateralFilter( InputArray src, OutputArray dst, int d,double sigmaColor, double sigmaSpace,int borderType = BORDER_DEFAULT );
/*******************************************************************
*			src: 					输入图像
*			dst:					输出图像
*			d:						滤波过程中每个像素邻域的直径
*			sigmaColor:				 颜色空间滤波器的标准差值
*					参数越大表明该像素领域内有越多的颜色被混合到一起
*			sigmaSpace:				 空间间坐标中滤波器的标准差值
*			borderType:				 外部像素边界模式(一般不管)	   
*********************************************************************/

代码

c 复制代码
#include <iostream>
#include <string>
#include <map>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
class Blur 
{
public:
	Blur() :img(imread("test.jpg")) 
	{
		result["原图"] = img;
	}
	void BlurByblur() 
	{
		blur(img, result["blur"], Size(9, 9));
	}
	void BlurByGaussianBlur() 
	{
		GaussianBlur(img, result["GaussianBlur"], Size(9, 9), 9, 9);
	}
	void BlurBymedianBlur() 
	{
		medianBlur(img, result["medianBlur"], 9);
	}
	void BlurBybilateralFilter() 
	{
		bilateralFilter(img, result["bilateralFilter"], 9, 9, 9);
	}
	void Show()
	{
		for (auto& v : result) 
		{
			imshow(v.first, v.second);
		}
		waitKey(0);
	}
private:
	Mat img;
	map<string, Mat> result;
};
int main() 
{
	Blur* p = new Blur;
	p->BlurByblur();
	p->BlurByGaussianBlur();
	p->BlurBymedianBlur();
	p->BlurBybilateralFilter();
	p->Show();
	return 0;
}
相关推荐
尼罗河女娲5 分钟前
深度剖析RLHF:语言模型“类人输出”的训练核心机制
人工智能·深度学习·语言模型
吴佳浩14 分钟前
Python入门指南(四)-项目初始化
人工智能·后端·python
万事可爱^15 分钟前
TensorFlow 安装全攻略
人工智能·python·深度学习·机器学习·tensorflow·tensorflow安装
yc_2328 分钟前
KAG:通过知识增强生成提升专业领域的大型语言模型(二)
人工智能·语言模型·自然语言处理
自不量力的A同学40 分钟前
字节 AI 原生 IDE Trae 发布 v1.3.0,新增 MCP 支持
人工智能
涛涛讲AI1 小时前
当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。
人工智能·搜索引擎
engchina1 小时前
来自B站AIGC科技官的“vLLM简介“视频截图
人工智能·vllm
说私域1 小时前
基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究
人工智能·小程序·重构·开源·零售
智驱力人工智能1 小时前
无感通行与精准管控:AI单元楼安全方案的技术融合实践
人工智能·安全·智慧城市·智慧园区
Chrome深度玩家1 小时前
谷歌翻译安卓版拍照翻译精准度与语音识别评测【轻松交流】
android·人工智能·语音识别