OpenCV学习笔记----图像平滑

第三个程序:图像平滑

图像平滑是图像处理和计算机视觉中最常用、最基本的操作

其目的主要是去除图像中的噪声,因为图像平滑是低通滤波,处理过程中往往会使得图像边缘模糊化,因此又称为模糊处理

平滑原理

图像平滑的基本原理是,将噪声所在像素点的像素值处理为其周围临近像素点的值的近似值

滤波相当于筛选器,只允许指定范围内的数据通过筛选,其余数据即为噪点,应当舍弃

常见的滤波方法:

图像平滑的方法很多,包括均值滤波、高斯滤波、方框滤波、中值滤波、双边滤波等

示例:高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声。通俗来讲,高斯滤波就是对整幅图片进行加权平均,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到

OpenCV使用高斯滤波

程序源码如下:

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
	Mat img = imread("/home/wang/opencv/demo/1.jpg",-1);

	imshow("picture_before",img);

	Mat img_out;

	GaussianBlur(img,img_out,Size(5,5),3,3);
	GaussianBlur(img_out,img_out,Size(5,5),3,3);

	imshow("picture_after",img_out);

	waitKey(0);
	return 0;
}

程序分析:

  • 程序使用img对象读取图片,将原始图像信息保存到img中
  • 使用imshow函数将图像显示
  • 生命新的Mat对象img_out,用于存放高斯滤波后的图像信息
  • 调用高斯滤波函数,将滤波结果存放到img_out结构中
  • 再调用一次高斯滤波,执行两次模糊处理

程序编译语句:

g++ Gaussian.cpp -o Gaussian `pkg-config --cflags --libs opencv`

程序运行效果如下:
在这里插入图片描述

高斯滤波原理:

高斯模糊将正态分布用于图像处理

在计算机视觉中,计算机得到的图像信息均为矩阵,将每个像素点都替换为取周边像素的平均值

在数据上来看,该操作将数据平滑化,转换为图像效果来看,图像被模糊化

计算平均值时,范围越大,模糊效果越明显

GaussianBlur函数参数详解:

函数原型如下:

CV_EXPORTS_W void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
                                double sigmaX, double sigmaY = 0,
                                int borderType = BORDER_DEFAULT );
  • src:输入图形
  • dst:输出图形
  • ksize:高斯核大小
  • sinmaX:高斯核函数在X方向上的标准偏差
  • sinmaY:高斯核函数在X方向上的标准偏差
  • borderType: 推断图像外部像素的某种便捷模式,有默认值BORDER_DEFAULT
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值