OpenCV 图像金字塔的实现示例

 更新时间:2021年06月30日 08:36:30   作者:qq_42344132  
本文将结合实例代码,介绍OpenCV 图像金字塔,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

本文主要介绍了OpenCV 图像金字塔,具有一定的参考价值,感兴趣的可以了解一下

高斯金字塔reduce void cv::pyrDown()
expand void cv::pyrUp()

1.高斯金字塔

图像金字塔是对一张输入图像先模糊再下采样为原来的高、宽的1/2,不断重复模糊与下采样的过程就得到了不同分辨率的输出图像,叠加在一起就形成了图像金字塔

高斯金字塔便是先进行高斯模糊,再进行reduce和expand操作。高斯金字塔中的较高级别(低分辨率)是通过删除较低级别(较高分辨率)图像中的连续行和列而形成的。然后,较高级别的每个像素由基础级别的5个像素的贡献与高斯权重形成。通过这样做,M×N图像变成M/2×N/2图像。因此面积减少到原始面积的四分之一。它称为Octave。

cv::pryDown()

C++ void cv::pyrDown(cv::InputArray src, cv::OutputArray dst, 
                     const cv::Size &dstsize = cv::Size(), int borderType = 4)

cv::pryUp()

C++ void cv::pyrUp(cv::InputArray src, cv::OutputArray dst, 
                   const cv::Size &dstsize = cv::Size(), int borderType = 4)

2.拉普拉斯金字塔

在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。首先要进行金字塔的reduce操作,再expand操作,最后相减得到拉普拉斯金字塔。 L=G-expand(reduce(G))

代码1:

#include<opencv2/opencv.hpp>
#include<iostream>
#include<imgproc.hpp>
using namespace cv;
using namespace std;
 
int main(int argc, char** argv) {
	Mat image = imread("C:/Users/YY/Pictures/Saved Pictures/1.jpg");
	Mat out;
	imshow("原图", image);
	pyrDown(image, out);
	imshow("降采样", out);
	pyrUp(out, out);
	imshow("上采样", out);
	subtract(image, out, out);
	imshow("拉普拉斯金字塔", out);
	waitKey(0);
	destroyAllWindows();
	return 0;
}

到此这篇关于OpenCV 图像金字塔的实现示例的文章就介绍到这了,更多相关OpenCV 图像金字塔内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C/C++字节序的深入理解

    C/C++字节序的深入理解

    本文主要介绍了C/C++字节序的深入理解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Matlab实现绘制高阶版本韦恩图(upset图)

    Matlab实现绘制高阶版本韦恩图(upset图)

    韦恩图随着阶数升高会越来越复杂,当阶数达到7或者以上时几乎没办法绘制,但是使用upset图却可以比较轻易的绘制。本文就来用Matlab实现绘制upset图,需要的可以参考一下
    2023-01-01
  • C++图论之Bellman-Ford算法和SPFA算法的实现

    C++图论之Bellman-Ford算法和SPFA算法的实现

    贝尔曼-福特算法(Bellman-Ford)是由理查德·贝尔曼和莱斯特·福特创立的,求解单源最短路径问题的一种算法。SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径。本文将详解两个算法的实现,需要的可以参考一下
    2022-06-06
  • C++超详细实现二叉树的遍历

    C++超详细实现二叉树的遍历

    本章将会详细讲解二叉树遍历的四种方式,分别为前序遍历、中序遍历、后续遍历和层序遍历。在学习遍历之前,会先带大家回顾一下二叉树的基本概念
    2022-05-05
  • C语言排序之 堆排序

    C语言排序之 堆排序

    这篇文章主要介绍了C语言排序之堆排序,文章基于C语言的相关资料展开详细内容,具有一定的参考资料,需要的小伙伴可以参考一下
    2022-04-04
  • Opencv实现图像灰度线性变换

    Opencv实现图像灰度线性变换

    这篇文章主要为大家详细介绍了Opencv实现图像灰度线性变换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • C语言植物大战数据结构二叉树递归

    C语言植物大战数据结构二叉树递归

    这篇文章主要为大家介绍了C语言植物大战数据结构二叉树递归,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • C语言判断大小端的两种方法

    C语言判断大小端的两种方法

    大小端的问题在很多面试笔试中都会遇到,本文主要介绍了C语言判断大小端的两种方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • C语言字符串原地压缩实现方法

    C语言字符串原地压缩实现方法

    这篇文章主要介绍了C语言字符串原地压缩实现方法,包含了字符串的遍历与转换等操作,是很实用的操作技巧,需要的朋友可以参考下
    2014-09-09
  • 手把手教你用C语言实现三子棋

    手把手教你用C语言实现三子棋

    三子棋是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。这篇文章就教你如何用C语言实现三子棋的功能
    2021-08-08

最新评论