美文网首页
opencv图像金字塔

opencv图像金字塔

作者: Zoe_C | 来源:发表于2018-04-28 15:24 被阅读0次

1 原理

一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)。如果我们把最大的图像放在底部,最小的放在顶部,看起来像一座金字塔,故而得名图像金字塔。

有两类图像金字塔:高斯金字塔和拉普拉斯金字塔。

1.1高斯金字塔

高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值。这样操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像的面积就变为原来图像面积的四分之一。这被称为 Octave。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔。我们可以使用函数cv2.pyrDown()cv2.pyrUp()构建图像金字塔。

函数 cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金子塔(尺寸变小,分辨率降低)。

img = cv2.imread('opencv_logo.jpg',0)

lower_reso = cv2.pyrDown(img)

while(1):

    cv2.imshow('img',img)

    cv2.imshow('lower_reso',lower_reso)

    if cv2.waitKey() == ord('q'): break

cv2.destroyAllWindows()

cv2.pyrUp从一个低分辨率小尺寸的图像向上构建一个金字塔(尺寸变大,但分辨率不会增加)

higher_reso = cv2.pyrUp(img)

1.2.拉普拉斯金字塔

拉普拉斯金字塔可以由高斯金字塔计算得来。公式如下:

拉普拉斯金字塔的图像看起来就像是边界图,其中很多像素都是0,常被用在图像压缩中。

2.使用金字塔进行图像融合

在图像缝合中,由于连接区域图像像素的不连续,整幅图看起来会很差,金字塔就可以实现无缝连接。

经典例子就是水果融合。

实现步骤:

1). 读入两幅图像,苹果和句子

2). 构建苹果和橘子的高斯金字塔(6 层)

3). 根据高斯金字塔计算拉普拉斯金字塔

4). 在拉普拉斯的每一层进行图像融合(苹果的左边与橘子的右边融合)

5). 根据融合后的图像金字塔重建原始图像。

下图是摘自《学习 OpenCV》展示了金子塔的构建,以及如何从金字塔重建原

始图像的过程。

代码如下:

PS:1)这边需要注意一个numpy的版本,在1.12版本以上的,取整是3//2,而在此版本之前,取整是3/2

      2)图像先经过降采样,然后再上采样恢复的时候大小可能不同,这会导致后面的拼接出现问题,因为调用函数cv2.subtrack()和函数cv2.add()需要保证两幅图像尺寸、通道数完全相同,否则会报错,所以这边比源码多了一个自定义的resize函数

相关文章

  • 图像金字塔

    概述 图像金字塔其实说白了就是披着金字塔外衣的图像缩放,在OpenCV中,有关图像金字塔的操作有pyrup()和p...

  • 【图像处理】如何对一幅图像进行放大放小

    【图像处理】OpenCV系列十五 --- 对一幅图像进行放大、放小 上一篇我们学习了图像金字塔,图像金字塔有两种实...

  • OpenCV Python实现图像金字塔

    图像金字塔一文中,已经详细介绍了图像金字塔的MATLAB实现,这里贴上OpenCV Python的实现以做补充。在...

  • OpenCV 之ios 图像金字塔

    OpenCV 之ios 图像金字塔 目标 本文档尝试解答如下问题: 如何使用OpenCV函数 pyrUp 和 py...

  • 图像金字塔

    图像金字塔与图像尺寸变化(放大,缩小)是不同的.一般对图像进行放大或缩小,可以使用opencv resize 函数...

  • Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧。 基础知识铺垫 学习图像金字塔,发现网...

  • opencv图像金字塔

    1 原理 一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像...

  • openCV:图像金字塔

    定义 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。...

  • openCV

    Opencv2图像裁剪(子图像提取) opencv之读取图像 #######opencv读取图像的灰度值并显示出来...

  • iOS OpenCV 图像灰度处理

    iOS OpenCV 图像灰度处理 iOS OpenCV 图像灰度处理

网友评论

      本文标题:opencv图像金字塔

      本文链接:https://www.haomeiwen.com/subject/ozjglftx.html