差分金字塔

news/2024/9/19 7:57:27

1、原理

DOG金字塔的每1组第i层是由高斯金字塔的每1组第i+1层每1组第i层得到的。以此类推,逐组逐层生成每一个差分图像,所有差分图像构成差分金字塔;每一组在层数上,DOG金字塔比高斯金字塔少一层。

DOG金字塔的构建可以用下图描述:

2、 源码实现

//差分金字塔
//如果直接imshow差分图会显示不出人眼看到的图像,只有对这些DOG图像进行归一化,
//可以很明显的看到差分图像所蕴含的特征,并且有一些特征是在不同模糊程度、不同
//尺度下都存在的,这些特征正是Sift所要提取的“稳定”特征
void siftLou::DogPyramid(const vector<Mat>& gauss_pyr, vector<Mat>& dog_pyr, int octaves)
{int intervals = INTERVALS;for (int o = 0; o < octaves; o++){for (int i = 1; i < intervals + 3; i++){Mat mat;mat=Sub(gauss_pyr[o * (intervals + 3) + i], gauss_pyr[o * (intervals + 3) + i - 1]);dog_pyr.push_back(mat);}}
}

下图是差分金字塔第一组第0/1层的实际显示效果,其实这里边包含了大量特征点信息,但是我们人眼已经分辨不出来了。

所以想要显示出人眼识别的图像,就要对DOG图像进行归一化,下图是归一化的图:

 3、归一化原理

void cv::normalize(InputArry src,InputOutputArray dst,min,max,int norm_type=NORM_L2,int dtype=-1,InputArray mark=noArry())函数作用:
归一化数据。该函数分为范围归一化与数据值归一化。(Normalizes the norm or value range of an array.)其实范围归一化和数值归一化可以归为一类,一般来说数值归一化是指将数值归一到[0,1]区间上,而范围归一化则指将数值归一到[a,b]上,a,b为任意值。由此看出,数值归一化是范围归一化的特例,包含在范围归一化中。参数说明:
src 输入数组;
dst 输出数组,数组的大小和原数组一致;
min  用来规范值或者规范范围,并且是下限;
max  只用来规范范围并且是上限,因此只在NORM_MINMAX中起作用;
norm_type 归一化选择的数学公式类型;
dtype 当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输如不同,不同 的地方由dtype决定;
mark 掩码。选择感兴趣区域,选定后只能对该区域进行操作。

对数组的归一化的公式为:

\frac{(max-min)}{max(M)}*max(M)

 上式表示:设置的上限(max)与下限(min)的差除以数组中的最大值为公因子;

数组中归一化后的每一个值=归一化前的每一个值*公因子

示例:

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<vector>
#include<Eigen/Core>
#include <corecrt_math_defines.h>
using namespace std;
using namespace cv;int main()
{//生成一个3*4的矩阵Mat M = Mat::eye(3,4,CV_8UC1);M.at<uchar>(2, 3) = 9;Mat m;normalize(M, m, 0, 255, NORM_MINMAX);cout <<"归一化前数组:\n" <<M << endl;cout <<"归一化后数组:\n" << m << endl;cv::waitKey(0);return 0;
}

 

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

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

相关文章

毕业设计So Easy:珠穆朗玛FM音频电台APP

目录 1、项目背景 2、系统介绍 2.1、系统概述 2.2、关键技术 2.3、环境配置 3、系统结构设计 3.1、播放器状态结构图 3.2、登录流程结构图 4、系统模块设计 5、系统总体架构 6、接口描述 很多计算机专业大学生经常和我交流&#xff1a;毕业设计没思路、不会做、论文…

机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义

关于特征值、特征向量的讲解有很多的教程&#xff0c;对于这些枯燥的数学基础怎么运用到自己的实际计算机视觉实验中&#xff0c;是一项很重要的任务。算法的底层其实就是数学公式的各种结合与推导&#xff0c;有时间不是我们不能很好的去理解这些算法基础&#xff0c;而是没有…

JAVA电影购票系统

一、功能描述 电影购票系统简介、项目功能演示 日志框架搭建、系统角色分析 首页设计、登录、商家界面、用户界面实现 商家-详情页设计、影片上架、退出 商家-影片下架、影片修改 用户-展示全部影片 用户-购票功能 用户-评分功能 用户-评分降序展示 用户-根据片名查询全部影片信…

和12岁小同志搞创客开发:如何驱动各类型传感器?

目录 1、数字量输出类型传感器 2、数字量输入类型传感器 3、模拟量电压类型传感器 4、模拟量电流类型传感器 5、协议类型传感器 机缘巧合在网上认识一位12岁小同志&#xff0c;从零开始系统辅导其创客开发思维和技巧。 项目专栏&#xff1a;https://blog.csdn.net/m0_3810…

机器学习中的数学基础:(3)主成分分析(PCA)及其应用

主成分分析主要用于数据的降维&#xff1f;什么是降维&#xff1f; 比如说有如下的房价数据&#xff1a; 这种一维数据可以直接放在实数轴上&#xff1a; 房价样本数据用X表示&#xff0c;则以上数据的均值为&#xff1a; 以均值为原点&#xff1a; 将上述表格以均值&#xf…

opencv特征匹配中match与KnnMatch返回数据类型

1、match # 初始化 BFMatcherbf cv.BFMatcher()# 对描述子进行匹配# des1/des2分别是两幅图片特征点的特征向量matches bf.match(des1, des2)# 打印match返回数据的类型print(type(matches[0])) match匹配的返回结果是DMatch类型。 DMatch数据结构包含三个非常重要的数据分别…

和12岁小同志搞创客开发:Mind+编程软件简介、安装及使用

机缘巧合在网上认识一位12岁小同志&#xff0c;从零开始系统辅导其创客开发思维和技巧。 ​项目专栏&#xff1a;https://blog.csdn.net/m0_38106923/category_11097422.html 本期本打算写一篇关于Mind编程软件安装和基础操作的详细博文&#xff0c;奈何官网说明文档非常详实…

毕业设计So Easy:基于Java Web学生选课系统

目录 1、选题背景 2、选课系统分析与设计 2.1、系统功能说明 2.2、总体功能结构 很多计算机专业大学生经常和我交流&#xff1a;毕业设计没思路、不会做、论文不会写、太难了...... 针对这些问题&#xff0c;决定分享一些软、硬件项目的设计思路和实施方法&#xff0c;希望…