文档章节

Python OpenCV学习笔记之:图像金字塔

IOTService
 IOTService
发布于 2016/12/08 10:39
字数 434
阅读 330
收藏 1
# -*- coding: utf-8 -*-
"""
图像金字塔
图像金字塔是以多分辨率来解释图像的一种结构。
1987年,在一种全新而有效的信号处理与分析方法,即多分辨率理论中,小波首次作为分析基础出现了。
多分辨率理论将多种学科的技术有效地统一在一起,如信号处理的子带编码、数字语音识别的积分镜像过滤以及金字塔图像处理。
正如其名字所表达的,多分辨率理论与多种分辨率下的信号(或图像)表示和分析有关。
其优势很明显,某种分辨率下无法发现的特性在另一种分辨率下将很容易被发现。
参考:http://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E9%87%91%E5%AD%97%E5%A1%94
"""
import cv2
import numpy as np,sys

A = cv2.imread('../../../datas/images/apple.jpg')
B = cv2.imread('../../../datas/images/pear.jpg')
print(A.shape)
print(B.shape)
# 生成高斯金字塔
G = A.copy()
gpA = [G]
for i in range(5):
    G = cv2.pyrDown(G)
    gpA.append(G)
    print(G.shape)

G = B.copy()
gpB = [G]
for i in range(5):
    G = cv2.pyrDown(G)
    gpB.append(G)
    #print(G.shape)

# 产生Laplacian金字塔
lpA = [gpA[5]]
for i in range(5,0,-1):
    print(i)
    print(gpA[i].shape)
    print(gpA[i - 1].shape)
    GE = cv2.pyrUp(gpA[i])
    L = cv2.subtract(gpA[i-1],GE)
    lpA.append(L)

lpB = [gpB[5]]
for i in range(5,0,-1):
    GE = cv2.pyrUp(gpB[i])
    L = cv2.subtract(gpB[i-1],GE)
    lpB.append(L)

# 合并
LS = []
for la,lb in zip(lpA,lpB):
    rows,cols,dpt = la.shape
    ls = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))
    LS.append(ls)

# 重新构建图像
ls_ = LS[0]
for i in range(1,6):
    ls_ = cv2.pyrUp(ls_)
    ls_ = cv2.add(ls_, LS[i])

# 连接
real = np.hstack((A[:,:cols/2],B[:,cols/2:]))

cv2.imshow("LS",ls_)
cv2.imshow("Real",real)

cv2.waitKey()
cv2.destroyAllWindows()

© 著作权归作者所有

共有 人打赏支持
IOTService
粉丝 22
博文 153
码字总数 34417
作品 0
广州
其他
私信 提问
[Python图像处理] 二十一.图像金字塔之图像向下取样和向上取样

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/89341077 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
04/16
0
0
基于OpenCV和Python的文件操作——捕获摄像头的帧,在窗口显示图像,在窗口显示摄像头帧和视频文件的读/写

0 写在前面 这篇博客主要参考资料为《OpenCV 3计算机视觉Python语言实现》(Learning OpenCV 3 Computer Vison with Python)。 因为之前用Faster R-CNN做过一个红绿灯检测的小实践,但是Git...

learning_tortosie
2018/04/12
0
0
[Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正

版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/88679772 该系列文章是讲解Python OpenCV图像处理知识,前...

Eastmount
03/20
0
0
使用OpenCV和Python拼接图像

写在前面 首先这是一篇英文博客的翻译,先放上链接:https://www.pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/ 翻译是靠谷歌翻译和自己的理解,个别地方翻译有点问...

W_Tortoise
2018/12/19
0
0
深刻了解OPENCV

OpenCV是Intel资助的开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个C/C++函数的跨平台的中、高层 API。...

红薯
2008/12/10
3.1K
3

没有更多内容

加载失败,请刷新页面

加载更多

租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
1
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
4
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部