IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> opencv学习笔记(九)-- 图像模糊去噪(均值滤波和高斯滤波) -> 正文阅读

[人工智能]opencv学习笔记(九)-- 图像模糊去噪(均值滤波和高斯滤波)

图像噪声

图像噪声反应到图像上就是图像的亮度与颜色呈现某种程度的不一致性。其产生的原因很复杂,有的可能是数字信号在传输过程中发生了丢失或者受到干扰,有的是成像设备或者环境本身导致成像质量不稳定。
从噪声的类型上,常见的图像噪声可以分为如下几种:

  • 椒盐噪声(脉冲噪声)
  • 高斯噪声/符合高斯分布
  • 均匀分布噪声

椒盐噪声 也称为 脉冲噪声 ,是 图像 中经常见到的一种 噪声 ,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。
与椒盐噪声相似(Salt And Pepper Noise),高斯噪声(gauss noise)也是数字图像的一个常见噪声。椒盐噪声是出现在随机位置、噪点深度基本固定的噪声,高斯噪声与其相反,是几乎每个点上都出现噪声、噪点深度随机的噪声。

均匀分布噪声是指它的概率密度函数服从均匀分布的一类噪声。均匀分布是概率统计中的重要分布之一。顾名思义,均匀,表示可能性相等的含义。

模糊原理

Smooth/Blur是图像处理中最简单和常用的操作之一
使用该操作的原因之一就是为了给图像预处理时减低噪声
使用Smooth/Blur操作背后是数学的卷积计算
通常这些卷积算子计算都是线性操作,所以又叫线性滤波。

在这里插入图片描述
对比与处理之前的各个点的像素值,模糊处理后的像素值更加的平滑,对于噪声有很好的减低效果。(噪音的意思是像素值突然出现的失真,在某个或某些像素点像素值不正常地大或小,而模糊操作是减少这种现象)

opencv的API

归一化盒子滤波(一种均值滤波)

在这里插入图片描述
当α的值为true时,得到的结果和均值滤波相同
当α的值为false时,得到的结果不取平均值,但是很容易发生溢出,当得到的值大于255时,就取255。

API为:

blur(Mat src, Mat dst, Size(xradius,yradius), Point(-1,-1));

高斯滤波

API为:

GaussianBlur(Mat src, Mat dst, Size(11,11),sigmax,sigmay);//其中Size(x,y),x,y必须为正奇数

src:输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一。

dst:目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。

ksize:高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正奇数(这是因为我们需要找到卷积核的中心,如果是偶数,那么找不到卷积核核心);或者,它们可以是零的,它们都是由sigma计算而来。

sigmaX:高斯核函数在X方向的的标准偏差。

sigmaY:高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。
在这里插入图片描述

代码实例

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    std::cout << "Hello World!\n";
	Mat src, dst;
	src = imread("A:/opencvproject/001.jpg");
	if (!src.data)
	{
		cout << "img not ex";
		return -1;
	}
	char input_win[] = "input_window";
	char output_win[] = "output_window";
	namedWindow(input_win, CV_WINDOW_AUTOSIZE);

	namedWindow(input_win, CV_WINDOW_AUTOSIZE);

	imshow(input_win, src);

	blur(src, dst, Size(3, 3), Point(-1, -1));
	imshow(output_win, dst);
	waitKey(0);
	return 0;
}

运行结果为:
在这里插入图片描述
我们试着改变卷积核的大小:

	blur(src, dst, Size(5, 5), Point(-3, -3));

在这里插入图片描述
发现图片变得更加模糊,像素值会更加的平滑。

我们改变卷积核为:

blur(src, dst, Size(29, 1), Point(-1, -1));

在这里插入图片描述
我们发现图像产生了x方向上的模糊。

再次改变卷积核为:

blur(src, dst, Size(1, 29), Point(-1, -1));

在这里插入图片描述
这时的图像产生了y方向上的模糊。

我们使用高斯模糊试一试:
添加代码:

	Mat gblur;
	namedWindow("gblur_win", CV_WINDOW_AUTOSIZE);
	GaussianBlur(src, gblur, Size(9, 9), 11, 11);
	imshow("gblur_win", gblur);

然后我们改变blur的卷积核也为9×9:

blur(src, dst, Size(9, 9), Point(-1, -1));

在这里插入图片描述
此时得到两个模糊处理后的图像,对比发现,高斯模糊的图像显得更加清晰一点,这是因为高斯模糊是基于权重的,而均值模糊完全是平均得到的。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-01 11:55:38  更:2021-09-01 11:56:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:46:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码