opencv入门到精通——图像平滑

目录

目标

2D卷积(图像过滤)

图像模糊(图像平滑)

1.平均

2.高斯模糊

3.中位模糊

4.双边滤波


目标

学会:

  • 使用各种低通滤镜模糊图像

  • 将定制的滤镜应用于图像(2D卷积)

2D卷积(图像过滤)

与一维信号一样,还可以使用各种低通滤波器(LPF),高通滤波器(HPF)等对图像进行滤波。LPF有助于消除噪声,使图像模糊等。HPF滤波器有助于在图像中找到边缘。

OpenCV提供了一个函数cv.filter2D来将内核与图像进行卷积。例如,我们将尝试对图像进行平均滤波。5x5平均滤波器内核如下所示:

图片

操作如下:保持这个内核在一个像素上,将所有低于这个内核的25个像素相加,取其平均值,

然后用新的平均值替换中心像素。它将对图像中的所有像素继续此操作。试试这个代码,并检查结果:

 

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('opencv_logo.png')
kernel = np.ones((5,5),np.float32)/25
dst = cv.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.show()

结果:

图片

图像模糊(图像平滑)

通过将图像与低通滤波器内核进行卷积来实现图像模糊。这对于消除噪音很有用。它实际上从图像中消除了高频部分(例如噪声,边缘)。因此,在此操作中边缘有些模糊。(有一些模糊技术也可以不模糊边缘)。OpenCV主要提供四种类型的模糊技术。

1.平均

这是通过将图像与归一化框滤镜进行卷积来完成的。它仅获取内核区域下所有像素的平均值,并替换中心元素。这是通过功能cv.blur()cv.boxFilter()完成的。检查文档以获取有关内核的更多详细信息。我们应该指定内核的宽度和高度。3x3归一化框式过滤器如下所示:

图片

注意
如果您不想使用标准化的框式过滤器,请使用cv.boxFilter()。将参数normalize = False传递给函数。

查看下面的示例演示,其内核大小为5x5:

 

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('opencv-logo-white.png')
blur = cv.blur(img,(5,5))
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

结果:

图片

2.高斯模糊

在这种情况下,代替盒式滤波器,使用了高斯核。这是通过功能cv.GaussianBlur() 完成的。我们应指定内核的宽度和高度,该宽度和高度应为正数和奇数。我们还应指定X和Y方向的标准偏差,分别为sigmaX和sigmaY。如果仅指定sigmaX,则将sigmaY与sigmaX相同。如果两个都为零,则根据内核大小进行计算。高斯模糊对于从图像中去除高斯噪声非常有效。

如果需要,可以使用函数cv.getGaussianKernel() 创建高斯内核。

可以修改以上代码以实现高斯模糊:

 

blur = cv.GaussianBlur(img,(5,5),0)

结果:

图片

3.中位模糊

在这里,函数cv.medianBlur() 提取内核区域下所有像素的中值,并将中心元素替换为该中值。这对于消除图像中的椒盐噪声非常有效。有趣的是,在上述过滤器中,中心元素是新计算的值,该值可以是图像中的像素值或新值。但是在中值模糊中,中心元素总是被图像中的某些像素值代替。有效降低噪音。其内核大小应为正奇数整数。

在此演示中,我向原始图像添加了50%的噪声并应用了中值模糊。检查结果:

 

median = cv.medianBlur(img,5)

结果:

图片

4.双边滤波

cv.bilateralFilter() 在去除噪声的同时保持边缘清晰锐利非常有效。但是,与其他过滤器相比,该操作速度较慢。我们已经看到,高斯滤波器采用像素周围的邻域并找到其高斯加权平均值。高斯滤波器仅是空间的函数,也就是说,滤波时会考虑附近的像素。它不考虑像素是否具有几乎相同的强度。它不考虑像素是否是边缘像素。因此它也模糊了边缘,这是我们不想做的。

双边滤波器在空间中也采用高斯滤波器,但是又有一个高斯滤波器,它是像素差的函数。空间的高斯函数确保仅考虑附近像素的模糊,而强度差的高斯函数确保仅考虑强度与中心像素相似的那些像素的模糊。由于边缘的像素强度变化较大,因此可以保留边缘。

以下示例显示了使用双边过滤器(有关参数的详细信息,请访问docs)。

 

blur = cv.bilateralFilter(img,9,75,75)

结果:

图片

看到,表面上的纹理消失了,但是边缘仍然保留。

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

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

相关文章

Unity网格篇Mesh(一)

Unity网格篇Mesh(一) 本文的目标1.渲染仔细看下面的图你会发现,锯齿状 2.创建网格顶点4 x 2网格网格的顶点 3.创建网格网格只在Play模式下显示逆时针和顺时针三角形第一个三角面一个四边形由两个三角面组成第一个四边形填充剩余网格 接下一篇…

【论文阅读笔记】SegVol: Universal and Interactive Volumetric Medical Image Segmentation

Du Y, Bai F, Huang T, et al. SegVol: Universal and Interactive Volumetric Medical Image Segmentation[J]. arXiv preprint arXiv:2311.13385, 2023.[代码开源] 【论文概述】 本文思路借鉴于自然图像分割领域的SAM,介绍了一种名为SegVol的先进医学图像分割模型…

2024年关于存储发展趋势的七大预言

本文介绍了2024年的七大存储发展趋势,涵盖网络安全、混合云存储、绿色IT、客户体验和容器化应用程序等方面,并阐述了如何腾出财务和运营资源、投入到人工智能(AI)及其他IT项目上,以及如何堵住IT技能缺口。 趋势1&#…

LLM之RAG理论(二)| RAG综述论文详解

论文地址:https://arxiv.org/pdf/2312.10997.pdf 大型语言模型(LLMs)展示了强大的能力,但在实际应用中仍面临挑战,如幻觉现象、知识更新缓慢,以及在回答中缺乏透明度。检索增强生成(RAG&#xf…

制作TikTok获客脚本必备源代码!

在这个数字时代,TikTok已成为全球最受欢迎的社交媒体平台之一,无数的品牌和企业都试图通过这个平台吸引潜在客户。 但是,要想在TikTok上获得更多关注和粉丝,除了制作有趣、有创意的内容外,还需要借助一些自动化工具来…

路由器介绍和命令操作

先来回顾一下上次的内容: ip地址就是由32位二进制数组 二进位数就是只有数字0和1组成 网络位:类似于区号,表示区域作用 主机位:类似于号码,表示区域中编号 网络名称:网络位不变,主机位全为0 …

【svn】win11最新svn每天自动化定时update、commit,隐藏窗口,定时脚本编写

本文使用schtasks结合bat脚本实现全自动svn update以及commit操作。执行时隐藏cmd窗口,全自动后台执行。 执行脚本 写脚本参考了网上很多文章,但是这些文章的方法都有问题或者已经失效,比如: 老版本的bat脚本,使用v…

【hacker送书第11期】Python数据分析从入门到精通

探索数据世界,揭示未来趋势 《Python数据分析从入门到精通》是你掌握Python数据分析的理想选择。本书深入讲解核心工具如pandas、matplotlib和numpy,助您轻松处理和理解复杂数据。 通过matplotlib、seaborn和创新的pyecharts,本书呈现生动直…

本地部署Jellyfin影音服务器并实现远程访问内网影音库

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

路径规划最全综述+代码+可视化绘图(Dijkstra算法+A*算法+RRT算法等)

路径规划综述 1. 背景介绍 路径规划是指在给定的环境中找到从起点到终点的最佳路径的过程。它在现实生活中有着广泛的应用,包括无人驾驶、物流配送、机器人导航等领域。随着人工智能和计算机技术的发展,路径规划技术也在不断地得到改进和应用。 路径规划…

C# Onnx yolov8 pokemon detection

目录 效果 模型信息 项目 代码 下载 C# Onnx yolov8 pokemon detectio 效果 模型信息 Model Properties ------------------------- date:2023-12-25T17:55:44.583431 author:Ultralytics task:detect license:AGPL-3.0 h…

高德地图_公共交通路径规划API,获取两地点之间的驾车里程和时间

import pandas as pd import requests import jsondef get_dis_tm(origin, destination,city,cityd):url https://restapi.amap.com/v3/direction/transit/integrated?key xxx #这里就是需要去高德开放平台去申请key,请在xxxx位置填写,web服务APIlink {}origin{}&desti…

[C/C++]数据结构: 链式二叉树的构建及遍历

一: 💬二叉树的概念 1.1:🚩 概念 二叉树是指树中节点的度不大于2的有序树,它是一种最简单且重要的树,二叉树的递归定义为:二叉树是一颗空树,或者是一颗由一个根节点和两颗互不相交的,分别称为跟的左孩子和右孩子树组成的非空树,其中左子树和右子树都是二…

YOLOv5 目标计数 | 图片上绘制计数结果

修改方法: 只需要改 detect.py for path, im, im0s, vid_cap, s in dataset: 下新增一行 class_counts = {} class_counts[int(c)] = class_counts.get(int(c

《数字图像处理-OpenCV/Python》连载:图像的阈值处理

《数字图像处理-OpenCV/Python》连载:图像的阈值处理 本书京东 优惠购书链接 https://item.jd.com/14098452.html 本书CSDN 独家连载专栏 https://blog.csdn.net/youcans/category_12418787.html 第 9 章 图像的阈值处理 图像的阈值处理简单、直观,计算…

网络监测之如何保障企业业务系统安全?

网络信息安全在网络时代的重要性不言而喻。随着互联网的普及和数字化进程的加速,网络已经成为人们生活、工作和学习的重要平台。在这个平台上,信息交流、数据存储、在线支付等都需要依赖于网络信息安全。其中企事业单位业务系统安全值得关注。 企事业单…

水印消除:三种简单方法教你如何去除图片水印

当需要使用在线素材图片作为头像或壁纸时,水印可能成为不便之处。需要解决如何去除水印的问题吗?以下是几种方法供参考: 如何去除水印方法一:水印云去除水印(适用于电脑端和手机端) 水印云专注于无痕去水印…

给零基础朋友的编程课07 - 代码

给零基础朋友的编程课07-初识色彩、初识变量、案例3讲解_哔哩哔哩_bilibili Code: // // 案例3 // //// -设定画面- // size(1000, 1000); // 设置画面大小 background(7, 119, 132); // 设置背景颜色// - 绘画 - //// 1 绘制垂线 // 设定线条风格 …

第三十六周:文献阅读+注意力/自注意力机制

目录 摘要 Abstract 文献阅读:锂离子电池RUL预测的SA-LSTM 现有问题 提出方法 提出方法的结构 SA-LSTM预测模型的结构 研究实验 研究贡献 注意力机制 Self-Attention(自注意力机制) 注意力与自注意力 代码实现attention、self-at…

[Linux] MySQL数据库之索引

一、索引的相关知识 1.1 索引的简介 索引是一个排序列表,包含索引值和包含该值的数据行的物理地址(类似于 c 语言链表,通过指针指向数据记录的内存地址)。 使用索引后可以不用扫描全表来定位某行的数据,而是先通过索…