opencv 图像金字塔

将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低
图像金字塔有两种:高斯金字塔和拉普拉斯金字塔。
高斯金字塔用于下采样,从下到上,逐层降采样。
高斯金字塔(下采样)实现需两步:
(1)对当前层进行高斯模糊
(2)删除当前层的偶数行和偶数列。
下采样会使得图片质量下降,就是图片缩小,使用PryDown函数。
上采样使用PryUp函数
上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。

高斯不同(Difference of Gaussian–DOG)
同一图像在不同参数下做奥斯模糊后的结果相减。通常在灰度图像增强和角点检测中应用。
以下实例中,做了高斯不同之后,看得不太清楚,因此又做了一个归一化。

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main(int argc,char** argv) {
	Mat src, dst;
	src = imread("d:/02.png");
	if (src.empty()) {
		cout << "not load..." << endl;
		return -1;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	namedWindow("output", WINDOW_AUTOSIZE);
	imshow("input", src);
	//pyrUp(src, dst, Size(src.cols * 2, src.rows * 2));//上采样
	pyrDown(src, dst, Size(src.cols / 2, src.rows / 2));//下采样
	imshow("output", dst);

	//高斯模糊,高斯不同DOG
	Mat gray_src, m1, m2,dogimg;
	cvtColor(src, gray_src, CV_BGR2GRAY);
	GaussianBlur(gray_src, m1, Size(3, 3), 0, 0);//高斯模糊
	GaussianBlur(m1, m2, Size(3, 3), 0, 0);//再次高斯模糊
	subtract(m1, m2, dogimg, Mat());//两幅图相减
	normalize(dogimg, dogimg, 255, 0, NORM_MINMAX);//归一化
	imshow("dog", dogimg);


	waitKey(0);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值