差分金字塔

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;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鹿( ﹡ˆoˆ﹡ )

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值