【OpenCV学习】第12课:特征提取(高斯不同)

news2024/11/16 0:31:01

仅自学做笔记用,后续有错误会更改

理论

  • 定义:就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像,称为高斯不同(DOG)
  • 高斯不同是图像的内在特征, 在灰度图像增强丶角点检测中经常用到

相关API
normalize(Mat src,Mat dst, double alpha = 1, double beta = 0, intnorm_type = NORM_L2, int dtype = -1, InputArray mask = noArray());

  • src:输入图像/数组
  • dst:输出图像/数组
  • alpha:范围的最小值
  • beta:范围的最大值(不用于范数归一化)
  • intnorm_type:归一操作的类型,有如下三种:
    NORM_MINMAX:将数组的数值归一化到[alpha,beta]内,常用。
    NORM_L1:归一化数组的L1-范数(绝对值的和)
    NORM_L2:归一化数组的(欧几里德)L2-范数
  • dtype:为负数时,输出数组的类型与输入数组相同,否则只是通道数相同,类型默认为:type = CV_MAT_DEPTH
  • mask:指定操作的区域/空间

代码示例

Mat src;
src = imread(...);
//显示原图
char INPUT_WIN[] = "input image";
namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);
imshow(INPUT_WIN,src);
// 显示提取的特征图
Mat gray_src, g1, g2, dogImg;
//先转为灰度图
cvtColor(src, gray_src,CV_BGR2GRAY);
// 第1次高斯模糊
GaussianBlur(gray_src, g1, Size(3, 3), 0, 0);
// 第2次高斯模糊
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
//g1 减去 g2
subtract(g1, g2, dogImg, Mat());
namedWindow("DOG Image",CV_WINDOW_AUTOSIZE);
imshow("DOG Image", dogImg);

效果截图:
原图:
在这里插入图片描述

特征提取图:
在这里插入图片描述
看不太清,,,原因是高斯模糊的两个差值很小,所以反映到灰度图上像素值也就很低,这个时候就需要我们用到上边提到的API了, normalize进行归一化显示(我们是线性提亮嘛)
把代码稍微改一下:

Mat src;
src = imread(...);
//显示原图
char INPUT_WIN[] = "input image";
namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);
imshow(INPUT_WIN,src);
// 显示提取的特征图
Mat gray_src, g1, g2, dogImg;
//先转为灰度图
cvtColor(src, gray_src,CV_BGR2GRAY);
// 第1次高斯模糊
GaussianBlur(gray_src, g1, Size(3, 3), 0, 0);
// 第2次高斯模糊
GaussianBlur(g1, g2, Size(3, 3), 0, 0);
//g1 减去 g2, 正常也就是低 减去 高,  用高 减去 低的话, 线条会更明显
subtract(g1, g2, dogImg, Mat());
//归一化显示
normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);
namedWindow("DOG Image",CV_WINDOW_AUTOSIZE);
imshow("DOG Image", dogImg);

再来看效果:
在这里插入图片描述

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

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

相关文章

【MySQL】深入分析 锁机制(一)行锁 加锁规则 之 等值查询

文章目录前言一、共享锁(S)和排它锁(X)二、行锁的3种算法Record LockGap LockNext-key Lock三、加锁规则 之 等值查询分析数据准备3.1 聚集索引有匹配索引无匹配索引3.2 唯一索引有匹配索引无匹配索引3.3 普通索引有匹配索引无匹配…

游戏蓝牙耳机哪个好用?2022超低延迟游戏蓝牙耳机推荐

随着蓝牙耳机的快速发展,使用蓝牙耳机玩游戏的人也越来越多。那么,游戏蓝牙耳机哪个好用呢?当然是延迟越低的蓝牙耳机玩游戏的体验感会越好,我们都知道蓝牙耳机相对于有线耳机来说,或多或少会存在延迟。下面&#xff0…

一文讲解linux SMP Boot

说明: Kernel版本:4.14ARM64处理器,Contex-A53,双核使用工具:Source Insight 3.5, Visio 1. 介绍 SMP, Symmetric Multi-Processor,相对于单核处理器来说,SMP实现了真正严格意义上…

写出这个数

目录 1002:写出这个数 输入格式: 输出格式: 输入样例: 输出样例: 代码长度限制 时间限制 内存限制 思路: 1.求和 1.2代码: 2.找到sum的每一位 2.2代码: 3.汉语拼音输出数字 3.2代码: 完整代码: 时间复杂度: 总结: 题…

通过MQ进行系统对接

消息要有来源系统,消息类型,收到消息的应用,通过url取数据。做一个开关,用户可以自己选择方案一和方案二。 方案一:A公司的消息中存json,供应链直接获取json 方案二:通过A公司消息中的UrL&…

Windows系统iis 和多界面怎么安装

Windows系统iis 和多界面怎么安装 服务器拿到手都是有iis(iis:用于搭建网站)和多界面(多界面:用于同时多人操作服务器) 但也有服务器是没有安装iis和多界面的,遇到这样的情况就手足无措了。 今…

实训任务5:ZooKeeper节点操作

文章目录一、实训目的二、实训要求三、实训任务四、完成任务(一)准备工作(二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建股票价格类(1)创建init()方法(2)创…

【python脚本】ICer的脚本入门训练——find_key

我们的目标是┏ (゜ω゜)☞芯片前端全栈工程师~喵! 前言 往期回顾: 【python脚本】ICer的脚本入门训练——svn_back_尼德兰的喵的博客-CSDN博客_svn back文件 【python脚本】ICer的脚本入门训练——gen_tc_尼德兰的喵的博客-CSDN博客 查找关键词这一类脚…

TFT-LCD LVGL与硬件交互

TFT-LCD LVGL与硬件交互 屏幕能正常显示LVGL官方例程,说明LVGL移植成功了,本次实验使用屏幕通过LVGL控制开发板硬件 实现效果 用LVGL画两个按钮和一个标签,一个按钮控制蜂鸣器,另一个按钮控制继电器,标签显示“TFT-…

基于intel机器人控制器,支持slam,激光雷达和AI加速

9th/8th gen Intel Core™ i7/i5/i3 & Celeron.XM-5149 是专为机器人行业设计的工业计算机产品,高性能的处理能力加速 AI 学习速度,多种类 I/0 可接摄像头、雷达等丰富外设。在设备密闭舱体内,整机可以高温稳定运行不降速。 产品规格 芯…

flink不同部署方式-1.14

1. 版本说明 本文档内容基于 flink-1.14.x,其他版本的整理,请查看本人博客的 flink 专栏其他文章。 2. 概述 Flink 是一种通用性框架,支持多种不同的部署方式。 本章简要介绍 Flink 集群的组成部分、用途和可用实现。如果你只是想在本地启…

最全LaTeX 数学公式、字母符号、上下标、列表矩阵、公式注释、分数二进制数、分割字符、逻辑集合论、否定符号等

最全LaTeX 数学公式、字母符号、上下标、列表矩阵、公式注释、分数二进制数、分割字符、逻辑集合论、否定符号等 1. 公式示例 E(T)∑(p,q)ϵκ∣∣p−Tq∣∣2E(T)\sum_{(p,q)\epsilon\kappa} \mid\mid p-T_q \mid \mid ^2 E(T)(p,q)ϵκ∑​∣∣p−Tq​∣∣2 E(T)∑(p,q)ϵκ…

高数 |【23数一 李林六套卷】卷四 自用思路 及 知识点 整理

23数一 李林六套卷 —— 自用思路 及 知识点 整理 ——【卷一】 以下均为个人复盘。 T1:高阶无穷小 T6:傅里叶级数 法一:直接套傅里叶展开公式,死算 法二:用技巧。取一个x,看最后结果趋近于这个数!是趋近于!不是直接等于 直接等于不可以。再来看下一个。

Java--IO流详解

目录 一、IO流的介绍 二、IO流的具体详解 (1)字节流 1:FileOutputStream 2:FileInputStream (2)字符流 1:解码编码 2:FileReader 3:FileWriter 三、IO流的使用 …

MATLB|基于改进教学的优化算法(TLSBO)的最优功率优化

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 📝目前更新:🌟🌟🌟电力系统相关知识,期刊论文&…

使用 Zabbix 监控Oracle

zabbix ODBC 数据库监控 ODBC 是 C 语言开发的、用于访问数据库的中间件接口.zabbix 支持查询任何 ODBC 支持的数据库.zabbix 经过调用 ODBC 来获取数据库的数据以及数据库状态等等信息 一、安装unixODBC 官方主页:http://www.unixodbc.org/download.html 使用阿里巴巴提供的…

线性方程组迭代法

雅可比迭代法与高斯-塞德尔迭代法 雅可比迭代法 例一 {10x1−x2−2x37.2−x110x2−2x38.3−x1−x25x34.2\left\{\begin{array}{l} 10 x_{1}-x_{2}-2 x_{3}7.2 \\ -x_{1}10 x_{2}-2 x_{3}8.3 \\ -x_{1}-x_{2}5 x_{3}4.2 \end{array}\right. ⎩⎨⎧​10x1​−x2​−2x3​7.2−x…

Css-Grid布局(强大)

前言 我们前面讲的Flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看做是一维布局,Grid布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目所在"的单元格&…

从手动测试到自动化测试老司机,只用了3个月,我的薪资翻了一倍

虽然笔者是一个测试老人了,但是基本上所有的测试经验都停留在手工测试方面,对于自动化测试方面的实战经验少之又少,可以说,从这个角度来说,就像生活在原始社会,一切靠双手解决问题。(别想歪了&a…

【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Introduction

文章目录一、深度学习的概念二、函数的类型三、深度学习的步骤3.1 定义一个参数未知的函数表达式3.2 定义一个损失函数3.3 采用梯度下降法求解使得函数表达式的Loss最小的参数四、视频播放量预测案例4.1 案例介绍和思路分析4.2 线性函数表达式14.3 改进1:使用前一段…