OpenCV 图像处理中滤波技术介绍

news2024/11/14 19:34:08

VS2022配置OpenCV环境

  1. 关于OpenCV在VS2022上配置的教程可以参考:VS2022 配置OpenCV开发环境详细教程

图像处理中滤波技术

图像滤波是图像处理中的一种重要技术,用于改善图像质量或提取图像中的特定特征。以下是一些常见的图像滤波技术:

  1. 均值滤波(Mean Filter)

    • 简单且广泛使用的线性滤波器,用于平滑图像并减少噪声。
    • 通过将每个像素值替换为该像素周围邻域内像素值的平均值来实现。
  2. 高斯滤波(Gaussian Filter)

    • 一种权重滤波器,使用高斯函数作为权重,对图像进行平滑处理。
    • 高斯滤波器对图像的边缘和细节有较好的保留效果。
  3. 中值滤波(Median Filter)

    • 一种非线性滤波器,通过替换每个像素值为其邻域内的中值来减少噪声。
    • 对于椒盐噪声(salt-and-pepper noise)特别有效。
  4. 锐化滤波(Sharpening Filter)

    • 通过增强图像中的高频成分来提高图像的清晰度。
    • 常用的锐化滤波器包括拉普拉斯滤波器。
  5. 拉普拉斯滤波(Laplacian Filter)

    • 用于边缘检测,通过突出图像中的二阶导数来实现。
    • 拉普拉斯滤波器可以增强图像的边缘,但也可能放大噪声。
  6. 双边滤波(Bilateral Filter)

    • 结合了均值滤波和高斯滤波的优点,同时保留了边缘信息。
    • 它根据像素的强度和空间距离进行加权,以平滑图像而不模糊边缘。
  7. 高通滤波(High-pass Filter)

    • 允许高频信号通过,阻止低频信号。
    • 在图像处理中,通常用于突出边缘和细节。
  8. 低通滤波(Low-pass Filter)

    • 与高通滤波器相反,允许低频信号通过,阻止高频信号。
    • 用于图像平滑和去噪。
  9. 傅里叶变换滤波(Fourier Transform Filtering)

    • 使用傅里叶变换将图像从空间域转换到频率域。
    • 在频率域中应用滤波器,然后通过逆傅里叶变换将图像转换回空间域。
  10. 形态学滤波(Morphological Filtering)

    • 包括膨胀(Dilation)、腐蚀(Erosion)、开运算(Opening)、闭运算(Closing)等。
    • 用于图像的形态学操作,如去除小的不规则性或连接断裂的区域。

每种滤波技术都有其特定的应用场景和效果。选择合适的滤波器取决于图像的特性和处理目标。例如,高斯滤波适合于平滑图像和去除高斯噪声,而中值滤波则更适合于去除椒盐噪声。在实际应用中,可能需要结合多种滤波技术来达到最佳效果。

均值滤波

  1. 介绍:均值滤波是最简单的滤波器之一,它将每个像素的值替换为其邻域内所有像素值的平均值。
  2. 函数:blur()
  3. c++ demo:
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, blur_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::blur(image, blur_image, cv::Size(5, 5)); // 5x5的均值滤波
    cv::imshow("blur_image", blur_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

高斯滤波

  1. 介绍: 高斯滤波使用高斯函数作为权重来计算邻域内像素的平均值,对图像进行平滑。
  2. 函数:GaussianBlur()
  3. c++ demo
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, gaussian_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::GaussianBlur(image, gaussian_image, cv::Size(5, 5), 0); // 5x5的高斯滤波
    cv::imshow("gaussian_image", gaussian_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

中值滤波

  1. 介绍:中值滤波是一种非线性滤波器,它将每个像素替换为其邻域内所有像素值的中值,对椒盐噪声非常有效。
  2. 函数:medianBlur()
  3. c++ demo
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, median_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::medianBlur(image, median_image, 5); // 5x5的中值滤波
    cv::imshow("median_image", median_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

双边滤波

  1. 介绍:双边滤波在平滑图像的同时保留边缘,它根据像素值的接近度和空间距离来加权。
  2. 函数:bilateralFilter()
  3. c++ demo
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, bilateral_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::bilateralFilter(image, bilateral_image, 9, 75, 75); // 9x9的双边滤波
    cv::imshow("bilateral_image", bilateral_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

锐化滤波

  1. 介绍:锐化滤波通过增强图像的高频分量来使图像看起来更清晰。
  2. 函数:filter2D()
  3. c++ demo
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, sharpen_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::Mat kernel = (cv::Mat_<char>(3, 3) << 0, -1, 0,
        -1, 5, -1,
        0, -1, 0);
    cv::filter2D(image, sharpen_image, image.depth(), kernel);
    cv::imshow("sharpen_image", sharpen_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

拉普拉斯滤波

  1. 介绍:拉普拉斯滤波是一种边缘增强的线性滤波器,它使用拉普拉斯算子来突出图像的二阶导数。
  2. 函数
  3. c++ demo:
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat image, laplacian_image;
    image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::Laplacian(image, laplacian_image, CV_16S, 1);
    cv::convertScaleAbs(laplacian_image, laplacian_image); // 转换为无符号8位
    cv::imshow("laplacian_image", laplacian_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

方框滤波

  1. 介绍:方框滤波是一种简单的线性滤波器,它将每个像素的值替换为其邻域内所有像素值的总和除以邻域大小。
  2. 函数:blur()
  3. c++ demo
#include <opencv2/opencv.hpp>

int main() {
    cv::Mat src_image, box_image;
    src_image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::blur(src_image, box_image, cv::Size(3, 3), cv::Point(-1, -1), 
    cv::BORDER_DEFAULT);
    cv::imshow("box_image", box_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

自定义滤波器

  1. 介绍:可以创建自定义的滤波器核来应用特定的效果。

  2. 函数:filter2D

  3. c++ demo

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat src_image, custom_filtered_image;
    src_image = cv::imread("amy.png", cv::IMREAD_COLOR);
    cv::Mat custom_kernel = (cv::Mat_<float>(3, 3) << 1, 1, 1,
        1, 0, 1,
        1, 1, 1);
    cv::filter2D(src_image, custom_filtered_image, src_image.depth(), custom_kernel);
    cv::imshow("custom_filtered_image", custom_filtered_image);
    cv::waitKey(0); // 等待用户按键
    return 0;
}
  • 结果:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2084867.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode 热题100-41 二叉树的层序遍历

二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示例 2&…

线上预订酒店订房小程序源码系统 多商家入驻 带完整的安装代码包以及搭建部署教程

系统概述 线上预订酒店订房小程序源码系统是一款基于微信小程序开发的酒店预订系统。它充分利用了微信小程序的便捷性和普及性&#xff0c;为用户提供了一个方便、快捷的酒店预订渠道。同时&#xff0c;该系统还支持多商家入驻&#xff0c;允许不同的酒店商家在同一个平台上展…

uniapp自定义头部导航栏布局(普通版)

H5与微信小程序 通过获取系统信息和获取胶囊按钮的信息&#xff0c;得到获取标题栏高度&#xff0c;成而做好自定义头部导航栏 在微信小程序可使用 但在H5就保错&#xff0c;就需要优化 <!-- 全局custom-nav-bar组件 --> <template><view class"customN…

【Docker】Dockerfile实列-Nginx镜像构建

一、镜像构建步骤 实验准备&#xff1a;导入centos7镜像&#xff08;因为现在docker镜像拉取不下了&#xff09; docker load -i centos-7.tar.gz 1、建立构建目录&#xff0c;编写构建文件 [rootdocker-node1 ~]# mdkir /docker [rootdocker-node1 ~]# cd /docker [rootdo…

发现一个程序员最强外设,助你高效开发早日摸鱼!

简介 最近公司的副屏有点问题&#xff0c;经常屏闪&#xff0c;无意中和媳妇儿吐槽了几句。没想到&#xff0c;生日的时候&#xff0c;居然收到了她的礼物&#xff1a; 看到「程序员专用」的时候&#xff0c;我很开心的对媳妇儿表示了感谢&#xff0c;但内心第一反应是&#x…

1DM+ v17.1 修改版 — 多线程下载管理工具(高效稳定)

1DM 是一款适用于安卓设备的下载管理工具&#xff0c;支持多线程下载&#xff0c;可以加快下载速度。具备自动识别下载链接、断点续传、下载任务管理和文件浏览等功能。此修改版由 Balatan 制作&#xff0c;无需 root 或 Lucky Patcher&#xff0c;禁用不必要的权限和功能&…

学习之SQL语句

SQL通用语法 1、SQL语句可以单行或者多行书写&#xff0c;以分号结尾 2、SQL语句可以使用空格或者缩进增强语句的可读性 3、MySQL数据库的SQL语句不区分大小写&#xff0c;关键字建议使用大写 4、注释&#xff1a; 单行注释&#xff1a;-- 注释内容 或 # 注释内容&#xff08;…

【百度-APP相关安卓开发】

百度-APP相关安卓开发 安卓四大组件activaty生命周期 启动模式一个Activity的生命周期主要有四种状态&#xff1a;Activity周期Activity的启动模式&#xff1a;广播接收器 线程多线程 线程池进程 线程 携程进程与线程比较协程与线程比较 进程间通信方式和区别Mysql和Redis区别T…

【Python】--- 基础语法(上)

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Python 本篇博客博主将分享一些python的基础语法。 &#x1f3e0; 常量和表达式 我们可以把Python当成一个计算器,进行一些简单的算术运算 print(1 …

九芯电子:派对酒吧音箱灯光语音控制方案的优选

随着科技的发展以及智能AI的兴起&#xff0c;人们对交互体验的需求不断增长&#xff0c;派对酒吧音箱灯光语音控制方案是人机交互信息载体。‌九芯电子的NRK3301芯片成为了派对酒吧音箱灯光语音控制方案的理想选择。‌ NRK3301芯片是一款高性能、低成本的32位语音识别芯片&…

windows上传文件精准包含技巧

目录 环境搭建 原理 绕过 结果 环境搭建 需要在php.ini开启upload_tmp_dir选项 这里需要对C:\Windows\Temp有写入权限 文件上传页面 文件包含页面 原理 利用文件上传产生的缓存文件进行命令执行&#xff0c;从而getshell 绕过 你上传文件的时候会生成临时文件,我们需要…

vue3中使用高德地图天气信息

注册一个key 和安全密钥 index.html中 使用script标签 引入生成的key和秘钥 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><link rel"icon" href"/favicon.ico" /><meta name&q…

吐血整理(最全论文指令手册),还有 ChatGPT 3.5/4.0 新手使用手册~ 【亲测好用】

今天给大家分享下论文润色、降重、写作的GPT指令提示词&#xff0c;按论文步骤整理 让你的文章更加有逻辑且通顺&#xff0c;助力快速完成论文&#xff0c;相信对你有帮助~ 一、论文写作润色指令 1、写作选题指令 ① 确定研究对象 我是一名【XXXXX】&#xff0c;请从以下素…

叉车7寸两路一体机介绍

叉车7寸两路一体机产品介绍&#xff1a; 1.前后高清双录&#xff1a;能够同时录制叉车行驶过程中的前方和后方影像&#xff0c;提供全面的视觉监控‌。 2.倒车盲区影像&#xff1a;特别针对倒车时的盲区进行影像捕捉&#xff0c;提高倒车安全性‌。 3.技术参数‌&#xff1a; …

以小搏大:Salesforce 十亿参数模型表现超过ChatGPT

小模型的强势崛&#xff1a;轻量化AI如何以高效表现撼动大型模型的统治&#xff01; ©作者|DWT 来源|神州问学 导读 近年来&#xff0c;人工智能领域的迅猛发展使得大型语言模型&#xff08;LLM&#xff09;成为了焦点。这些模型&#xff0c;如OpenAI的GPT-4和Google的…

展会直击 | 美格智能亮相IOTE 2024第二十二届国际物联网展·深圳站

IOTE 2024第二十二届国际物联网展深圳站于2024年8月28日—30日在深圳国际会展中心&#xff08;宝安&#xff09;开展&#xff0c;美格智能携最新的5G/4G AIoT模组与物联网行业解决方案精彩亮相&#xff0c;持续为客户带来通信技术、AI智能方面的创新产品和创新技术解决方案&…

养宠物家里有浮毛怎么办?口碑相传优质浮毛空气净化器汇总

有没有养猫五年以上还是单猫的铲屎官&#xff1f;能不能分享一下怎么才能控制住不养新猫。 从我养的第一只猫长大开始&#xff0c;看到别人家的小幼猫自己也控制不住的想养。到现在已经陆陆续续养了7只了&#xff0c;前段时间看楼下流浪的小三花差点又没忍住...要不是那段时间…

Java 集合Collection(List、Set)Map

集合的理解和优点 1)可以动态保存任意多个对象&#xff0c;使用比较方便!2)提供了一系列方便的操作对象的方法: add、remove、 set、 get等3)使用集合添加,删除新元素的示意代码- Java集合的分类 Java的集合类很多&#xff0c;主要分为两大类&#xff0c;如图&#xff1a; 1…

安美数字酒店宽带运营系统-任意文件读取

漏洞描述&#xff1a; 安美数字酒店宽带运营系统 weather.php 接口存在任意文件读取漏洞&#xff0c;未经身份验证攻击者可通过该漏洞读取系统重要文件&#xff08;如数据库配置文件、系统配置文件&#xff09;、数据库配置文件等等&#xff0c;导致网站处于极度不安全状态 fo…

朴素贝叶斯分类算法

文章目录 贝叶斯定理问题背景朴素贝叶斯朴素贝叶斯分类算法原理朴素贝叶斯分类算法步骤给定示例数据 极大似然估计如何求 P ( 特征 ∣ 类别 ) P ( 类别 ) P(\text{特征} \mid \text{类别}) \times P(\text{类别}) P(特征∣类别)P(类别)&#xff1f;如何求 P ( 类别 ) P(\text{…