图像金字塔

将一层层图像比喻成金字塔,层级越高,图像越小,分辨率越低。

高斯金字塔:向下降采样;

拉普拉斯金字塔:向上采样,通过金字塔低层图像重建上层未采样图像;

金字塔的产生

用高斯核对图像进行卷积,然后删除所有偶数行和偶数列,新得到的图形面积为原图像的1/4,循环此过程可得到金字塔;

对图像向下(图像尺寸减半)采样——pyrDown函数;

1、对图像进行高斯核卷积;

2、删除所有偶数行和偶数列;(逐渐丢失信息)

对图像向上(图像尺寸加倍)采样——pyrUp函数;

1、对图像每个方向扩大原来的两倍,新增的行列以0填充;

2、使用高斯内核(*4)与放大后的图像卷积;(逐渐丢失信息)

为了减少信息的丢失,使用拉普拉斯金字塔;

拉普拉斯金字塔通过原图像减去先缩小再放大的图像构成;

API函数Resize

resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) —— 将原始图像调整为指定大小。

scr:原始图像

dsize:输出图像的尺寸(元组方式)

dst:输出图像

fx:沿水平轴缩放的比例因子

fy:沿垂直轴缩放的比例因子

interpolation:插值方法,有以下5种:

cv2.INTER_NEAREST 最近邻插值

cv2.INTER_LINEAR 双线性插值(默认)

cv2.INTER_AREA 使用像素区域关系进行重采样。

cv2.INTER_CUBIC 4x4像素邻域的双3次插值

cv2.INTER_LANCZOS4 8x8像素邻域的Lanczos插值

注:如果要缩小图像,选择:cv2.INTER_AREA;如果要放大图像,建议选择cv2.INTER_LINEAR效果尚可且速度快。进行缩放时, dsize和fx、fy 二选一即可。

程序

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;//全局变量
int k = 5;
Mat dst, dst1, dst2;
//载入原图
Mat src = imread("12.bmp", 1);void on_change(int, void*)
{//resize放缩的两种用法,二选一即可。resize(src, dst, Size(0, 0), (double)k / 10, (double)k / 10, INTER_AREA);//resize(src, src, Size(src.cols / 2, src.rows / 2),(0,0), (0,0), INTER_AREA);imshow("结果图", dst);
}void print()
{cout << "键盘按键【1】:进行resize放缩操作" << endl;cout << "键盘按键【2】:进行pyrUp向上采样操作" << endl;cout << "键盘按键【2】:进行pyrDown向下采样操作" << endl;cout << "键盘按键【Esc】:退出程序" << endl;cout << "注意:放缩值>10为放大,放缩值<10为缩小" << endl;
}int main()
{print();//改变console(控制台)字体颜色  system("color 0B");//判断图片是否读入if (!src.data){printf("读取图片image0错误~! \n");return false;}//循环轮询按键while (1){//先显示原图namedWindow("原图");imshow("原图", src);//获取键盘按键int c = waitKey(0);//判断ESC是否按下,若按下便退出if ((c & 255) == 27){cout << "程序退出!\n";break;}//根据按键的不同,进行各种操作switch ((char)c){case '1':cout << "您正在进行resize放缩操作" << endl;createTrackbar("resize放缩值", "原图", &k, 30, on_change);on_change(k, 0);break;case '2':cout << "您正在进行pyrUp操作" << endl;pyrUp(src, dst1, Size(src.cols * 2, src.rows * 2));imshow("pyrUp图", dst1);break;case '3':cout << "您正在进行pyrDown操作" << endl;pyrDown(src, dst2, Size(src.cols / 2, src.rows / 2));imshow("pyrDown图", dst2);break;}}return 0;
}

图像金字塔与resize函数相关推荐

  1. CV13 图像分辨率操作(图像金字塔与resize()函数)

    文章目录 1.图像金字塔的作用 2.高斯金字塔 2.1理论研究--分辨率缩小 2.2程序分析 2.3效果图 2.4拉普拉斯金字塔 3.图像缩放-resize()函数 3.1resize()函数介绍 3 ...

  2. OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize()

    OpenCV学习笔记(十):图像金字塔Pyramid和图像缩放:pyrDown(),pyrUp(),resize() 一.图像金字塔定义: 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是 ...

  3. 《OpenCV3编程入门》学习笔记6 图像处理(六)图像金字塔与图片尺寸缩放

    6.6 图像金字塔与图片尺寸缩放 6.6.1 图像金字塔 1.图像金字塔是图像中多尺度表达的一种,主要用于图像分割,是一种以多分辨率解释图像的结构,通过梯次向下采样获得分辨率逐步降低的图象集合 2.分 ...

  4. 滤波、漫水填充、图像金字塔、图像缩放、阈值化

      imgpro 组件是 Image 和 Process 这两个单词的缩写组合,即图像处理模块,这个模块包含了如下内容: 文章目录 1.线性滤波:方框滤波.均值滤波.高斯滤波 1.1 平滑处理 1.2 ...

  5. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔总结

    我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果放大或者缩小图片的尺寸,笼统来说的话,可以使用OpenCV为我们提供的如下两种方式: <1> resize函数.这是最直接的方式, &l ...

  6. 我对图像金字塔的理解及OpenCV下的实现代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 图像金字塔算法表现出来的效果就是对图像进行缩放嘛 ...

  7. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放...

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  8. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  9. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

最新文章

  1. java 媒体播放器_Java多媒体播放器(三)
  2. 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法
  3. Spring Boot连接多个Redis库配置方案及代码示例
  4. 8分钟回顾开源巨头 Facebook 的 2016
  5. 用一个时钟在FPGA中计算直方图
  6. “油猴”的五大神级脚本
  7. 最新fl studio20.8中文电音编曲宿主制作软件
  8. 一张让android死机图片,导致安卓手机死机的照片拍摄者表示这张照片是无意之举...
  9. 惊喜!轻松将word转换成pdf文档
  10. 数据结构Data Structure in C++ 胡学钢 全书梳理(备忘自用 已完结)
  11. BBQ EasyBuns
  12. Cython使用技巧
  13. Python 判断无向图是否存在环
  14. SCI论文投稿前必须检查的29个细节
  15. 【转】光通信主要会议和期刊总结
  16. kubeadm init 问题和解决问题记录
  17. Linux zip分卷压缩
  18. WORD自动编号的图表标签重新编号
  19. Makefile中指定目标(MAKECMDGOALS)
  20. Drupal9笔记之block权限踩坑

热门文章

  1. window路径和linux路径变换,从linux样式路径转换时,Docker装入的卷将; C添加到Windows路径的末尾...
  2. css z-index 的使用
  3. android 图片压缩方法分析
  4. 讯飞语音:客户端未被授权
  5. redis缓存和cookie实现Session共享
  6. 算法设计思想(3)— 迭代法
  7. mySQL笔记(1)
  8. 第18章:MYSQL分区
  9. 35个必备的wordpress插件
  10. usaco Postal Vans(dp)