图像金字塔

       图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

从上面对图像金字塔的定义来看,图像金字塔的功能之一就是对图像尺度尺度的转换,即放大或者缩小图片,在OpenCV中提供了两种方法:

  • cv2.resize()函数,这种方法可直接对图像进行尺度的变换,在我的博客  图像的简单几何变换  中,提供了相应的示例。
  • cv2.pyrUp()、cv2.pyrDown()函数。这是与图像金字塔相关的两个函数,分别是对图像的向上采样、向下采样操作。

图像金字塔一般有两种类型:

  • 高斯金字塔(Gaussianpyramid):用来向下采样,是主要的图像金字塔。
  • 拉普拉斯金字塔(Laplacianpyramid):用来从金字塔底层图像重建上层未采样图像,在数字图像处理中也就是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。

两者的简要区别:高斯金字塔用来向下采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。

在OpenCV中:

  • 对图像向上采样:pyrUp()函数
  • 对图像向下采样:pyrDown()函数
img = cv2.imread('luotuo.jpg', 0)  # 读为灰度图
up_img = cv2.pyrUp(img)  # 上采样操作
img_1 = cv2.pyrDown(img)  # 下采样操作
img_2 = cv2.pyrDown(img_1)
cv2.imshow('up_img', up_img)
cv2.imshow('img', img)
cv2.imshow('img_1', img_1)
cv2.imshow('img_2', img_2)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里的向下与向上采样是对图像的尺度来说的 ,相当于倒立的金字塔,向上就是图像尺寸加倍,向下就是图像尺寸减半。

需要注意的是,pyrUp和pyrDown不是互逆的,即上采样不是下采样的逆操作。

pyrDown()是一个会丢失信息的函数。为了恢复原来更高分辨率的图像,要获得由于下采样操作所丢失的信息,这些数据就和拉普拉斯金字塔有关了。

图像的拉普拉斯金字塔可以由图像的高斯金字塔得到,转换的公式为:

img = cv2.imread('3.jpg', 0)
img1 = cv2.pyrDown(img)  # 高斯金字塔
_img1 = cv2.pyrDown(img1)
_img = cv2.pyrUp(_img1)
img2 = img1 - _img  # 拉普拉斯金字塔
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

拉普拉斯金字塔的图像看起来就像是边界图。经常被用在图像压缩中。

关于图像的放大和缩小,个人认为还是使用resize()函数比较好,因为他不会使图像变得特别模糊,而且非常简便。这里再对之前的resize函数知识再做一些补充

第六个参数,int类型的interpolation,用于指定插值方式,默认为INTER_LINEAR(线性插值)。

可选的插值方式如下:

  • INTER_NEAREST - 最近邻插值
  • INTER_LINEAR - 线性插值(默认值)
  • INTER_AREA - 区域插值(利用像素区域关系的重采样插值)
  • INTER_CUBIC –三次样条插值(超过4×4像素邻域内的双三次插值)
  • INTER_LANCZOS4 -Lanczos插值(超过8×8像素邻域的Lanczos插值)

若要缩小图像,一般情况下最好用CV_INTER_AREA来插值,

而若要放大图像,一般情况下最好用CV_INTER_CUBIC(效率不高,慢,不推荐使用)或CV_INTER_LINEAR(效率较高,速度较快,推荐使用)。

修仙路上不孤单,两位道友的博客,欢迎关注。

https://me.csdn.net/qq_41007606

https://me.csdn.net/weixin_38877564

python+OpenCV图像处理(九)图像金字塔相关推荐

  1. Python OpenCV 图像处理之 图像运算和图像位运算知识补充

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 51 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...

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

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

  3. Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 cv2.compareHist 函数 橡皮擦的小节 基础知识铺垫 上篇博客 Py ...

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

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

  5. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图

    一步一步来吧 上一节:Python+Opencv图像处理新手入门教程(一):介绍,安装与起步 1.什么是图像 对于计算机而言,图像的本质是一个由像素点构成的矩阵. 例如我们用肉眼很容易分辨一辆汽车的后 ...

  6. Python+OpenCV图像处理(五)——图像阈值和二值化

    系列文章 Python+OpenCV图像处理(一)--OpenCV框架与图像插值算法 Python+OpenCV图像处理(二)--几何变换 Python+OpenCV图像处理(三)--彩色空间互换 P ...

  7. Python+OpenCV图像处理(一篇全)

    参考:1.网易云课堂 Python+OpenCV图像处理 - 网易云课堂 2.[在水一方xym的博客]业精于勤荒于嬉,行成于思毁于随 - CSDN博客 https://blog.csdn.net/za ...

  8. Python OpenCV图像处理 理论 代码

    python opencv图像处理 GitHub - LeBron-Jian/ComputerVisionPractice OpenCV计算机视觉学习 & 代码 OpenCV计算机视觉学习(1 ...

  9. Python+Opencv图像处理新手入门教程(四):视频内容的读取与导出

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(三):阈值与二值化 1.Intro 今天这节我们主要看怎么利用opencv读取并处理视频中的内容. 2.VideoCapture ...

  10. Python+Opencv图像处理新手入门教程(三):阈值与二值化

    一步一步来吧 上一节: Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图 1.Intro 今天这节我们主要研究利用阈值处理图像.例如对于输入图像: 如何做一 ...

最新文章

  1. 千万不要一辈子靠技术生存
  2. php企业网站源码安装教程,PHPSCUP企业建站系统v1.4 安装图文教程
  3. angular ng-container
  4. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
  5. TCP状态中 time_wait 的作用?
  6. typeof instanceof
  7. linux prc 时区,授时时区问题解决
  8. Android系统root破解原理分析
  9. oracle 监听拒绝连接,报mybatis映射文件错误Listener refused the connection with the following error: ORA-12519, TNS
  10. dbforge studio for oracle 注册,dbForge Studio for Oracle
  11. 读书:雨果的《巴黎圣母院》
  12. 如何为SUSE配置IP地址,网关和DNS
  13. VS2019 OpenCL安装和快速入门
  14. 微信浏览器跳转浏览器下载app解决方案
  15. smtp邮件服务器的作用,smtp服务器是什么意思(smtp服务器作用及使用指南)
  16. 音视频——Codec初始化及Omx组件创建
  17. Iphone备份SHSH的方法步骤
  18. matlab正太分布的反函数,怎样用matlab求标准正态分布函数的反函数函数值
  19. 学习笔记:图像风格迁移
  20. 兄弟Brother DCP-7025 激光打印机驱动

热门文章

  1. java 捆绑_java – 如何在jar文件中捆绑图像
  2. 贷款利润最大化——利用随机森林和逻辑回归
  3. 我的新书《Spring Cloud实战》预告
  4. 领域应用 | 用知识图谱玩唐诗,“唐诗别苑”附庸端午节的别样风雅!
  5. 科普 | “开放知识”的定义
  6. 金融时报:人工智能在银行中的应用—对全球30家大型银行的调查
  7. JAVA:线程总结及多线程实现的两种方法
  8. 【42.59%】【codeforces 602A】Two Bases
  9. 《人月神话》阅读笔记(三)
  10. jQuery Easy UI Accordion(可伸缩的面板)包