当前位置: 首页 > news >正文

《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,求加权平均就等于求平均,在使用卷积核模糊图像时为了尽量保留图像原有的信息,卷积核中心的权值应该最高,越远离核中心的权值越小。这时候就应该考虑使用高斯滤波模糊图像,高斯模糊在平滑物体表面的同时,能够更好的保持图像的边缘和轮廓

参考信息:卷积神经网络

在这里插入图片描述

相关文章:

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

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

RPA机器人如何确保敏感数据的安全性

数据资源作为数字化时代的关键要素,其重要性一直受到高度重视,由此,数据安全也成为企业和个人必须面对的重要问题。随着RPA技术在各个行业的广泛应用,其系统安全性也成了每个企业关注的重中之重。经验丰富的RPA专家可以有效地采取…...

微信号被封了怎么办

13-7 常在河边走,哪有不湿鞋,做为经常用微信做电商客服的,或者经常在微信上和顾客谈钱的,总是会被微信后台重点关注,一不小心就有可能被封号。 如果遇到太倒霉的时候,永久封号了,这个时候微信…...

关于 ls -s 输出文件大小的单位问题的讨论

自己看书正好看到这里,正纳闷呢,上网查了下,发现不是我自己在为这个问题感到困惑。 有个大哥提出一个问题: 问题标题: ls -s的单位到底是什么? man ls -s, --size print the alloca…...

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义:JSON.stringify(value, replacer, space) 参数说明: value:js对象 replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示。 space:填充参数,可以是数…...

vue请求如何按顺序执行

我们有时候会碰到这种情况,需要连续发送两个请求,第二个请求需要用第一个请求的某个返回值作为参数来作为第二个请求的请求参数。 但是存在一个问题:两个请求都是异步的,他并不按照我们期望的先后顺序来执行。 这时候就需要控制请…...

【java】编译时bug 项目启动前bug合集

文章目录 1. jdk8中 Optional orElseThrow 编译时报错java: 未报告的异常错误X; 必须对其进行捕获或声明以便抛出2. 启动项目时提示 Error running Application: Command line is too long. Shorten command line for Application or also for Spring Boot default configurati…...

Pytorch——多卡GPU训练与单卡GPU训练相互切换

部分深度学习网络默认是多卡并行训练的,由于某些原因,有时需要指定在某单卡上训练,最近遇到一个,这里总结如下。 目录 一、多卡训练1.1 修改配置文件1.2 修改主训练文件1.3 显卡使用情况 二、单卡训练2.1 修改配置文件2.2 显卡使…...

Github项目-CNNResnet9-残差神经网络水果多分类项目

ResNet-论文全文完整翻译注解 - 知乎 你必须要知道CNN模型:ResNet - 知乎 #!/usr/bin/env python # coding: utf-8 #https://github.com/SehajS/cnn-resnet-fruit-classification # # Classifying Fruits from their Images # # This project aims at creating a…...

学习感悟一己之言

学习感悟一己之言 学习上克服困难实际上是克服心理上或认识上的障碍的过程。所谓的理解,就是化陌生为熟悉。看不懂,一方面是因为接触的材料太陌生,即远离你当前的背景知识;另一方面是材料或讲述者的描述刻画不准确或晦涩不当。有了…...

【设计模式-2.3】创建型——原型模式

说明:本文介绍设计模式中,创建型中的原型模式; 飞机大战 创建型设计模式关注于对象的创建,原型模式也不例外。如简单工厂和工厂模式中提到过的飞机大战这个例子,游戏中飞机、坦克对象会创建许许多多的实例&#xff0…...

八大插入算法(有注释)

直接插入排序 //直接插入排序 void InsertSortingDirectly(int* nums,int numsSize){int j0;for(int i1;i<numsSize-1;i){//定义一个中间变量保存当前要插入的值int tempnums[i];//在前面已排好序的序列中&#xff0c;找到合适的位置插入for(ji-1;j>0;j--){if(nums[j]&g…...

【2】基于多设计模式下的同步异步日志系统

6. 相关技术知识补充 6.1 不定参函数 在初学C语⾔的时候&#xff0c;我们都⽤过printf函数进⾏打印。其中printf函数就是⼀个不定参函数&#xff0c;在函数内部可以根据格式化字符串中格式化字符分别获取不同的参数进⾏数据的格式化。 ⽽这种不定参函数在实际的使⽤中也⾮常…...

npm管理发布包-创建与发布

创建与发布 我们可以将自己开发的工具包发布到 npm 服务上&#xff0c;方便自己和其他开发者使用&#xff0c;操作步骤如下 创建文件夹&#xff0c;并创建文件indexjs&#xff0c;在文件中声明函数&#xff0c;使用 module.exports 暴露npm初始化工具包&#xff0c;package.j…...

基于Spring,SpringMVC,MyBatis的校园二手交易网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring,SpringMVC,MyBatis的校园二…...

酒店 KPI绩效考核指标及应用

“路遥知马力&#xff0c;日久见人心”&#xff0c;目前国内各类型酒店风起云涌&#xff0c;大有在市场竞争中一比高下之势&#xff0c;各路精英受经济型酒店低投入高回报的市场利益驱动&#xff0c;都分分抢占市场&#xff0c;从而使国内经济型酒店的数量不断增加&#xff0c;…...

WordPress两种方法实现上传媒体图片文件自动重命名

我们发布文章时&#xff0c;会上传一些图片、音频之类的文件。但是WordPress没有自动 给新上传文件重命名的功能&#xff0c;逐个文件去重命名那就太麻烦了&#xff0c;那么我们改如何自动给上传的媒体文件图片重命名呢&#xff1f; 我在网站搜索了些上WordPress上传媒体文件自…...

TZOJ 1405 An easy problem

翻译有些出错&#xff0c;但大概是那个意思 答案&#xff1a; #include <stdio.h> #include <ctype.h> //引用库函数isupper的头文件int main() {int T 0, i 0;scanf("%d", &T); //要输入的行数while (T--) //循环T次{char c;int y 0…...

SpringBoot+mysql+vue实现大学生健康档案管理系统前后端分离

一、项目简介 本项目是一套基于SpringBoot实现大学生健康档案管理系统&#xff0c;主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目可以直接作为bishe使用。 项目都经过严格调试&#…...

CCC联盟数字车钥匙(三)——UWB MAC时间网格同步及Hopping

本文继续上一篇UWB MAC时间网格继续介绍UWB MAC中关于时间同步相关内容。 3、MAC时间网格同步 每个测距会话的定义都基于相对的指定时钟参考 U W B t i m e 0 k UWB^k_{time0} UWBtime0k​&#xff0c;相对于发起者的内部时钟定义。 时钟参考 U W B t i m e 0 k UWB^k_{time0} …...

精益生产线功能拆解:如何利用精益生产线解决多品种小批量生产难题

在当前的制造业环境中&#xff0c;订单碎片化已成为常态&#xff0c;精益生产线不再是一个可选的优化项&#xff0c;而是企业生存的必修课。面对多品种、小批量的市场需求&#xff0c;传统的大批量流水线往往显得笨重不堪&#xff0c;频繁换型导致的停机、在制品积压造成的资金…...

Windows 11下Keil5 MDK与C51共存安装全攻略(附ST-Link驱动避坑指南)

Windows 11下Keil5 MDK与C51共存安装全攻略&#xff08;附ST-Link驱动避坑指南&#xff09; 在嵌入式开发领域&#xff0c;Keil作为经典开发工具链&#xff0c;其MDK&#xff08;Microcontroller Development Kit&#xff09;和C51版本分别服务于ARM架构和8051架构单片机开发。…...

集团型企业BI试点,为什么一定要先做多域资源隔离?

艾瑞咨询《2025年中国BI市场报告》显示&#xff0c;超7成集团型企业的首次BI试点项目因跨业务单元权限冲突、数据口径混乱延期或终止&#xff08;统计样本覆盖120家年营收超50亿的国内集团企业&#xff0c;统计窗口为2022-2024年试点项目全生命周期&#xff09;。这个数据和大部…...

Windows平台用CMake+VS2019编译NLopt的完整流程(附环境变量配置)

Windows平台用CMakeVS2019编译NLopt的完整流程&#xff08;附环境变量配置&#xff09; 在科学计算和优化算法开发领域&#xff0c;NLopt作为一个功能强大的开源库&#xff0c;提供了多种非线性优化算法的实现。对于Windows平台的C开发者而言&#xff0c;掌握从源码构建NLopt的…...

用快马AI一键生成数据库管理原型,告别navicat手工建表写接口

用快马AI一键生成数据库管理原型&#xff0c;告别navicat手工建表写接口 最近在开发一个员工信息管理系统时&#xff0c;我深刻体会到传统数据库管理工具的局限性。虽然navicat这类工具能帮我们可视化操作数据库&#xff0c;但每次新建项目都要手动建表、写接口&#xff0c;重…...

3个实战场景×5个核心技巧:Umi-OCR本地化部署与效率提升完全指南

3个实战场景5个核心技巧&#xff1a;Umi-OCR本地化部署与效率提升完全指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置…...

Go Context 取消信号传播机制剖析

Go Context 取消信号传播机制剖析 在并发编程中&#xff0c;如何优雅地控制协程的生命周期是一个关键问题。Go语言通过Context机制提供了一种统一的取消信号传播方式&#xff0c;使得跨协程、跨层级的任务取消变得简单高效。本文将深入剖析Context的取消信号传播机制&#xff…...

106. 如何禁用牧场主日志的注释收集

Environment 环境 SUSE Rancher Prime - All versions SUSE Rancher Prime - 所有版本 Rancher-logging-105.3.x Procedure 程序 There could be situations where users might want to disable annotation collection with rancher-logging in order to reduce the amount o…...

如何三步搞定iOS微信聊天记录完整导出:隐私保护与数据备份终极指南

如何三步搞定iOS微信聊天记录完整导出&#xff1a;隐私保护与数据备份终极指南 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 还在为无法永久保存重要微信对话而烦恼吗&…...

快手直播推流码获取新方法:个人用户如何绕过限制使用OBS推流

1. 快手直播推流码获取现状解析 去年快手平台对个人用户关闭云直播功能后&#xff0c;很多主播突然发现没法用OBS这类专业推流工具了。这事儿确实挺让人头疼的&#xff0c;毕竟用OBS推流能实现多场景切换、添加专业特效&#xff0c;直播效果直接上几个档次。我实测发现&#xf…...