传统图像处理之图像美化——图像金字塔

代码实战:图像融合

我将肯巴.沃克和约翰.沃尔融合在了一起。

具体见注释。

import numpy as np
import cv2
import scipy.ndimage as ndimageimg = cv2.imread("1.png")img1 = cv2.imread("2.png")img=cv2.resize(img,(192,192))
img1=cv2.resize(img1,(192,192))#降采样次数
step=3#高斯金字塔计算
girl1=img.copy()
gp1=[girl1]
for i in range(step):girl1=cv2.pyrDown(girl1)gp1.append(girl1)girl2=img1.copy()
gp2=[girl2]
for i in range(step):girl2=cv2.pyrDown(girl2)gp2.append(girl2)#拉普拉斯金字塔计算
lp1=[gp1[step]]
for i in range(step):GE=cv2.pyrUp(gp1[step-i])L=cv2.subtract(gp1[step-i-1],GE)lp1.append(L)lp2=[gp2[step]]
for i in range(step):GE=cv2.pyrUp(gp2[step-i])L = cv2.subtract(gp2[step - i - 1], GE)lp2.append(L)#合并
merges=[]
for i in  range(step+1):w,h,d=lp1[i].shapemerge=np.hstack((lp1[i][:,0:w//2-10//2**i],lp2[i][:,w//2-10//2**i:]))merges.append(merge)#将合并的图像进行拉普拉斯金字塔法拼接
merge=merges[0]
for i in range(step):merge=cv2.pyrUp(merge)merge=cv2.add(merge,merges[i+1])cv2.imshow("0",img)
cv2.imshow("1",img1)
cv2.imshow("2",merge)cv2.waitKey(0)

拉普拉斯金字塔就是记录高斯金字塔每一级下采样后再上采样与下采样前的差异,目的是为了能够完整的恢复出每一层级的下采样前图像。下面的公式就是前面的差异记录过程:

 

step=3

step=5

 

好像效果变好了? 

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

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

相关文章

BERT 论文精读与理解

1.论文题目 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 2.论文摘要 本文引入了一种名为 BERT 的新语言表示模型,它代表 Transformers 的双向编码器表示。与最近的语言表示模型(Peters et al., 2018a&#xf…

DRF+Vue.JS前后端分离项目实例(上):使用 Django-Rest-Framework快速实现 RESTful API 接口编程

1. RESTFul API 接口需求及设计 本文以学生信息查询功能为例,采用前后端分离架构,要求后端提供RESTFul 接口。 1.1 本例要求提供如下查询功能: 列表查询、单条查询添加学生信息更改学生信息删除学生信息 1.2 数据库student表结构如下&…

本地部署 ChatPPT

本地部署 ChatPPT 1. 什么是 ChatPPT2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 ChatPPT6. 运行 ChatPPT 1. 什么是 ChatPPT ChatPPT由chatgpt提供支持,它可以帮助您生成PPT/幻灯片。支持中英文输出。 2. Github 地址 https://github.com/huimi24/…

开发中易犯错的事务问题

1.不指定rollbackFor 使用spring的声明式事务(即Transactional注解)时,如果不指定rollbackFor,那么当程序发生Error时,事务将不会回滚!!!显然这将导致数据不一致! 如下述…

动态规划--Fibonacci数列 III

描述 众所周知,Fibonacci数列是一个著名数列。它的定义是: 本题要求采用第三种方法:简单的动态规划。 用数组把求出来的 Fibonacci 数列保存下来,以免后面要的时候再算一次。 输入描述 每行一个整数 i ,表示 Fibona…

Linux C程序开发,多线程编程、网络编程

目录 多线程编程 网络编程 Linux C程序开发是指在Linux操作系统下使用C语言进行开发的过程。Linux是一种开源的操作系统,具有稳定性、安全性和灵活性等优点,因此在很多领域都得到了广泛的应用。 多线程编程 多线程编程是指在一个程序中同时运行多个线…

Neo4J 特性CQL语句,函数,Springboot集成

Neo4J Neo4J Neo4J一、Neo4J相关介绍1.为什么需要图数据库方案1:Google方案2:Facebook 2.特性和优势3.什么是Neo4j4.Neo4j数据模型图论基础属性图模型Neo4j的构建元素 5.软件安装 二、CQL语句1.CQL简介2.CREATE 命令3.MATCH 命令4.RETURN 子句5.MATCH和R…

Spark—通过Java、Scala API实现WordCount案例的基本操作

实验原理 Spark的核心就是RDD,所有在RDD上的操作会被运行在Cluster上,Driver程序启动很多Workers,Workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),然后对RDD在…

FreeRTOS ~(七)互斥量 ~ (1/3)互斥量解决互斥缺陷

前情提要 FreeRTOS ~(四)同步互斥与通信 ~ (2/3)互斥的缺陷 FreeRTOS ~(五)队列的常规使用 ~ (2/5)队列解决互斥缺陷 FreeRTOS ~(六)信号量 ~ (2/…

文字磨练课程:提高编辑和校对效率的方法

提高编辑和校对效率,可以使你更有效地完成写作任务,提升文章质量。以下是一些方法,可以帮助你在编辑和校对过程中提高效率。 1.设定目标和计划 在开始编辑和校对前,设定明确的目标和计划。这可以帮助你集中注意力,提…

瑞芯微:基于RKNN3568得ufldv2部署

Lane检测是自动驾驶和高级驾驶员辅助系统(ADAS)的基本组成部分,用于区分和定位道路上的车道线。尽管深度学习模型已经取得了巨大成功,但仍有一些重要且具有挑战性的问题需要解决。 第一个问题是效率问题。在实践中,车…

从JDK源码级别剖析JVM类加载机制

1 什么是Java虚拟机 一个可执行java字节码的虚拟机进程;跨平台的是java程序,而不是java虚拟机,java虚拟机在各个操作系统是不兼容的,例如windows、linux、mac都需要安装各自版本的虚拟机,java虚拟机通过jdk实现功能。…