《opencv实用探索·七》一文看懂图像卷积运算

1、图像卷积使用场景

图像卷积是图像处理中的一种常用的算法,它是一种基本的滤波技术,通过卷积核(也称为滤波器)对图像进行操作,使用场景如下:

模糊(Blur): 使用加权平均卷积核对图像进行卷积可以实现模糊效果。这对于去除图像中的噪声或减小细节可以很有帮助。

锐化(Sharpen): 锐化卷积核可以突出图像中的边缘,增强图像的细节。这对于使图像看起来更清晰和更有对比度很有用。

边缘检测(Edge Detection): 使用特定的卷积核,如Sobel、Prewitt或Laplacian等,可以检测图像中的边缘。这对于计算机视觉任务和物体识别非常重要。

浮雕效果: 通过使用浮雕卷积核,可以使图像看起来带有凹凸的感觉,类似于雕刻。

平滑和降噪: 卷积可以用于平滑图像,减少图像中的高频噪声。常见的平滑卷积核包括高斯核。

纹理分析: 通过使用不同类型的卷积核,可以提取图像中的纹理信息,用于纹理分析和分类任务。

图像增强: 卷积可以用于增强图像的特定特征,例如对比度、亮度或颜色。

运动模糊(Motion Blur): 使用特定的卷积核,可以模拟图像中的运动模糊,这对于一些图像合成和特效很有用。

下面是一些实现效果图:
图像模糊:
在这里插入图片描述
图像浮雕:
在这里插入图片描述
图像锐化
在这里插入图片描述

2、卷积运算计算方式

先定义一个卷积核,也被成为卷积模板或卷积窗口
注意:卷积核是一个nxn的矩阵,且n是一个奇数,这样卷积核才有一个中心点,卷积核中的每个数字都是一个权重。

在这里插入图片描述
从上图中可以看到定义了一个3x3的卷积核,且核内除了中心点权重为1,其他都为0

怎么计算加权平均?
下面定义一个原图像,我们先把卷积核放在图像任意一个位置。
在这里插入图片描述
这时候对卷积核覆盖在原图像中心点的像素进行加权平均:

(250*0 + 210*0 + 220*0 + 20*0 + 30*1 + 140*0 + 240*0 + 140*0 + 110*0) / (0+0+0+0+1+0+0+0+0) = 30

这时候经过卷积的原图像在第三行第四列的像素值置为30,说明图像中这个中心点的灰度值不受周围像素点的影响。卷积运算之后的灰度值仍然是它本身。

下面我们换一个卷积核:
在这里插入图片描述
依旧放在上面原图的那个位置,现在重新进行卷积运算:

(250/9 + 210/9 + 220/9 + 20/9 + 30/9 + 140/9 + 240/9 + 140/9 + 110/9) / (1/9+1/9+1/9+1/9+1/9+1/9+1/9+1/9+1/9) = 151

这时候经过卷积的原图像在第三行第四列的像素值置为151,说明图像中的这个像素灰度值已被周围像素点影响。

下图一张动图模拟了卷积核依次滑过原图像中每个像素点并依次对卷积核中心覆盖的那个像素点进行卷积运算。
在这里插入图片描述

需要注意的是图像在做卷积运算时需要花费一些时间,通常和卷积核的大小有关,卷积核越大卷积运算时间越长图像越模糊,一般情况下推荐使用3x3, 5x5和7x7卷积核对图像进行卷积运算。

下图是我们使用3x3卷积核对原图像进行滑行描扫,核中心走过的区域:
在这里插入图片描述
可以看到经过卷积运算后原图像从原来的12x12变为了10x10,因为3x3卷积核的中心无法做到对原图像的边缘进行卷积运算。那由此可以推断出如果我们使用5x5卷积核,图像将会从原来的12x12变为8x8,最外两层没有参与计算。如果这样的话图像的信息变会丢失,那么怎么让图像中所有的像素都参与卷积运算?

比如我们使用3x3卷积核,通常会在图像最外层添加一层像素,这样在用3x3卷积核滑动时卷积核中心就能扫到图像最外层像素。
在这里插入图片描述

图像卷积效果:
通过卷积运算,对图像进行模糊后,可以将图像中的高频噪声给过滤掉。因此,对图像的卷积运算也称为平滑或者滤波。卷积核也称为滤波器。

如果采用3x3卷积核,且只有核中心为1,其他都为0,那么原图卷积出来没有任何变化
在这里插入图片描述

如果我们把卷积核换成:
在这里插入图片描述
卷积后的图像开始变模糊
在这里插入图片描述

下图为对一张图片进行不同卷积核均值模糊后的结果,可以看到卷积核尺寸越大,图像越模糊。
在这里插入图片描述
通常,均值滤波采用的卷积核里面的权重都是1,求加权平均就等于求平均,在使用卷积核模糊图像时为了尽量保留图像原有的信息,卷积核中心的权值应该最高,越远离核中心的权值越小。这时候就应该考虑使用高斯滤波模糊图像,高斯模糊在平滑物体表面的同时,能够更好的保持图像的边缘和轮廓

参考信息:卷积神经网络

在这里插入图片描述

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

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

相关文章

模糊C均值(Fuzzy C-means,FCM)聚类的可运行的python程序代码,复制即可用!!切记需要安装库 scikit-fuzzy

文章目录 前言一、安装库 scikit-fuzzy二、具体程序代码(复制可运行)三、结果展示总结 前言 模糊C均值(Fuzzy C-means,FCM)聚类是一种软聚类方法,它允许数据点属于多个聚类,每个数据点对所有聚…

16.Oracle数据库Row_number() over()函数排序使用方法

1.原始数据(部分) SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序 SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number() over( order by sal) rs FROM SCOTT.EMP ; 根据工资排序并添加序号 3.使用Row_number() over() 函数,分组并排序 SELECT EMPNO,ENAME,SAL,DEPTN…

Python语言学习笔记之七(JOSN应用)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 1、认识Json JSON (JavaScript Obiect Notation)是一种轻量级的数据交换格式,它是ECMAScript的一…

笔记二十五、React中setState是同步还是异步的?

在react18版本之前setState既可以是同步也可以是异步的 在Promise的状态更新、js原生事件、定时器中是同步的 在react的合成事件中,是异步的 在react18版本之后是setState异步的 代码 import React, {Component} from react;class Async extends Component {state …

计算机网络测试题

一 单项选择题(5分) 1、假设要发送的数据为101110,采用CRC的生成多项式是X31,试求应添加在数据后面的余数。(5分) 110 011(答案) 101 001 实际得分:5分 二 填空题(95分) 1、以下3个子地址块…

json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)

项目场景: 提示:扩充数据集时,同步修改json标签中的"imagePath"字段的值,出现json文件读写不一致问题。 采用open函数读写模式修改json文件字段。open(jsonF.json, r)。 问题描述 运行修改json文件报错:j…

防孤岛装置在光伏发电、燃气发电等新能源并网供电系统的应用

• AM5SE-IS防孤岛保护装置主要适用于35kV、10kV及低压380V光伏发电、燃气发电等新能源并网供电系统。 • 当发生孤岛现象时,可以快速切除并网点,使本站与电网侧快速脱离,保证整个电站和相关维护人员的生命安全**。 保护功能** ● 三段式过流…

数据记录的方法(轻量级)

一.文件操作 1.打开文件 fpopen(name[,mode[,buffereing]) 需要定义一个变量,再选择文件的打开参数。需要注意的是,如果参数选择不为w,w,a或a那么文件必须一开始就存在,否则会出现FileNotFoundError类型报错。此外为避免出现报错&#xff…

Linux git

1.Git 初识 不知道你⼯作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,⽐如: “报告-v1”? …

nodejs 上传文件到 OSS

1、通过脚本上传文件到OSS服务器,需要使用ali-oss插件 npm i ali-oss2、首先,需要添加一个OSS实例,并填写连接OSS的数据 const OSS require(ali-oss); const ossClient new OSS({region: oss-cn-XXX,accessKeyId: XXXX,accessKeySecret: …

机器视觉新功能上线:同步训练多个模型,智造的脚步又加快了!

“AI视觉”的应用,为当下诸多企业的生产智能化打开了新的想象空间。其中,深度学习作为AI视觉的核心技术,在实际应用中往往需要经历一个耗时较长的阶段——深度学习神经网络模型训练。其目的是通过使用已标注的数据集来训练模型,使…

Java-- 日期的运算

目录 1.Calendar 转化 String 2.String 转化Calendar 3.Date 转化String 4.String 转化Date 5.Date 转化Calendar 6.Calendar转化Date 7.String 转成 Timestamp 8.Date 转 TimeStamp 9代码示例: 10.将日期拆解出来: 11.求n天后的日期 12.JAVA日期加减运…

Java系列-LinkedList源码

1.双链表结构 public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, java.io.Serializable{transient int size 0;transient Node<E> first;transient Node<E> last;public LinkedLis…

python项目源码保护——代码混淆

什么是代码混淆 代码混淆是指将代码进行加密、压缩、乱序等操作&#xff0c;使得代码难以被阅读和理解&#xff0c;从而达到保护代码的目的。代码混淆可以有效地防止代码被反编译和盗用&#xff0c;提高代码的安全性。 pyobfuscate pyobfusate通过多种方式转换源代码。其中一…

Scan Context / Scan Context ++ 论文和源码阅读

Title: Scan Context / Scan Context 论文和源码阅读 文章目录 前言I. Scan Context 的构造A. 论文内容B. 源码内容 2. Ring Key/Retrieval Key 的计算A. Ring KeyB. Retrieval Key 3. KD 树搜索 —— 第一阶段搜索A. KD 树构建B. KD 树搜索 4. Scan Context 距离搜索 —— 第…

基于mps的pytorch 多实例并行推理

背景 大模型训练好后&#xff0c;进行部署时&#xff0c;发现可使用的显卡容量远大于模型占用空间 。是否可以同时加载多个模型实例到显存空间&#xff0c;且能实现多个实例同时并发执行&#xff1f;本次实验测试基于mps的方案&#xff0c;当请求依次过来时&#xff0c;多个相…

一种LED驱动专用控制电路方案

一、基本的概述 TM1651 是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用电路&#xff0c;内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。本产品性能优良&#xff0c;质量可靠。采用SOP16/DIP16的封装形式。 二、特性说…

整体迁移SVN仓库到新的windows服务器

一、背景 公司原有的SVN服务器年代比较久远经常出现重启情况&#xff0c;需要把SVN仓库重新迁移到新的服务器上&#xff0c;在网上也搜到过拷贝Repositories文件直接在新服务器覆盖的迁移方案&#xff0c;但考虑到原有的操作系统和现有的操作系统版本不一致&#xff0c;SVN版本…

获取窗口中文标题栏GetWindowText()

GetWindowText(hwnd, lpString, len)会根据传入的第二个参数lpString 判断是ASCII或者Unicode编码选择调用GetWindowTextA(hwnd, lpString, len)&#xff0c;还是GetWindowTextW(hwnd, lpString, len)&#xff0c;所以想获取中文标题直接调用GetWindowTextW() ASCII GetWindowT…

frp 配置内网访问

frp介绍 frp 是一个开源、简洁易用、高性能的内网穿透软件&#xff0c;支持 tcp, udp, http, https 等协议。frp 项目官网是 https://github.com/fatedier/frp 下载地址&#xff1a; https://github.com/fatedier/frp/releases frp工作原理 服务端运行&#xff0c;监听一个…