理解并实现OpenCV中的图像平滑技术

导读

图像模糊(也称为图像平滑)是计算机视觉和图像处理中的基本操作之一。模糊图像通常是噪声减少、边缘检测和特征提取等应用的第一步。在本博客中,我们将重点介绍如何使用Python中的OpenCV库应用多种模糊技术。
理论概述:

基本平滑模式

1. 均值模糊:

这是最简单的模糊方法之一。它通过将图像与标准化的均值滤波器进行卷积来工作。它简单地取出内核区域中所有像素的平均值,并用这个平均值替换中心元素。可以使用cv2.blur()或cv2.boxFilter()函数来完成。

2. 高斯模糊:

与均值方法不同,高斯模糊使用高斯滤波器而不是均值滤波器。该滤波器仅与空间有关,邻近像素的贡献通过高斯函数进行加权。这样可以得到一种自然的模糊效果。OpenCV中使用cv2.GaussianBlur()函数实现高斯模糊。

3. 中值模糊:

中值模糊将每个像素的值替换为内核区域中强度的中值。中值通过对窗口中的所有像素值进行排序并用中间像素值替换来计算。这种技术对于去除椒盐噪声很有效。使用cv2.medianBlur()函数来实现这种方法。

4. 双边滤波:

双边滤波更复杂,同时考虑了空间和强度差异。中心元素被附近像素的加权平均值替换,这样可以保留边缘,因为权重取决于像素强度差异。在OpenCV中使用的函数是cv2.bilateralFilter()。

python程序实现

python代码

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 16 21:32:26 2024

@author: 李立宗

公众号:计算机视觉之光

知识星球:计算机视觉之光

"""

import cv2
import numpy as np

# 加载图像
image = cv2.imread('lenaNoise.png')
cv2.imshow('original', image)

# 均值模糊
avg_blurred = cv2.blur(image, (5, 5))
cv2.imshow('blur', avg_blurred)

# 高斯模糊
gaussian_blurred = cv2.GaussianBlur(image, (5, 5), 0)
cv2.imshow('GaussianBlur', gaussian_blurred)

# 中值模糊
median_blurred = cv2.medianBlur(image, 5)
cv2.imshow('medianBlur', median_blurred)

# 双边滤波
bilateral_filtered = cv2.bilateralFilter(image, 9, 75, 75)
cv2.imshow('bilateralFilter', bilateral_filtered)

# 等待按键按下并销毁所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

输出图像

在这里插入图片描述

结论

模糊是图像处理中简单但强大的技术,有助于去除噪音、降低细节或为进一步的处理(如边缘检测)做准备。应用哪种模糊取决于图像中具体的要求和噪声的性质。

在本博客文章中,我们回顾了OpenCV中最常见的一些模糊技术,并提供了实现它们的Python代码。准确理解并应用这些方法可以显著提高计算机视觉项目中的图像分析结果。

学习参考

OpenCV中的边缘检测技术及实现

参考文献

1、OpenCV轻松入门
李立宗,OpenCV轻松入门,电子工业出版社,2023
在这里插入图片描述

2、计算机视觉40例
李立宗,计算机视觉40例,电子工业出版社,2022
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

杨中科 ASP.NET DI综合案例

综合案例1 需求说明 1、目的:演示DI的能力; 2、有配置服务、日志服务,然后再开发一个邮件发送器服务。可以通过配置服务来从文件、环境变量、数据库等地方读取配置,可以通过日志服务来将程序运行过程中的日志信息写入文件、控制台、数据库等。 3、说明…

【Linux】 Linux 小项目—— 进度条

进度条 基础知识1 \r && \n2 行缓冲区3 函数介绍 进度条实现版本 1代码实现运行效果 版本2 Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!! 基础知识 1 \r &&a…

一文读懂深度学习中的各种卷积 !!

文章目录 前言 1、卷积与互相关 2、3D 卷积 3、转置卷积(去卷积) 4、扩张卷积 5、可分卷积 6、分组卷积 前言 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有多少种类吗?研究学者Kunlun Bai发布了…

2月12号

第一种判断方式 if (n 10) 更好,因为它具有更好的可读性、可以避免误操作,并符合常见的编程习惯和约定

DSA 经典数据结构与算法 学习心得和知识总结(三) |有向无环图及其应用

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《算法导论》第三版 就是这本被封神的杰作,就是它🤦 2、参考书籍:《数据结构》严奶奶版 3、参考书…

SpringCloud-搭建Nacos配置中心

一、Nacos 功能介绍 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个分布式服务注册、配置管理,以及服务健康管理平台。在微服务架构中,配置管理是至关重要的一环,Nacos 提供了可靠、动态的配置…

月薪30K-100K,新一波工作机会来了,你准备好了吗

纯血版鸿蒙发布,开启一个新时代 1月18日下午,在“鸿蒙千帆起”发布会上,华为揭秘鸿蒙生态和纯血鸿蒙星河版HarmonyOS NEXT进阶的新进展。“几年来,在众多伙伴和开发者的共同努力下,鸿蒙生态设备数已达8亿,…

Windows下体验Stable Diffusion 近距离感受AI魔法绘画

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期专栏回顾 专栏描述Java项目实战介绍Java组件安装、使用;手写框架等Aws服务器实战Aws Linux服务器上操作ngin…

快速入门ESP32——移植LVGL(保姆级教程)

相关文章 快速入门ESP32——开发环境配置Arduino IDE 快速入门ESP32——开发环境配置PlatformIO IDE 快速入门ESP32—— platformIO添加开源库和自己的开发库 快速入门ESP32—— 解决platformIO添加开源库下载失败的问题 快速入门ESP32——点亮你的第一个LCD屏幕 快速入门ESP32…

RK3568笔记十五:触摸屏测试

若该文为原创文章,转载请注明原文出处。 使用正点原子的ATK-RK3568板子,一直在测试屏幕和视频,突然想到触摸屏测试,一直没有用过,原子给的demo跑的是QT系统,触摸功能是正常的,测试一下&#xf…

解密ERP业务架构:打造高效运营与持续增长的关键

在当今竞争激烈的商业环境中,企业需要有效管理和整合各个部门的业务流程和信息,以实现高效运营和持续增长。而ERP(企业资源规划)系统作为一种集成的业务管理平台,扮演着至关重要的角色。本文将探讨ERP业务架构的重要性…

【革新你的社交形象】用AI创意头像应用,让你的头像独一无二!

在这个数字化时代,社交媒体已经成为我们生活中不可或缺的一部分。你是否曾经为了找到一个既能表达自己个性,又足够吸引眼球的头像而苦恼?现在,有了我们全新推出的AI创意头像应用,你的这一困扰将成为过去! …

VBA技术资料MF119:数据验证的添加与删除

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

线程池(图解,本质,模拟实现代码)

目录 线程池 介绍 图解 过程 本质 模拟实现 思路 注意点 解决方法 代码 pthread_pool.hpp task.hpp main.cpp 示例 线程池 介绍 线程池是一种并发编程的设计模式,用于管理和重复使用线程,以提高多线程应用程序的性能和效率 线程池主要用于…

C++ “雪花算法“原理

C雪花算法并不是传统的数据结构与算法而是一种崭新的分布式算法 属于深层次C 本篇文章就来描述一下雪花算法 什么是雪花算法: 雪花算法(Snowflake)是Twitter开源的一种分布式唯一ID生成算法。它可以在不依赖于数据库等其他存储设施的情况下&#xff0c…

指针的经典笔试题

经典的指针试题,让你彻底理解指针 前言 之前对于指针做了一个详解,现在来看一些关于指针的经典面试题。 再次说一下数组名 数组名通常表示的都是首元素的地址,但是有两个意外,1.sizeof(数组名)这里数组名…

ES入门知识点总结

目录 倒排索引 倒排索引 Elasticsearch的倒排索引是一种数据结构,用于加快基于文本的搜索操作。它的主要优势在于能够快速找到包含特定单词的文档。 倒排索引的构建过程如下: 文档分词:将文档内容分割成单独的词(或者更小的词元…

Java的异常体系

一、体系简介 java中的Exception类的子类不仅仅只是像上图所示只包含IOException和RuntimeException这两大类,事实上Exception的子类很多很多,主要可概括为:运行时异常与非运行时异常。 在上述体系中,Error表示严重的系统错误&am…

【前端高频面试题--Vue路由篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬前端高频面试题--Vue路由篇 对Vue-Router的理解Vue路由懒加载的实现路由的hash和history模式如何获…

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总

车载诊断协议DoIP系列 —— 车辆以太网节点需求汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…