【OpenCV • c++】图像平滑处理(1) —— 线性滤波

这篇具有很好参考价值的文章主要介绍了【OpenCV • c++】图像平滑处理(1) —— 线性滤波。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、平滑处理

  平滑处理也称为模糊处理,是一种简单且使用频率很高的图像处理方法,平滑处理的用途有很多,最常见的是用来减少图像上的噪点或者失真。在涉及到降低图像分辨率时,平滑处理是非常好用的方法。

二、图像滤波

  图像滤波指的是在尽量保留图像细节特征的条件下对图像的噪音进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将会直接影响到后续图像处理和分析的有效性和可靠性。消除图像中的噪声成分叫做图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频或中频段,而在高频段,有用的信息经常会被噪声淹没,因此一个能降低高频成分幅度的滤波器就能减弱噪声的影响。
  图像滤波有两个目的: 一是抽出对象的特征作为图像识别的特征模式;另一个是为了适应图像处理的要求,消除图像数字化时所混入的噪声。
  对滤波处理的两个要求:一是不能损坏图像边缘及轮廓等重要信息;二是使得图像清晰视觉效果好。

三、邻域算子与线性邻域滤波

  邻域算子是利用给定像素周围的像素值来决定此像素的最终输出值的一种算子。线性邻域滤波就是一种常用的邻域算子,像素的输出值取决于输入像素的加权和。邻域算子除了用于局部色调调整之外,还可以用于图像滤波,实现图像的平滑和锐化,图像边缘增强或图像噪声的去除。线性邻域算子,用不同的权重去结合一个小邻域内的像素,来得到应有的处理效果。
  邻域算子值利用给定像素周围像素的值决定此像素的最终输出。如图左边图像与中间图像卷积生成右边图像。目标图像中绿色的像素由原图像中蓝色标记的像素计算得到。

【OpenCV • c++】图像平滑处理(1) —— 线性滤波,opencv,c++,计算机视觉

  线性滤波处理的输出像素值是输入像素值的加权和,其中的 h 为加权系数也就是滤波系数。
【OpenCV • c++】图像平滑处理(1) —— 线性滤波,opencv,c++,计算机视觉
  在 OpenCV 中提供了常见的三种线性滤波操作分别是方框滤波,均值滤波,高斯滤波,接下来我们分别了解一下。

四、方框滤波

 	void boxFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1, -1), boolnormalize=true, int borderType=BORDEX_DEFAULT)

  其中,第一个参数表示输入的原图像,第二个参数表示目标图像,需要和原图像一样尺寸和类型,第三个参数表示输出图像的深度,-1代表使用原深度,即src.depth(),第四个参数表示 Size 类型的 ksize ,内核的大小。一般用 Size(w, h) 表示内核的大小,其中 w 为像素宽度,h 为像素的高度。Size(3, 3)的核大小。第五个参数表示锚点(平滑的那个点)。默认是 Point(-1, -1)。如果这个点的坐标是负值的话,就取核的中心为锚点。第六个参数六表示内核是否被其区域归一化了,第七个参数表示用于推断图像外部像素的某种边界模式。

代码演示

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

using namespace cv;

int main()
{
    // 读取输入图像
    Mat src = imread("D://cc.jpg", IMREAD_COLOR);
    if (src.empty())
    {
        std::cout << "无法读取图像" << std::endl;
        return -1;
    }

    // 创建输出矩阵
    Mat dst;

    // 应用方框滤波器
    int ddepth = -1;  // 使用与输入图像相同的深度
    Size ksize(3, 3); // 内核的大小
    Point anchor(-1, -1); // 内核中的锚点
    bool normalize = true; // 归一化内核
    int borderType = BORDER_DEFAULT; // 边界类型

    boxFilter(src, dst, ddepth, ksize, anchor, normalize, borderType);

    // 显示结果
    imshow("输入", src);
    imshow("输出", dst);
    waitKey(0);

    return 0;
}

【OpenCV • c++】图像平滑处理(1) —— 线性滤波,opencv,c++,计算机视觉
【OpenCV • c++】图像平滑处理(1) —— 线性滤波,opencv,c++,计算机视觉

  • 🚀 个人简介:CSDN「博客新星」TOP 10 , C/C++ 领域新星创作者
  • 💟 作    者:锡兰_CC ❣️
  • 📝 专    栏:【OpenCV • c++】计算机视觉
  • 🌈 若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力💪💪💪

其他

更多专栏订阅推荐:文章来源地址https://www.toymoban.com/news/detail-841656.html

  • 👍 【开卷数据结构】
  • 💛 【备战蓝桥,冲击省一】
  • 💕   从零开始的 c++ 之旅
  • 💖 【OpenCV • c++】计算机视觉

到了这里,关于【OpenCV • c++】图像平滑处理(1) —— 线性滤波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

    双边滤波(BilateralFiltering)是一种图像处理滤波技术,用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同,双边滤波在考虑像素之间的空间距离之外,还考虑了像素之间的灰度值相似性。这使得双边滤波能够有效地去除噪声,同时保持图像的细节和边缘。

    2024年02月14日
    浏览(25)
  • opencv 31-图像平滑处理-方框滤波cv2.boxFilter()

    方框滤波(Box Filtering)是一种简单的图像平滑处理方法,它主要用于去除图像中的噪声和减少细节,同时保持图像的整体亮度分布。 方框滤波的原理很简单:对于图像中的每个像素,将其周围的一个固定大小的邻域内的像素值取平均,然后将这个平均值赋值给当前像素。这

    2024年02月14日
    浏览(32)
  • opencv 30 -图像平滑处理01-均值滤波 cv2.blur()

    图像平滑处理(Image Smoothing)是一种图像处理技术,旨在减少图像中的噪声、去除细节并平滑图像的过渡部分。这种处理常用于预处理图像,以便在后续图像处理任务中获得更好的结果。 常用的图像平滑处理方法包括: 均值滤波(Mean Filtering) :用图像中像素周围区域的平

    2024年02月01日
    浏览(28)
  • opencv(15) 图像平滑处理之二:cv2.GaussianBlur()高斯滤波

    高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。 高斯模板是通过对二维高斯函数进行采样(高斯模糊的卷积核里的数值满足高斯分布)、量化并归一化得到的,它考虑了邻域像素位置的影响,距离当前被平滑像素越近的点,加权系数越大

    2024年02月10日
    浏览(32)
  • 计算机图形图像技术(OpenCV核心功能、图像变换与图像平滑处理)

    1、显示图像 ①功能:在指定窗口中显示图像。 ②参数: name 为窗口的名字; image 为待显示的图像。 ③说明:可显示彩色或灰度的字节图像和浮点数图像,彩色图像数据按BGR顺序存储。 2、读入图像 ①功能:从指定文件读入图像。 ②参数: filename 为图像文件名,支持BMP、

    2024年02月03日
    浏览(36)
  • 【图像处理OpenCV(C++版)】——5.2 图像平滑之高斯平滑

    前言 : 😊😊😊 欢迎来到本博客 😊😊😊 🌟🌟🌟 本专栏主要结合OpenCV和C++来实现一些基本的图像处理算法并详细解释各参数含义,适用于平时学习、工作快速查询等,随时更新。 😊😊😊 具体食用方式:可以点击本专栏【OpenCV快速查找(更新中)】–搜索你要查询的算子

    2024年02月15日
    浏览(28)
  • 【OpenCV实现平滑图像处理】

    在图像处理中,低通滤波器是一种常用的技术,用于平滑、模糊或降低图像的噪音。这种滤波器通过去除图像中高频部分(即变化较快的部分)来实现这些效果。通过应用2D卷积操作,低通滤波器将每个像素的值与其周围像素的值进行加权平均,从而实现图像的平滑处理。 在

    2024年02月08日
    浏览(30)
  • 【OpenCV】第七章: 图像平滑处理

    第七章: 图像平滑处理 1、什么是图像平滑处理 图像平滑处理就是,将图像中与 周围像素点的像素值差异较大的像素点 调整成 和周围像素点像素值 相近的值。 例如: 2、为什么要进行平滑处理? 因为图像在采集(生成)、传输、处理的过程中常常会存在一定的噪声干扰,比如

    2024年02月03日
    浏览(36)
  • Python-OpenCV中的图像处理-图像平滑

    使用低通滤波器可以达到图像模糊的目的。这对与去除噪音很有帮助。其实就是去除图像中的高频成分(比如:噪音,边界)。所以边界也会被模糊一点。(当然,也有一些模糊技术不会模糊掉边界)。 这是由一个归一化卷积框完成的。他只是用卷积框覆盖区域所有像素的平

    2024年02月13日
    浏览(30)
  • 第五章 Opencv图像处理框架实战 5-3 图像阈值与平滑处理

    ret, dst = cv2.threshold(src, thresh, maxval, type) src: 输入图,只能输入单通道图像,通常来说为灰度图 dst: 输出图 thresh: 阈值 maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值 type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THRESH_BINARY

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包