OpenCv-高斯金字塔及DOG

@title

1.高斯金字塔

高斯金字塔的生成过程分为两步:
 1)对当前层进行高斯模糊。 
 2) 删除当前层的偶数行与列。
 然后即可得到上一层的图像,上一层只有下一层的1/4大小,而且是逐层得到的,不能隔层生成。

2. DOG高斯不同

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

其中:
 1)高斯正态分布函数定义:
正态分布函数
2) 高斯滤波:对一幅图像f(x,y)进行不同参数的高斯滤波计算
高斯滤波
3)滤波结果图象相减,得到DOG目标图象
在这里插入图片描述
DOG

3. 程序实验

包含高斯上采样,降采样,DOG

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;

int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("2.jpg");
	if (!src.data) {
		printf("could not load image...\n");
		return -1;
	}
    //创建显示窗口
	char INPUT_WIN[] = "input image";
	char OUTPUT_WIN[] = "result image";
	namedWindow(INPUT_WIN, CV_WINDOW_AUTOSIZE);
	imshow(INPUT_WIN, src);
	
	//上采样
	/*pyrUp(src, dst, Size(src.cols*2, src.rows*2));
	imshow(OUTPUT_WIN, dst);*/

	//降采样
	Mat s_down;
	pyrDown(src,s_down, Size(src.cols/2, src.rows/2));
	imshow("sample_down", s_down);

	//DOG----高斯不同
	Mat gray_src, g1, g2, dogImg;
	cvtColor(s_down, gray_src, CV_BGR2GRAY);
    //两次高斯模糊
	GaussianBlur(gray_src,g1, Size(3,3), 0, 0 );
	GaussianBlur(g1, g2 ,Size(3,3), 0);
	subtract(g1, g2, dogImg, Mat());   //差分图的灰度值比较小,图比较暗。

	//归一化显示
	normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);  //归一化,放到0-255显示。
	imshow("DOG_img", dogImg);

	waitKey(0);
	return 0;
}

郝奇-DOG

4 DOG特征点检测

也常称DOG算子,DOG角点检测,DOG特征点检测。
DOG角点
1)原图加上3个不同参数下的高斯滤波图,相减得到DOG差分图。
2) 求中间图片每个像素与该像素同尺度的8个相邻点以及上下相邻尺度对应的9*2共26个点的极值。一个点如果在DOG空间本层以及上下两层的26个领域中是最大值和最小值时,就认为该点是图像在该尺度下的一个特征点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值