opencv009 滤波器01(卷积)

news2024/11/16 13:57:48

图像卷积操作(convolution),或称为核操作(kernel),是进行图像处理的一种常用手段,

图像卷积操作的目的是利用像素点和其邻域像素之前的空间关系,通过加权求和的操作,实现模糊(blurring),锐化(sharpening),边缘检测(edge detection)等功能。

期末考试结束!又开始学习opencv啦

1、什么是图片卷积

图像卷积 就是 卷积核在图像上按行滑动遍历像素时不断地相乘求和的过程

2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3x3或者5x5。而且,对于滤波器,也有一定的规则要求:

1)滤波器的大小应该是奇数,例如3x3,5x5或者7x7。(原因后面会提到)

2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

步长

步长就是卷积核在图像上移动的步幅,充分扫描图片,步长一般为1

下例步长为2(不太常见)

padding

上面的例子中发现,卷积操作后图片的长宽会变小,如果要保持图片大小不变,我们需要在图片的周围填充0,padding指的是填充0的圈数 

可以通过公式计算出需要填充的0的圈数

右下角的公式是P=(F-1)/2

(自动认为步长为0哈)

卷积核的大小

 滤波器的大小应该是奇数。

  • 这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。
  • 根据上面的padding公式,如果保持图片大小不变,采用偶数卷积核的话,比如4*4,将会出现填充1.5圈0的情况
  • 有中心,指出滤波器的位置,即opencv卷积中的锚点

卷积案例

函数 

filter2D(src, ddepth, kernel[, dst[,anchor[,delta[,borderType]]]])
  • ddepth是卷积之后的位深,即卷积之后图片的位深,即卷积之后图片的数据类型,一般设为-1,表示和原图类型一致 
  • kernel是卷积核大小,用元组或者ndarray表示,要求数据类型必须是float型
  • anchor锚点,即卷积核的中心点,是可选参数,默认值是(-1,-1)
  • delta 可选参数,表示卷积之后额外加一个值,相当于线性方程中的偏差,默认是0
  • borderType边界类型,一般不设

 模糊

 实例: 

import cv2
import numpy as np
img = cv2.imread("F:\est01\e3.jpg")
kernel = np.ones((5, 5), np.float32)/25
# 卷积操作
dst = cv2.filter2D(img, -1, kernel)
cv2.imshow('img', np.hstack((img, dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()

其他函数说明:

1、np.ones()函数

返回给定形状和数据类型的新数组,其中元素的值设置为1。此函数与numpy zeros()函数非常相似。 

np.ones(shape, dtype=None, order='C')
  • shape:一个整数类型或者一个整数元组,用于定义数组的大小。如果仅指定一个整数类型变量,则返回一维数组。如果指定的是整数元组,则返回给定形状的数组。
  • dtype:可选参数,默认值为float。用于指定数组的数据类型。
  • order:指定内存重以行优先(‘C’)还是列优先(‘F’)顺序存储多维数组。
2、拼接数组

np.vstack():在竖直方向上堆叠

np.hstack():在水平方向上平铺

 就是相当于两张图片组合到一块

 结果:

np.ones((5, 5), np.float32)/25

结合上面的原理,/25相当于取平均值,所以就是模糊的效果了 

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

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

相关文章

【服务器】Xshell与Xftp软件的使用指南

目录 【Xshell软件】 1.1 Xshell软件的功能 1.2 Xshell软件的使用 【Xftp软件】 2.1 Xftp软件的功能 2.2 Xftp软件的使用 可替代产品【FinalShell】 3.1 FinalShell软件的使用 3.2 FinalShell连接服务器失败解决方法 可替代产品【FileZilla】

VSCode无法下载插件,提示 Error while fetching extensions : XHR failed

解决方案: 打开vscode,依次点击File->Preferences->settings,中文就是文件->首选项->设置,打开如下图: 我们去搜索:Proxy , 然后回车 最重要的一步:将Http Prox…

关于 open ai,你了解多少?

OpenAI 的历史 第一阶段:2015-2018 年 2015 年,埃隆马斯克、山姆阿尔特曼、彼得蒂尔和杰西卡利文斯顿联合创立了 OpenAI。OpenAI 的目标是开发安全、有益的 AGI,并确保其造福全人类。在这一阶段,OpenAI 主要专注于基础研究&…

微信公众号怎么申请超过2个

一般可以申请多少个公众号?目前公众号申请数量的规定是从2018年底开始实施的,至今没有变化。规定如下:1、个人可以申请1个个人主体的公众号;2、企业(有限公司)可以申请2个公众号;3、个体户可以申…

中仕教育:2024年国考面试题型有哪些?

国考面试是选拔公务员的重要环节,通常涉及以下几个方面: 1. 自我介绍:考官通常会要求考生做一个简短的自我介绍。内容可以包括自己的基本情况、学历、工作经历等。 2. 专业知识:根据应聘者所应聘的职位和部门的不同,…

猛玛LARK M1无线麦克风采用 思远半导体 其实就是蓝牙话筒

自上世纪无线电技术开始发展起来,到了几十年后的今天,无线通讯技术已经成熟,开始追求更好的音质以及用户使用体验,优秀的产品也如雨后春笋般的出现,技术革新,极致音质,竞争也越来越激烈。这时候…

VC++中使用OpenCV进行人脸检测

VC中使用OpenCV进行人脸检测 对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序, objectDetection.py代码如下: from __future__ import p…

【架构师视角系列】Apollo配置中心之Client端(二)

原创文章,转载请标注。https://blog.csdn.net/leeboyce/article/details/135733075 文章目录 声明配置中心系列文章一、客户端架构1、Config Service职责(1)配置管理(2)配置发布(3)配置读取 2、…

【Linux】Linux开发工具 - vim的基本操作

IDE例子 Linux编辑器-vim使用 vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行&#xff…

暴力破解常见的服务器

目录 使用 pydictor 生成自己的字典工具liunx下载使用常用的参数说明插件型字典 (可自己根据 API 文档开发) 使用 hydra 工具在线破解系统用户密码使用 hydra 破解 windows 7 远程桌面密码使用 hydra 工具破解 ssh 服务 root 用户密码 使用 Medusa 工具在线破解medusa参数说明M…

公网环境调试本地配置的Java支付宝沙箱环境模拟支付场景

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

JVM知识总结

1.概述 JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件,作用是为了支持跨平台特性。 功能: 装载字节码,解释/编译为机器码 管理数据存储和垃圾回收 优化热点代码提升效率 …

AI技术图像编辑 Luminar Neo

Luminar Neo是一款先进的AI照片编辑软件,旨在简化和增强照片编辑过程。它适用于macOS和Windows,提供独立的应用程序以及用于集成到现有工作流程的插件。Luminar Neo的主要特点包括AI天空替换、Accent AI、氛围AI以及20多种独特的照片效果。无论是风景摄影…

Qt事件处理,提升组件类

1.相关说明 1.提升组件QLabel的类&#xff0c;以实现双击功能 2.监控键盘事件&#xff0c;实现上下左右移动 3.鼠标点击获取坐标 2.相关界面 3.相关代码和操作 自定义类TMyLabel&#xff0c;父类为QLabel tmylabel.h #ifndef TMYLABEL_H #define TMYLABEL_H #include <QL…

图像处理中,采用极线约束准则来约束特征点匹配搜索空间,理论上在极线上进行搜索。这里的极线是什么线,怎么定义的?基本矩阵F和本质矩阵E有什么区别?

问题描述&#xff1a;图像处理中&#xff0c;采用极线约束准则来约束特征点匹配搜索空间&#xff0c;理论上在极线上进行搜索。这里的极线是什么线&#xff0c;怎么定义的&#xff1f;基本矩阵F和本质矩阵E有什么区别&#xff1f; 问题1解答&#xff1a; 极线是通过极线几何学…

飞书+ChatGPT+cpolar搭建企业智能AI助手并实现无公网ip远程访问

文章目录 推荐 前言环境列表1.飞书设置2.克隆feishu-chatgpt项目3.配置config.yaml文件4.运行feishu-chatgpt项目5.安装cpolar内网穿透6.固定公网地址7.机器人权限配置8.创建版本9.创建测试企业10. 机器人测试 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂…

无线音频设备市场调研:预计2029年将达到404亿美元

无线音频&#xff0c;是指将音频型号以无线电波作为载体&#xff0c;从一个设备传输到另外一个设备&#xff0c;实现音频的无线传输。 最常见的是蓝牙传输&#xff0c;传输频率2.4G&#xff0c;蓝牙音箱、蓝牙耳机都属于蓝牙音频传输&#xff0c;蓝牙音频传输是双向传输&#x…

主板电路学习; 华硕ASUS K43SD笔记本安装win7X64(ventoy)

记录 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 1. MBR样式常规安装win7X64Sp1 (华硕 K43SD 安装 win7X64 ) 老爷机 白色 华硕 K43SD 笔记本 安装 win7X64 &#xff08;常规安装&#xff09; 设置&#xff1a; 禁用UEFI 启用AHCI ventoy制作MBR&#xff08;非UEFI&#…

性能优化-OpenCL kernel 开发

「发表于知乎专栏《移动端算法优化》」 本文主要介绍OpenCL的 Kernel&#xff0c;包括代码的实例以及使用注意的详解。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;高性能&#xff08;HPC&#xff09;开发基础教…

光的干涉与衍射

引用内容来自曹天元的《上帝掷骰子吗&#xff1f;&#xff1a;量子物理史话》&#xff0c;其余内容来自课程。 牛顿光的色散实验 色散实验是牛顿所做的有名的实验之一。实验的情景在一些科普读物里被渲染得令人印象深刻&#xff1a;炎热难忍的夏天&#xff0c;牛顿却戴着厚重的…