OpenCV3拉噗拉噗拉噗拉嘶金字塔LaplacianPyramid学习笔记(一半章子怡 + 一半孙俪)

  • 这个算法对我来说很难,所以写下过程来记录
    • 第一步,为两张图分别生成高斯金字塔
    • 第二步,为两张图分别生成拉普拉斯金字塔
    • 第三步, 融合两张图的拉普怕斯金字塔
    • 第四步,不停的pryUP最小的图像,并将其与拉普拉斯的上层相加,获得最终图像
    • 后记-一些小想法

这个算法对我来说很难,所以写下过程来记录

OpenCV中的一个基本的左右混合图片的算法,对大神来说可能很简单,小白觉得光看官方的代码还有很多不能理解的地方。所以特地作了一些图来帮助自己理解和记录。也希望对同样刚入门计算机图像的人有所帮助。
PS:如果理解不到位,或者有更多给我的学习建议,请给我留言哈~

Emmm, 混合橘子和苹果有什么意思嘛!
我们来找两个美女混一下~
个人还是更喜欢孙俪的颜(严重跑偏

第一步,为两张图分别生成高斯金字塔

// 载入库,读入图片
import cv2
import numpy as np
A = cv2.imread('SunLi.jpg')
B = cv2.imread('ZhangZiYi.jpg')// 为孙俪生成高斯金字塔
G = A.copy()
gpA = [G]
for i in range(6):G = cv2.pyrDown(G)gpA.append(G)// 为章子怡生成高斯金字塔
H = B.copy()
gpB = [H]
for i in range(6):H = cv2.pyrDown(H)gpB.append(H)

cv2.pyrDown(src)
顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值
如下图所示,1号像素取其上下左右中的高斯平均数,234号亦然。
这个操作相当于抽离了一半的列和行。图像变为原来的一半。

第二步,为两张图分别生成拉普拉斯金字塔

// 为A生成拉普拉斯金字塔
lpA = [gpA[5]]
for i in range(5, 0, -1):// 将金字塔升级UP = cv2.pyrUp(gpA[i])// 用上一层的金字塔减去升级完的金字塔LA = cv2.subtract(gpA[i-1], UP)// 将这一层加入数列lpA.append(LA)// 为B生成拉普拉斯金字塔
lpB = [gpB[5]]
for i in range(5, 0, -1):// 将金字塔升级UP = cv2.pyrUp(gpB[i])// 用上一层的金字塔减去升级完的金字塔LA = cv2.subtract(gpB[i-1], UP)// 将这一层加入数列lpB.append(LA)



cv2.pyrUp(src)
这个函数负责把小的图像放大两倍(信息有丢失的)
我们从gpA[5]开始,把它放大两倍,然后储存在UP中

cv2.subtract(gpA[i-1], UP)
然后我们用和UP一样大小,但信息量更大的gpA[i-1]去减去UP
如上图所示
第一步是“gpA[4]” 减去 “gpA[5]的up版本”,储存在lpA[1]中。
第二步是是“gpA[3]“ 减去 “gpA[4]的up版本”,储存在lpA[2]中,以此类推。

数学公式如下图所示
G代表高斯金字塔,L代表拉普拉斯金字塔
它生成的图片很像边界图,大部分的像素点都是0

第三步, 融合两张图的拉普怕斯金字塔

// 每一层拉普拉斯都是一半左边一半右边
LS = []
// 把两张图的每一层通过zip两两配对
for la, lb in zip(lpA, lpB):// 读取图片的列数 colsrows, cols, dpt = la.shape// 取孙俪的左边,章子怡的右边融合成新的拉普怕斯金字塔ls = np.hstack((la[:, :int(cols/2)], lb[:, int(cols/2):]))LS.append(ls)


这里我们注意到除了LS[0]取自于一半的lpA[0]和lpB[0]是“彩色”的图像
其他的都是“边缘”图像

第四步,不停的pryUP最小的图像,并将其与拉普拉斯的上层相加,获得最终图像

// 重新构建图像
ls_ = LS[0]
for i in range(1, 6)://不停的pyrUP最小的图像ls_ = cv2.pyrUp(ls_)//并将其与一半一半的拉普拉斯相加ls_ = cv2.add(ls_, LS[i])cv2.imshow('image', ls_)
cv2.waitKey(0)
cv2.destroyAllWindows()


这个步骤我的理解是:
1.模糊放大一个图片
2.强化这个图片的边缘
3.循环上面这个过程

emmmm,所以最后我们就获得了一个肥肠模糊…但是边缘又不糊的混合图像…

emmmm,总之就是…奇丑无比…有点微妙

后记-一些小想法

通过强调拼合的边缘+模糊放大的办法,自然的融合了图像,不过丢失的信息让图像看上去有点不真实。边缘一直累加超过255了,就很泛白(莫名还有点像打了高光??)

感觉如果多加一些边界,而不是一半一半的办法来混合图像的话效果应该会很有趣(就是hstack那里要再想一下)

或者就单纯用来处理一张图像,再调一下色调啥的(港风P图系列??)

希望我的记录对和我一样的小白有帮助!

拉噗拉司金字塔LaplacianPyramid学习笔记(一半章子怡 + 一半孙俪)相关推荐

  1. wringPi 初始化GPIO 为上拉_敏矽微电子Cortex-M0学习笔记04-GPIO详解及应用实例

    前面我们已经对敏矽微电子的基于cortex m0内核的ME32F030R8T6的基本功能做了介绍,然后详细讲解了开发环境MDK的安装,pack包的安装,工程的建立及程序的仿真,紧接着讲解了ME32F0 ...

  2. go get 拉取指定版本_go语言学习笔记-基础知识-3

    相关文档 go语言学习笔记-目录 1.简介 1.1 什么是GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易.Go是从2007年末由Robert Griesemer, Rob ...

  3. 傅里叶变换,拉氏变换,Z变换学习笔记

    傅里叶变换,拉氏变换,Z变换 书写动机 三角函数 正弦波 从正弦波到傅里叶 "任何"周期信号都可以用一系列成谐波关系的正弦曲线来表示. 分解原波 即:当两个不同频率的正弦波相乘,对 ...

  4. 拉勾教育第五期学习笔记

    CSS核心样式.HTML5 + CSS3新特性 css常用样式-font-weight 粗细font-weight 作用:设置文字是否加粗显示: 属性名:font-weight,属于font属性的一个 ...

  5. Python学习笔记——流程控制(拉勾教育数据分析实战训练营学习笔记)

    流程控制 1 程序结构 顺序结构 ​ 按编写顺序依次执行 选择结构 ​ 根据条件选择的结果,选择执行不同的语句 循环结构 ​ 在一定条件下,反复执行某段程序 2 选择语句 2.1 if语句 语法规则 ...

  6. 金字塔原理学习笔记1

    听说金字塔原理是一本不错的书,买来一看,并与大家分享读后感. 金字塔结构中的各种思想之间只有非常少的几种逻辑关系:向上.向下或者横向关系,这种简单性使我们有可能找到这些逻辑关系的一般性规则.要写出条理 ...

  7. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...

    [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 [拉勾教育数据分析实战训练营]--Tableau学习笔记-重点回顾1 以下是我搜罗的一些官方优秀case分享: 1.https:/ ...

  8. java学习笔记(22)java输入标签,单选框,复选框,添加文件,文本域,下拉框

    通过输入标签来制作如图所示的输入框: <body>账号:<input type="text" /><br />密码:<input type ...

  9. svn拉取文件合并_svn如何使用import目录作为工作拷贝+我的svn学习笔记

    前奏 svn作为一款极其优秀的开源版本控制系统,应用广泛,从组织到个人遍及各行各业.因此学习和熟练掌握它,对提高我们日常工作效率和数据安全非常重要,尤其对开发人员协同管理Project的文档,代码,各 ...

最新文章

  1. 陶哲轩实分析 定理 13.3.5 :紧致度量空间上的连续函数一致连续
  2. 机器学习 阴性集的选择 —— drug-target interactions (DTIs)
  3. 卫星图像中的车辆分析--A Large Contextual Dataset for Classification, Detection and Counting of Cars
  4. 容器持久化存储训练营”启动倒计时!3天攻破K8s难点
  5. Web框架 — Flask
  6. woocommerce分类页面模板_怎样让wordpress网站的不同分类页面,调用不同的banner图片?...
  7. python迭代器生成器装饰器
  8. 【Flask】下载多个文件
  9. Linux下设置定期执行脚本
  10. ADOBE AIR 技术
  11. ffplay 分析概述
  12. 环境规制指数,两种测算方法,整理好的面板数据
  13. ArduinoUNO实战-第十二章-累加器实验
  14. 乐高大颗粒作品24:金蟾
  15. Tableau 网站流量分析案例之页面指标分析(一)
  16. uniCloud使用
  17. Swift macOS NSTextField 响应键盘按键 Enter 回车键,或者其它按键
  18. Python+Django实现基于人脸识别的门禁管理系统,附带源码!!
  19. bean的一种使用姿势
  20. 《花田小院》丨国风版《梦幻花园》

热门文章

  1. linux 内核空间占用cpu百分比过高,线上linux系统故障排查之一:CPU使用率过高
  2. VirtualBox 立即卸载此应用,因为它与Windows 10 不兼容
  3. RT3070无线网卡AP模式
  4. Win10安装java环境
  5. 5G智慧园区整体架构方案(ppt)
  6. java驱动打印机_本地打印机驱动程序如何找到网络打印机?
  7. 回收站清空的文件怎么恢复?学会这2招,简单又实用
  8. 【Android】如何实现App的快捷方式的创建、添加与管理呢?
  9. 恢复系统设置或计算机无法点击进入,怎么还原电脑系统设置(电脑还原系统设置操作步骤)...
  10. 经纬度计算距离的公式