【C++】图像处理中的滤波算法(一)

简介: 总结一下图像处理中常用的几种滤波算法,包括中值、均值、高斯、双边、引导滤波这五种,主要用于图像平滑去噪方面。滤波算法的基本思路,就是采用周边像素,加权平均计算一个新的像素,来缓减噪声对当前像素的影响。

b0840fb2fbc742f0a137df3946be4a45.pnga7d0c9279a7d46ceb00ea14f8e78feb0.png

均值滤波

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即包括目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

576f5561a57d4f86966dd5fc122d988c.jpgopencv提供均值滤波函数blur():

CV_EXPORTS_Wvoidblur( InputArraysrc, OutputArraydst,
Sizeksize, Pointanchor=Point(-1,-1),
intborderType=BORDER_DEFAULT );

C++实现:

#include <iostream>#include <string>#include <opencv2/opencv.hpp>usingnamespacestd;
usingnamespacecv;
intmain()
{
MatimgOri=imread("原图.jpg");
namedWindow("原图");
imshow("原图", imgOri);
MatimgOut;
blur(imgOri, imgOut, Size(20, 20));
namedWindow("效果图");
imshow("效果", imgOut);
waitKey(0);
returntrue;
}

中值滤波

中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。采用窗口内中值的方法,有效剔除了异常高亮或过暗的噪声,对椒盐噪声的去除效果比较好,但实际的图像会伴随着边缘纹理,由于只考虑中值,也会将图像细节去除,只是比均值滤波稍微好一点而已。

公式如下:

75501028134a463d94001cccd81a233c.png

6048ae16aa324d86aaced44e4a72b34c.png

opencv提供高斯滤波函数medianBlur():

CV_EXPORTS_WvoidmedianBlur(InputArraysrc,OutputArraydst,intKsize//只能3,5,7,9后的奇数)

C++实现:

#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>usingnamespacecv;
intmain()
{
//载入图像Matimage=imread("1.jpg");
//创建窗口namedWindow("中值滤波原图");
namedWindow("中值滤波效果图");
//进行滤波Matout;
medianBlur(image, out, 7);
imshow("中值滤波原图", image);
imshow("中值滤波效果图", out); 
waitKey(0);
return0;
}
目录
相关文章
|
3月前
|
算法 测试技术 C++
【动态规划算法】蓝桥杯填充问题(C/C++)
【动态规划算法】蓝桥杯填充问题(C/C++)
|
1天前
|
存储 算法 安全
基于红黑树的局域网上网行为控制C++ 算法解析
在当今网络环境中,局域网上网行为控制对企业和学校至关重要。本文探讨了一种基于红黑树数据结构的高效算法,用于管理用户的上网行为,如IP地址、上网时长、访问网站类别和流量使用情况。通过红黑树的自平衡特性,确保了高效的查找、插入和删除操作。文中提供了C++代码示例,展示了如何实现该算法,并强调其在网络管理中的应用价值。
|
6天前
|
算法 安全 C++
用 C++ 算法控制员工上网的软件,关键逻辑是啥?来深度解读下
在企业信息化管理中,控制员工上网的软件成为保障网络秩序与提升办公效率的关键工具。该软件基于C++语言,融合红黑树、令牌桶和滑动窗口等算法,实现网址精准过滤、流量均衡分配及异常连接监测。通过高效的数据结构与算法设计,确保企业网络资源优化配置与安全防护升级,同时尊重员工权益,助力企业数字化发展。
31 4
|
3月前
|
存储 算法 C++
高精度算法(加、减、乘、除,使用c++实现)
高精度算法(加、减、乘、除,使用c++实现)
731 0
高精度算法(加、减、乘、除,使用c++实现)
|
3月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
51 0
|
3月前
|
存储 算法 决策智能
【算法】博弈论(C/C++)
【算法】博弈论(C/C++)
|
3月前
|
存储 算法 C++
【算法】哈希映射(C/C++)
【算法】哈希映射(C/C++)
|
3月前
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
3月前
|
人工智能 算法 BI
一篇带你速通差分算法(C/C++)
一篇带你速通差分算法(C/C++)
|
3月前
|
人工智能 算法 C++
一篇带你速通前缀和算法(C/C++)
一篇带你速通前缀和算法(C/C++)