图像金字塔概念

  1. 我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔
  2. 一个图像金字塔式一系列的图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就想一个古代的金字塔。
  • 高斯金子塔 – 用来对图像进行降采样
  • 拉普拉斯金字塔 – 用来重建一张图片根据它的上层降采样图片(分辨率较低)

图像金字塔概念 – 高斯金字塔

  • 高斯金子塔是从底向上,逐层降采样得到。
  • 降采样之后图像大小是原图像MxN的M/2 x N/2 ,就是对原图像删除偶数行与列,即得到降采样之后上一层的图片。
  • 高斯金子塔的生成过程分为两步:
    • 1.对当前层进行高斯模糊
    • 2.删除当前层的偶数行与列
      即可得到上一层的图像,这样上一层跟下一层相比,都只有它的1/4大小。

高斯不同(Difference of Gaussian-DOG)

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

采样相关API

  • 上采样(cv::pyrUp) – zoom in 放大
    pyrUp(Mat src, Mat dst, Size(src.cols2, src.rows2))
    生成的图像是原图在宽与高各放大两倍

  • 降采样 (cv::pyrDown) – zoom out 缩小
    pyrDown(Mat src, Mat dst, Size(src.cols/2, src.rows/2))
    生成的图像是原图在宽与高各缩小1/2

代码案例:

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(){//1. 加载图像和显示原图Mat src=imread("E:/Experiment/OpenCV/Pictures/dog2.jpg");if(src.empty()){printf("could not load image...");return -1;}namedWindow("input_windows",CV_WINDOW_AUTOSIZE);imshow("input_windows",src);//显示图片//2. 创建两个Mat对象来存储操作的结果,并执行采样操作Mat dst1,dst2;//2.1. 上采样pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));//上采样,生成的图像是原图在宽与高各放大两倍imshow("pyrUp", dst1);//2.2. 下采样pyrDown(src, dst2, Size(src.cols / 2, src.rows / 2));//降采样,生成的图像是原图在宽与高各缩小1/2imshow("pyrDown", dst2);//高斯不同Mat gray_src,gblur1,gblur2,gblur3,dogImg,dogImg2,dogImg3;cvtColor(src, gray_src, COLOR_BGR2GRAY);GaussianBlur(gray_src, gblur1, Size(3, 3), 0, 0);GaussianBlur(gblur1, gblur2, Size(3, 3), 0, 0);//方式一subtract(gblur1, gblur2, dogImg, Mat());//获取 DOG ,应该要低的gblur1减高的gblur2//将灰度图的0-255空间,转换到0-1空间(二值空间),让原本淡淡的图像变得清楚了normalize(dogImg, dogImg, 255, 0, NORM_MINMAX);//参数:255最大值,0最小值,NORM_MINMAX 最大最小化imshow("dogImg", dogImg);//能看到淡淡的猫的眼睛的轮廓GaussianBlur(gray_src, gblur3, Size(5, 5), 0, 0);subtract(gblur1, gblur3, dogImg2, Mat());//方式二normalize(dogImg2, dogImg2, 255, 0, NORM_MINMAX);imshow("dogImg2", dogImg2);//也能看到淡淡的猫的眼睛的轮廓subtract(gblur2, gblur1, dogImg3, Mat());//高减低的normalize(dogImg3, dogImg3, 255, 0, NORM_MINMAX);imshow("dogImg3", dogImg3);waitKey(0);return 0;
}

运行截图:


小案例:

1. 加载图片
2. 进行上采样(按’u’后):
3. 执行下采样(按’d’后):
4. 退出程序(按’Esc’后):

#include<opencv2/opencv.hpp>
#include<iostream>using namespace cv;int main(){//1. 加载图像和显示原图Mat src=imread("E:/Experiment/OpenCV/Pictures/dog2.jpg");if(src.empty()){printf("could not load image...");return -1;}namedWindow("input_windows",CV_WINDOW_AUTOSIZE);imshow("input_windows",src);//显示图片Mat temp,dst;temp=src;dst=temp;while(true){int c;c = waitKey(10);if( (char)c == 27 ){//Esc键break;}else if( (char)c == 'u' ){ pyrUp( temp, dst, Size( temp.cols*2, temp.rows*2 ) );printf( "** Zoom In: Image x 2 \n" );}else if( (char)c == 'd' ){ pyrDown( temp, dst, Size( temp.cols/2, temp.rows/2 ) );printf( "** Zoom Out: Image / 2 \n" );}imshow( "output_windows", dst );temp = dst;}waitKey(0);return 0;
}

推荐博客

  1. https://blog.csdn.net/LYKymy/article/details/83153927
  2. https://blog.csdn.net/huanghuangjin/article/details/80958983

OpenCV-图像处理(13、图像上采样和降采样)相关推荐

  1. opencv 的norm_OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG

    一. 图像金字塔 一个图像金字塔式一系列的图像组成,最底下的图形尺寸最大,最上方的图像尺寸最小. 高斯金字塔是从底向上,逐层降采样得到的. 高斯金字塔的生成过程分为两步: 1. 对当前层进行高斯模糊. ...

  2. 2020.11.03 使用OpenCV进行图像上采样、降采样以及高斯不同操作【OpenCV C++】

    图像上采样,降采样以及高斯不同操作 源代码: // testOpencv12.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include &l ...

  3. opencv——上采样与降采样

    目录 图像金字塔 为什么要使用图像金字塔 上采样与降采样 高斯金字塔 高斯不同 拉普拉斯金字塔 相关API 上采样 降采样 上采样与降采样代码实现 代码 效果 先降采样再上采样代码实现 高斯不同代码实 ...

  4. 上采样和下采样_OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG

    一. 图像金字塔 一个图像金字塔式一系列的图像组成,最底下的图形尺寸最大,最上方的图像尺寸最小. 高斯金字塔是从底向上,逐层降采样得到的. 高斯金字塔的生成过程分为两步: 对当前层进行高斯模糊. 删除 ...

  5. 上采样,重采样和下采样,降采样

    一.上采样(重采样) 1.上采样就是重采样也就是放大图像,通常使用的目的是 (1)使图片达到更高的分辨率 (2)再经过pooling后上采样可以放大信息,循环迭代可以不断增强有用信息 2. 上采样原理 ...

  6. OpenCv图像处理之图像视频摄像头读取和保存

    OpenCv图像处理之图像视频摄像头读取与保存 使用cv::imread()读取图片 使用cv::imwrite()存储图片 使用cv::VideoCapture::open()读取视频 使用cv:: ...

  7. Opencv9:实现图像尺寸缩减(降采样)功能

    Opencv9:实现图像尺寸压缩(降采样)功能 (1)实现功能: 对图像实现一个类似于最大池化(max-pooling)的功能,缩减图像的尺寸,用n*n局部内灰度值最大的像素替换这个n*n局部块. 稍 ...

  8. OpenCV图像处理(十一)---图像梯度

    安培定则:也叫右手螺旋定则,是表示电流和电流激发磁场的磁感线方向间关系的定则.通电直导线中的安培定则(安培定则一):用右手握住通电直导线,让大拇指指向电流的方向,那么四指指向就是磁感线的环绕方向:通电 ...

  9. 《OpenCv视觉之眼》Python图像处理二十一:Opencv图像处理之图像线性变换和非线性变换的方法及原理

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  10. OpenCv图像处理之图像归一化

    OpenCv图像处理之图像归一化 归一化 中心化 标准化 归一化 图像处理中,图像单通道像素值为0~255之间的uchar类型,通常使用min-max归一化将其转化为0~1区间之间,既不会改变数据的分 ...

最新文章

  1. 【412天】跃迁之路——程序员高效学习方法论探索系列(实验阶段169-2018.03.24)...
  2. c#实现 改进弧长法判断点在多边形里面
  3. list-style样式不显示问题
  4. 【JavaSE04】Java中循环语句for,while,do···while-练习2
  5. 科大星云诗社动态20210524
  6. Visual Studio 常见问题及解决方案(持续更新)
  7. RMI(Remote Method Invocation,远程方法调用)
  8. 编程之美-第3章 结构之法
  9. Java main()方法
  10. Yii2.0 对数据库 查询的一些简单的操作
  11. 混IT,靠的是能力,不是技能
  12. 破14亿,Python分析我国存在哪些人口危机!
  13. hive整和mysql外表_hive中的外表EXTERNAL TABLE
  14. Ubuntu 制作光盘镜像文件
  15. 什么人能成为Leader,大Leader该做什么
  16. c语言:运输公司对用户计算运输费用
  17. 把maven的setting配置文件改为需要jdk版本
  18. FL Studio教程之如何插入第三方插件
  19. 阅读软件怎么添加书源_继阅读软件后又一款阅读神器,安卓专用,上千书源,无广告,无vip...
  20. 服务器uefi装系统教程,uefi模式怎么重装系统_win10uefi装系统步骤教程

热门文章

  1. Linux后台启动脚本
  2. n != n, n == -n
  3. 高速缓存dns/ddns
  4. Linux下安装JDK并配置环境变量
  5. How To Search and Restore files from Site Collection Recycle Bin
  6. 泛型方法,java map按照value值来比较大小并且返回最终结果
  7. 283、移动零(python)
  8. 剑指_3.2不修改数组找出重复的数字(Python)
  9. 原生php ajax post_php下的原生ajax请求用法实例分析
  10. 班级管理servlet项目开发详细讲解,其中涉及js、jq、ajax、等多项技术合计,本项目来源自网络,如有雷同,请私聊博主