opencv 关于 卷积核(掩膜) 的通俗理解

1 opencv 坐标原点是左上角 x向右延伸 y向下延伸

图像的坐标原点位于左上角,x 轴向右延伸,y 轴向下延伸。这种坐标系与大多数计算机图像处理库(如 PIL、MATLAB 等)一致

例如 给定像素坐标(x,y)  则周围点表示为:

左上方的像素: (x-1, y-1)
上方的像素: (x, y-1)
右上方的像素: (x+1, y-1)
左侧的像素: (x-1, y)
右侧的像素: (x+1, y)
左下方的像素: (x-1, y+1)
下方的像素: (x, y+1)
右下方的像素: (x+1, y+1)

2 对于卷积核操作 中间写8 那就是中间像素值*8 周围的写-1 周围像素*(-1) 最终加到一起计算出新的像素 赋给卷积后的点

例如 给定一个卷积核(通常称为滤波器),如下所示:

-1 -1 -1
-1  8 -1
-1 -1 -1

这个卷积核表示的操作是:将中心像素值乘以 8,然后减去它周围的每个像素值。具体步骤如下:

  1. 将中心像素的值乘以 8。
  2. 将周围八个像素的值分别乘以 -1。
  3. 将上述所有值相加,得到新的像素值。
合成后新公式就是:

O(x,y)=8*I(x,y)−I(x−1,y−1)−I(x−1,y)−I(x−1,y+1)−I(x,y−1)−I(x,y+1)−I(x+1,y−1)−I(x+1,y)−I(x+1,y+1) 

 3 对于边缘处理情况 可以用0填充 可以用边缘像素填充 可以用另一侧边缘像素填充 都是预定义宏

BORDER_CONSTANT BORDER_REFLECT BORDER_REPLICATE BORDER_WRAP

 例如(cpp):

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main() {// 创建一个示例图像(3x3矩阵)Mat image = (Mat_<uchar>(3, 3) << 1, 2, 3, 4, 5, 6, 7, 8, 9);// 定义卷积核(边缘检测或锐化)Mat kernel = (Mat_<float>(3, 3) << -1, -1, -1, -1,  8, -1, -1, -1, -1);// 创建用于存储结果的图像Mat result;// 使用不同的边缘填充方法进行卷积操作// 1. 零填充(BORDER_CONSTANT)filter2D(image, result, -1, kernel, Point(-1, -1), 0, BORDER_CONSTANT);cout << result << endl << endl;// 2. 镜像填充(BORDER_REFLECT)filter2D(image, result, -1, kernel, Point(-1, -1), 0, BORDER_REFLECT);cout << result << endl << endl;// 3. 重复边缘像素填充(BORDER_REPLICATE)filter2D(image, result, -1, kernel, Point(-1, -1), 0, BORDER_REPLICATE);cout << result << endl << endl;// 4. 环绕填充(BORDER_WRAP)filter2D(image, result, -1, kernel, Point(-1, -1), 0, BORDER_WRAP);cout << result << endl << endl;return 0;
}

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

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

相关文章

Android 调用OpenCV动态库

1、下载OpenCVMobile的文件,链接地址 2、OpenCV-android-sdk/sdk/native/libs/arm64-v8a/libopencv_java4.so拷贝处理放到libs里面 3、 OpenCV-android-sdk/sdk/native/jni/include 放到include文件夹下 4、Cmake修改 set(lib_DIR ${CMAKE_SOURCE_DIR}/libs) add_library(l…

Python操作MySQL实战

文章导读 本文用于巩固Pymysql操作MySQL与MySQL操作的知识点&#xff0c;实现一个简易的音乐播放器&#xff0c;拟实现的功能包括&#xff1a;用户登录&#xff0c;窗口显示&#xff0c;加载本地音乐&#xff0c;加入和删除播放列表&#xff0c;播放音乐。 点击此处获取参考源…

《异常检测——从经典算法到深度学习》28 UNRAVEL ANOMALIES:基于周期与趋势分解的时间序列异常检测端到端方法

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

【必会面试题】Redis 中的 zset数据结构

目录 Redis 中的 zset&#xff08;sorted set&#xff0c;有序集合&#xff09;数据结构在底层可以使用两种不同的实现&#xff1a;压缩列表&#xff08;ziplist&#xff09; 和 跳跃表&#xff08;skiplist&#xff09;。具体使用哪种结构取决于存储元素的数量和大小&#xff…

设计模式13——桥接模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 桥接模式&#xff08;Bridge&a…

冯喜运:5.27黄金短线看震荡,今日黄金原油走势分析

【黄金消息面分析】&#xff1a;黄金作为传统的避险资产&#xff0c;在经济不确定性中扮演着至关重要的角色。近期&#xff0c;国际黄金价格经历了显著的波动。从5月9日的低点2325.19美元/盎司反弹至2340美元/盎司以上&#xff0c;尽管金价曾一度触及2449.89美元/盎司的历史高点…

利用ESP32(Arduino IDE)向匿名上位机发送欧拉角

文章目录 一. 匿名上位机介绍二. 匿名协议说明1. 匿名协议官方说明文档2. 协议说明 三. 向匿名上位机发送数据(基于Arduino IDE的esp32)四. 运行效果 一. 匿名上位机介绍 匿名上位机官方介绍视频 匿名上位机官方下载 二. 匿名协议说明 1. 匿名协议官方说明文档 官方对于协…

现代 c++ 三:移动语义与右值引用

移动语义很简单&#xff0c;但它相关联的术语很复杂。本文尝试从历史的角度解释清楚这些乱七八糟的术语及其关联&#xff1a; 表达式 (expression)、类型&#xff08;type&#xff09;、值类别 (value categories)&#xff1b; 左值 (lvalue)、右值 (rvalue)、广义左值 (glval…

【Webpack】样式处理 - 样式预处理

样式预处理是在开发中会使用一些样式预编译语言&#xff0c;如scss,less等&#xff0c;在项目打包过程中再将这些语言转换为css&#xff0c;借助这些语言强大和便捷的特性&#xff0c;可以降低项目的开发和维护成本。 下面是目前最主流的两种预编译语言是如何配置的 sass和scs…

Flink 数据源

原理 在 Flink 中&#xff0c;数据源&#xff08;Source&#xff09;是其中一个核心组件&#xff0c;负责从各种来源读取数据供 Flink 程序处理。 Flink 的数据源类型丰富&#xff0c;涵盖了从简单测试到生产环境使用的各种场景。Kafka、Socket、文件和集合是 Flink 中最常见…

5.2 Go 参数传递

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【傻呱呱】VirtualHere共享局域网中的USB设备(使用Pavadan老毛子固件搭建篇)

前期准备 SSH工具&#xff08;FinalShell&#xff09;老毛子固件路由器一台 搭建VirtualHere服务端 进入VirtualHere官网下载对应处理器架构的包&#xff0c;我的是RT-N14U-GPIO路由器刷的老毛子固件&#xff0c;这种一般选择最后一个或者倒数第二个包&#xff0c;这里我选择…

Transformers集成SwanLab实现AI训练可视化监控

&#x1f917;HuggingFace Transformers Hugging Face 的 Transformers 是一个非常流行的开源库&#xff0c;它提供了大量预训练的模型&#xff0c;主要用于自然语言处理&#xff08;NLP&#xff09;任务。这个库的目标是使最新的模型能够易于使用&#xff0c;并支持多种框架&…

Topogun 3 for Mac——您的专业三维模型处理利器

Topogun 3 for Mac&#xff0c;无疑是三维模型处理领域的翘楚。该软件不仅功能全面&#xff0c;而且操作简便&#xff0c;能够满足您对于三维模型处理的各种需求。 导入高模、视图操作、新建拓扑层&#xff0c;一切都在您的掌控之中。Topogun 3强大的自动拓扑功能&#xff0c;…

小猪APP分发:一站式免费应用推广的理想平台

在日益拥挤的移动应用市场中&#xff0c;对于独立开发者和新兴应用而言&#xff0c;找到一个高效且成本效益高的分发渠道至关重要。这正是小猪APP分发平台www.appzhu.cn脱颖而出的原因&#xff0c;它不仅提供了一个全面的解决方案&#xff0c;帮助开发者免费推广他们的应用程序…

前端基础入门三大核心之JS篇:解锁「穷举法」算法的奥秘【含代码示例】

前端基础入门三大核心之JS篇&#xff1a;解锁「穷举法」算法的奥秘【含代码示例】 穷举法基本概念及其作用什么是穷举法&#xff1f;作用说明 穷举法实战演练示例1&#xff1a;找出1到100之间的所有质数示例2&#xff1a;经典的数独求解性能优化与安全考量 实际工作中的技巧遇到…

家政预约小程序06服务展示

目录 1 首页展示2 团购详情总结 在家政小程序中&#xff0c;最重要的信息就是各项服务的内容。顾客通过服务的信息&#xff0c;了解家政公司可以提供什么样的服务以及相关的收费。本篇我们介绍一下服务展示功能如何开发。 1 首页展示 在首页我们已经开发了活动展示、服务分类展…

月入25000,因何焦虑?

遇到一位铁粉经常给我点赞评论&#xff0c;没勾兑之前还以为他赋闲在家&#xff0c;没想到收入很高&#xff0c;要是放在5年前相比很多人都不会这么焦虑&#xff0c;那个时候大环境很好&#xff0c;随便跳个槽收入至少能增长30%。 这位铁粉从事java开发&#xff0c;目前就职于某…

C++ 程序的基本要素

一 标识符 程序中变量、类型、函数和标号的名称称标识符。 a,b,name,int,char,main,void等。 系统已有的标识符称为关键字。 常见关键字 using,namespace,void,return; int,float,double,char,bool,signed,unsignex, long,short,const,true,false,sizeof if,else,for,do,whil…

Ollama + (Anythingllm / Open WebUI / MaxKB)搭建本地大模型

个人体验MaxKB做知识库效果最好 一、Ollama 1、下载Ollama 地址&#xff1a;Download Ollama on macOS curl -fsSL https://ollama.com/install.sh | sh 2、下载指定的模型 地址&#xff1a;library # Llama3 ollama run llama3:8b # 这个模型可以将文本内容转换成向量数…