图像处理基础(1):噪声的添加和过滤

本文介绍了OpenCV的基础操作,如图像读取、显示和像素访问。讲解了图像噪声的概念,并通过C++11随机数生成器添加高斯噪声和椒盐噪声。此外,探讨了如何使用中值滤波器和均值滤波器去除噪声,展示了滤波后的图像效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

总结学习下图像处理方面基础知识。

这是第一篇,简单的介绍下使用OpenCV的三个基本功能:

  • 图像的读取
  • 图像的显示
  • 访问图像的像素值

然后概述下图像噪声的类型,并为图像添加两种常见的噪声:高斯噪声和椒盐噪声。
最后,使用中值滤波和均值滤波来处理带有噪声的图像。

OpenCV基础

在OpenCV中,完成图像的输入输出以及显示,只需要以下几个函数:

namedWindow
创建一个可以通过其名字引用的窗口。第一个参数,设置窗口的name,可以通过name引用该窗口;第二个参数,设置窗口的大小。有以下几个选择:
- WINDOW_NORMAL or WINDOW_AUTOSIZE 调整窗口的大小以适应图像,不同的是,使用WINDOW_NORMAL可以手动调整窗口的大小;WINDOW_AUTOSIZE不能调整窗口的大小。
- WINDOW_FREERATIO or WINDOW_KEEPRATIO 改变窗口时是否会保持图像的ratio不变,没发现这俩有什么区别。

imshow显示图像

imread 读取图像数据到Mat中,第一个参数是图像的文件名;第二个参数是标志,标识怎么处理图像的色彩。常用的几个选项:
- IMREAD_UNCHANGED 和原图像保持一直不变
- IMREAD_GRAYSCALE 将图像转换为单通道的灰度图
- IMREAD_COLOR 将图像转换为3通道的BGR,默认选项
- IMREAD_REDUCED_GRAYSCALE_2 IMREAD_REDUCED_GRAYSCALE_4 IMREAD_REDUCED_GRAYSCALE_8 单通道灰度图读入图像,并减小图像的大小。减小的值为1/2,1/4,1/8
- IMREAD_REDUCED_COLOR_2 IMREAD_REDUCED_COLOR_4 IMREAD_REDUCED_COLOR_2 3通道BGR读入图像,并减小图像的大小。减小的值为1/2,1/4,1/8

Mat是OpenCV中最重要的数据结构,在做图像处理时基本都是对该结构体的操作。Mat由两部分构成:矩阵头矩阵数据,矩阵头较小,创建的每个Mat实例都拥有一个矩阵头,而矩阵数据通常占有较大的空间,OpenCV中通过引用计数来管理这部分内存空间,当调用赋值运算符和拷贝构造函数时,并不会只复制矩阵头,并不会复制矩阵数据,只是将其的引用计数加1.例如:

Mat m = imread("img.jpg");
Mat a = m; // 赋值运算符
Mat b(m); // 拷贝构造函数

上面代码中的a,bm各自拥有自己的矩阵头,其引用的数据却指向同一份。也就是说,修改了其中任意一个,都会影响到其余的两个。

要想复制矩阵数据,可以调用clonecopyTo这两个函数

Mat m = imread("img.jpg"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值