python+OpenCV图像处理(九)图像金字塔

图像金字塔

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

        从上面对图像金字塔的定义来看,图像金字塔的功能之一就是对图像尺度尺度的转换,即放大或者缩小图片,在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3位物理学家获基础物理学特别突破奖

Peter van Nieuwenhuizen、Sergio Ferrara和Dan Freedman(从左至右)来源:中国科学报超引力理论是一个试图统一所有自然力的理论,在被提出40多年后,它是否能真实描述这个世界仍然悬而未决。尽管如此,该理论的…

python+OpenCV图像处理(十)霍夫变换简单图形检测

霍夫变换 霍夫变换(Hough Transform)是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状(如:直线、圆等)。最基…

Windows下安装scikit-learn

在安装sklearn前,首先确保安装了Numpy、Scipy和matplotlib 安装Numpy: 首先到https://pypi.org/project/numpy/#files下载安装包 注意文件的版本,如“numpy-1.19.1-cp36-cp36m-win_amd64.whl”表示该文件适用于widows操作系统下64位的Pyth…

华为发布面向2025十大趋势

来源:华为华为今日发布全球产业展望GIV2025,提出智能世界正在加速而来,触手可及,并预测:到2025年,智能技术将渗透到每个人、每个家庭、每个组织,全球58%的人口将能享有5G网络,14%的家…

python+OpenCV图像处理(十一)图像轮廓检测

图像轮廓检测 (一)检测轮廓 在OpenCV-python中,使用cv2.findContours()函数来对图像进行轮廓检测。 返回三个值:image,contours,hierarchy contours指的是轮廓本身,hierarchy是每条轮廓对应的…

python+OpenCV图像处理(十二)车牌定位中对图像的形态学组合操作处理

车牌定位中对图像的形态学组合操作处理 所谓的车牌定位,其中最关键的部分就是对图片的处理,参数的设置,并使之拥有泛化能力。 首先传入图片,在进行大规模的图片处理时,因为无法确定图片的尺寸,所以需要将…

ACL 2019 知识图谱的全方位总结

来源:AI科技评论翻译 | 栗峰  审校 | Camel编辑 | Pita ACL 2019已经结束,但其空前的规模仍然震撼人心:2900多篇提交论文,660篇被接收,3000多名会议注册人员,以及4个超过400人的研讨会(比一些…

word只在第一页插入页眉

首先点击插入>页眉 在设计栏中勾上“首页不同”,如下所示:

Redis应用场景(转)

(来源:http://www.cnblogs.com/shanyou/archive/2012/09/04/2670972.html) Redis常用数据类型 Redis最为常用的数据类型主要有以下五种: StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中…

word删除页眉下面的横线

首先点击插入>页眉,输入页眉后,选中页眉内容: 点击“设计”栏: 点击页面边框: 然后按如下设置即可消除页眉下面的横线

TensorFlow 多任务学习

多任务学习 多任务学习,顾名思义,就是多个任务模型同时执行,进行模型的训练,利用模型的共性部分来简化多任务的模型,实现模型之间的融合与参数共享,可以在一定程度上优化模型的运算,提高计算机…

【工业互联网】全球工业互联网十大最具成长性技术展望(2019-2020年)

来源:中国工业互联网研究院来源:中国工业互联网研究院全球工业互联网十大最具成长性技术展望(2019-2020年)工业互联网工业互联网是第四次工业革命的重要基石,在世界范围已步入发展快车道,正处于面临重大突破…

win10调节屏幕亮度_自动调节电脑屏幕亮度软件,保护你的眼睛

本文共514个字,预计用时2分钟小伙伴们,今天给大家分享一个小软件,名字叫做 EyeCareApp,中文名:护眼软件EyeCareApp是一款能够调节屏幕亮度的软件,它可以调整屏幕亮度,滤除蓝光,有效减…

国家计划统筹布局哪些人工智能创新平台?

来源:智造智库建设布局人工智能创新平台,是强化对人工智能研发应用的基础支撑。未来,国家层面计划大力促进各类通用软件和技术平台的开源开放,且按照军民深度融合的要求和相关规定,推进军民共享共用。人工智能开源软硬…

install package vif包_2019-10-03【百宝箱】如何使用wireshark实时远程抓取openwrt路由器包...

前言经常遇到问题的时候需要抓取wifi数据包,常用的做法有三种:1、使用 专用网卡omnipeekwindows软件抓包2、使用 macbook pro的airtool软件抓包3、在路由器上使用tcpdump除了omnipeek 其他都不能实时操作。如何结合openwrt来达到远程实时抓包呢&#xff…

CNN中的卷积操作与权值共享

CNN中非常有特点的地方就在于它的局部连接和权值共享,通过卷积操作实现局部连接,这个局部区域的大小就是滤波器filter,避免了全连接中参数过多造成无法计算的情况,再通过参数共享来缩减实际参数的数量,为实现多层网络提…

python根据矩阵数值大小涂上不同深浅颜色

绘制矩阵颜色图 import matplotlib.pyplot as pltplt.matshow(np.random.rand(5,5), cmapplt.get_cmap(Greens), alpha0.5) # , alpha0.3 plt.show()

20150210--Smarty1-02

20150210--Smarty1-02 三、设计篇 1、Smarty注释 基本语法: {*注释内容*} 示例代码: 2、Smarty中的变量 1)从PHP中分配的变量(普通的变量、数组、对象) 基本语法: $smarty->assign(); 示例代码: demo02.php demo02.html 运行效…

python 绘制时频图 plt.specgram

时频图以横轴为时间,纵轴为频率,用颜色表示幅值。在一幅图中表示信号的频率、幅度随时间的变化 matplotlib.pyplot.specgram(x, NFFTNone, FsNone, FcNone, detrendNone, windowNone, noverlapNone, cmapNone, xextentNone, pad_toNone, sidesNone, s…

华为鸿蒙系统四大特性:基于微内核,面向全场景,分布式架构

来源:今日头条8月9日,在广东东莞召开的华为开发者大会上,华为正式发布了自研操作系统:鸿蒙OS。据华为消费者业务CEO、华为技术有限公司常务董事余承东介绍,鸿蒙OS是基于微内核的面向全场景的分布式操作系统。随着华为全…