一.图像金字塔概念

我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔 。 一个图像金字塔是由一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。

金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

二.图像金字塔:

高斯金字塔 – 用来对图像进行降采样

拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片

-------------------------------------------------------------------------------------------------------------------------------

高斯金字塔

高斯金子塔是从底向上,逐层降采样得到。 降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。

高斯金子塔的生成过程分为两步:     1.对当前层进行高斯模糊      2.删除当前层的偶数行与列     即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。

---------------------------------------------------------------------------------------------------------------------------------

三.高斯不同(Difference of Gaussian-DOG)

 DOG定义:

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

四.API函数接口:

上采样(cv::pyrUp) – zoom in 放大

#上采样API
void pyrUp(InputArray src, OutputArraydst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT )

参数说明:

第一个参数,InputArray类型的src,输入图像,Mat类的对象即可。
第二个参数,OutputArray类型的dst,输出图像,必须和源图片有一样的尺寸和类型。
第三个参数,const Size&类型的dstsize,输出图像的大小;有默认值Size(),即默认情况下,由Size(src.cols*2,src.rows*2)来进行计算。

第四个参数,int类型的borderType,即边界模式。

--------------------------------------------------------------------------------------------------------------------------------

降采样 (cv::pyrDown) – zoom out 缩小

#降采样API
void pyrDown(InputArray src,OutputArray dst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT)

参数说明:

第一个参数,InputArray类型的src,输入图像,Mat类的对象即可。
第二个参数,OutputArray类型的dst,输出图像,必须和源图片有一样的尺寸和类型。
第三个参数,const Size&类型的dstsize,输出图像的大小;有默认值Size(),即默认情况下,由Size Size((src.cols+1)/2, (src.rows+1)/2)来进行计算。

第四个参数,int类型的borderType,即边界模式。

归一化函数API

归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

#归一化函数API接口
cv::normalize(InputArry src,InputOutputArray dst,double alpha=1,double beta=0,int norm_type=NORM_L2,int dtype=-1,InputArray mark=noArry())

参数说明:

src               输入图像;
dst               输出图像,图像的大小和原图像一致;
alpha           可以用来规范值,也可以用来规范范围,并且是范围的下限;
beta             只用来规范范围并且是范围的上限;
norm_type   归一化选择的数学公式类型;有NORM_INF(无穷范数),NORM_L1(1范数), NORM_INFL2(2范数),NORM_MINMAX(范围归一化)
dtype           当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输出不同,不同的地方由dtype决定;否则 和src通道一致,depth =CV_MAT_DEPTH(dtype).
mark            掩码。选择感兴趣区域,选定后只能对该区域进行操作。

=========================================================================

代码实现:

#include"stdafx.h"
#include<opencv2\imgproc\types_c.h>
#include<opencv2\opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;int main(int agrc, char** argv) {Mat src, dst;src = imread("F:/photo/qx.jpg");if (!src.data) {printf("could not load image...");return -1;}//char INPUT_WIN[] = "input image";//char OUTPUT_WIN[] = "sample up";namedWindow("input image", 0);resizeWindow( "input image", 300, 300);imshow("input image", src);namedWindow("sample up", WINDOW_AUTOSIZE);// 上采样pyrUp(src, dst, Size(src.cols *2, src.rows * 2));imshow("sample up", dst);// 降采样Mat s_down;pyrDown(src, s_down, Size(src.cols / 2, src.rows / 2));imshow("s_down", s_down);// DOGMat gray_src, g1, g2, dogImg;cvtColor(src, gray_src, CV_BGR2GRAY);GaussianBlur(gray_src, g1, Size(5, 5), 0, 0);GaussianBlur(g1, g2, Size(5, 5), 0, 0);subtract(g1, g2, dogImg, Mat());// 归一化显示normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);imshow("DOG Image", dogImg);waitKey(0);return 0;
}

--------------------------------------------------------------------------------------------------------------------------------

图像处理效果:

图像降采样

图像原图

图像上采样

高斯不同(DOG)图像

OpenCV图像处理学习十三,图像金字塔——高斯金字塔和拉普拉斯金字塔相关推荐

  1. OpenCV与图像处理学习十三——Harris角点检测(含代码)

    OpenCV与图像处理学习十三--Harris角点检测(含代码) 一.角点的概念 二.Harris角点检测的实现过程 三.Harris代码应用 一.角点的概念 角点: 在现实世界中, 角点对应于物体的 ...

  2. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  3. OpenCV与图像处理学习八——图像边缘提取(Canny检测代码)

    OpenCV与图像处理学习八--图像边缘提取(Canny检测代码) 一.图像梯度 1.1 梯度 1.2 图像梯度 二.梯度图与梯度算子 2.1模板卷积 2.2 梯度图 2.3 梯度算子 2.3.1 R ...

  4. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  5. OpenCV与图像处理学习二——图像直方图与色彩空间

    OpenCV与图像处理学习二--图像直方图与色彩空间 2.4 图像直方图(Image Histogram) 2.4.1 直方图的绘制 2.4.2 三通道直方图绘制 2.5 颜色空间 2.5.1 RGB ...

  6. OpenCV与图像处理学习一——图像基础知识、读入、显示、保存图像、灰度转化、通道分离与合并

    OpenCV与图像处理学习一--图像基础知识.读入.显示.保存图像.灰度转化.通道分离与合并 一.图像基础知识 1.1 数字图像的概念 1.2 数字图像的应用 1.3 OpenCV介绍 二.图像属性 ...

  7. [Python图像处理] 三十三.图像各种特效处理及原理万字详解(毛玻璃、浮雕、素描、怀旧、流年、滤镜等)...

    此文转载自:https://blog.csdn.net/Eastmount/article/details/111568397#commentBox 该系列文章是讲解Python OpenCV图像处理 ...

  8. OpenCV 图像处理学习手册:1~5

    原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 计算机视觉 译文集],采用译后编辑(MT ...

  9. 图像融合(三)-- 拉普拉斯金字塔

    原文:http://www.cnblogs.com/silence-hust/p/4193208.html 2.拉普拉斯金字塔融合 图像金字塔方法的原理是:将参加融合的的每幅图像分解为多尺度的金字 ...

最新文章

  1. 2021年中国工业互联网安全大赛核能行业赛道writeup之入门的黑客
  2. 用Python分析了十年电影票房,原来我错过了这么多好电影!
  3. GPT-4参数将达10兆!此表格预测全新语言模型参数将是GPT-3的57倍
  4. python推荐系统-用python写个简单的推荐系统示例程序
  5. iOS appstore各种图片的尺寸和需要注意的地方
  6. Mockito框架实现学习之when(dummy)
  7. java排班_使用java规则引擎Drools自动排班前言.doc
  8. Thinkphp3.2版本Controller和Action的访问方法
  9. matlab分析电池特性,基于Matlab_Simulink的光伏电池特性仿真研究
  10. EXCHANGE服务器灾难恢复
  11. 为什么人很难承认自己的错误?
  12. 关于双硬盘电脑掉盘的问题
  13. 个人微信小程序开发入门教程:下载微信开发工具
  14. PCB寄生电容和寄生电感的计算
  15. java (apache POI 组件) 操作 excel 插入批注
  16. 网络计算机抗震计算阻尼比,抗震结构设计经典计算题及答案.doc
  17. python 人脸识别:从入门到精通 (5.4)常用的神经网络层
  18. 学习GAN必须阅读的10篇论文
  19. MySQL数据库05 数据库控制和设计
  20. windows10下载软件下到一半显示需要授权怎么解决

热门文章

  1. 分块矩阵计算行列式三板斧
  2. 收藏:WORD中快速输入下分割线
  3. 不用找,你想要的叶子 树叶免抠元素素材都在这里
  4. 基于JAVA线上竞赛训练系统录屏计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  5. 思念水饺7月已知产品含病菌 专项咨询形同虚设
  6. php添加附件,通过PHPMailer添加附件
  7. 如何将电脑播放的声音作为麦克风的输出音源
  8. c语言空格符 r t,c语言中、\t \r \n 和空格什么意思
  9. win10无法检测java_win10下配置JAVA环境变量(以及错误: 找不到或无法加载主类的处理方法)...
  10. [设计模式] 构建者模式