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

news2024/11/15 1:14:40

代码实战:图像融合

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

具体见注释。

import numpy as np
import cv2
import scipy.ndimage as ndimage

img = 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].shape
    merge=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.coloradmin.cn/o/731518.html

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

相关文章

JVM调优的相关命令

在进行JVM调试时,熟练使用Linux和Java命令是非常重要的,有利于我们快速发现问题,并进行解决。平时常用的命令有:Linux的Top、Top -Hp等;Java的Jps、Jinfo、Jstack、Jstat、Jmap、Jhat等。下面,我将逐一介绍…

【技能实训】Day01

文章目录 任务1 项目准备一、开发环境二、系统简介三、项目创建 任务2【任务2.1】菜单项设计及其测试【任务2.2】使用数组存储采集的数据【任务2.3】控制显示采集的数据 任务1 项目准备 一、开发环境 1.JDK8下载及其环境变量配置(JDK8以上版本) 2.IDE :Eclipse 或…

多边形连接器PolygonConnector

PolygonConnector将多个多边形连接在一起 PolygonConnectorTest用于测试PolygonConnector Polygon test_square; Polygon test_square_around

关于IIS安全设置http能访问https不能访问的解决方案

最近折腾IIS,发现网站的http能访问但是https不能访问。 我确认所有关于HTTPS的配置我都配置正确了,结果还是不能访问,一番折腾发现,服务器本身的防火墙和阿里云服务器的安全组规则不是一回事。改完防火墙也没有用,重要…

【前端】网页开发精讲与实战 HTML Day 1

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:前端 💬总结:希望你看完之后,能对你有…

OpenCV使用ellipse()函数来绘制一个椭圆

/*** void ellipse(* InputOutputArray img, // 图像* Point center, // 椭圆原心* Size axes, // 椭圆x轴长度的一半,y轴长度的一半* double angle, // 椭圆旋转角度* double startAngle, // 起始角度* double endAngle, // 终止角度* const Scalar& color, // 椭圆颜色*…

整数序列(山东大学考研机试题)

整数序列 题目链接:3717. 整数序列 - AcWing题库 /* 纯暴力 刚开始以为挺难的结果是个暴力题 */ #include<iostream> using namespace std; int main() {int n;cin>>n;int f0;for(int i1;i<n/2;i){int sum 0;for(int ji;j<n/21;j){sumj;if(sumn){f1;for(int…

手机怎么设置四小时后提醒我休息,防止疲劳驾驶?

很多开车的人都知道&#xff0c;连续驾驶4个小时后需要至少休息20分钟&#xff0c;否则很容易出现疲劳驾驶的情况。但在开车的时候需要专注&#xff0c;很容易忘记按时休息&#xff0c;手机怎么设置四小时后提醒我休息&#xff0c;防止疲劳驾驶呢&#xff1f; 其实使用一款支持…

开放式耳机是什么意思?开放式耳机和封闭式耳机哪个好?

开放式耳机相比传统入耳式耳机&#xff0c;开放式耳机不会堵塞耳道&#xff0c;使用时可以开放双耳&#xff0c;不影响与他人的正常交流。还有很多朋友问开放式耳机和封闭式耳机哪个好&#xff1f;开放式耳机有哪些推荐好&#xff1f;等问题。 开放式耳机作为一种新兴的蓝牙耳…

String的hashCode为什么选择31作为乘子?

目录 hashCode()源码val[i] 是中文怎么办&#xff1f;如果是中文char的整数值是多少&#xff1f;注释中的计算方法为什么不用更大的数&#xff0c;比如101作为乘数&#xff1f;为啥用31了&#xff1f; hashCode()源码 先看下String类的源码&#xff0c;31出现在hashCode()方法…

Window操作系统---屏蔽蓝牙绝对音量

绝对音量定义&#xff1a; 关闭绝对音量方法&#xff1a;在系统注册表里修改 在运行输入框中输入&#xff1a;regedit 设置方法&#xff1a; 把DisableAbsoluteVolume的值改为&#xff1a;1

解释齐次坐标和投影几何

以前的翻译文章&#xff0c;存档。翻译自&#xff1a;https://www.tomdalling.com/blog/modern-opengl/explaining-homogenous-coordinates-and-projective-geometry/&#xff0c; 有改动 在本文中&#xff0c;我将尽可能简单地解释齐次坐标(即4D坐标)。在之前的文章中&#xf…

【MySQL练习及单表查询】

一、MySQL练习 一.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09; name&#xff08;员工名字&#xff09; gender&#xff08;员工性别&#xff09; salary&#xff08;员工薪资&#xff09; 二.插入数据 1&…

C++primer(第五版)第十四章(重载运算与类型转换)

14.1基本概念 重载运算符和重载其他函数差不多,运算符有多少参数,那么重载运算符就有多少参数.不同的是重载运算符有名字方面的限制,是operator加上运算符号.且除了函数调用运算符()之外,不允许有默认实参. 以上其中逻辑与运算符,逻辑或运算符,逗号运算符,取地址运算符不推荐…

多元分类预测 | Matlab偏小二乘PLS分类预测,多特征输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab偏小二乘PLS分类预测,多特征输入模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出分类效果图,迭代优化图,混淆矩阵图。 部…

AutoHotkey配置鼠标光标在双屏幕之间瞬移

双屏幕带来的问题 使用双屏幕会带来两个问题&#xff1a;一个是窗口的切换移动不方便&#xff0c;另一个是鼠标的切换移动不方便。 如果需要将屏幕 A 的窗口快速移动到屏幕 B&#xff0c;可以用过 win shift 左右键来实现。 但是令人头疼的一个问题是鼠标还停留在屏幕 A&a…

Python 识别某验消消乐验证码

某验的消消乐验证码识别就很简单了,在一个九宫格里,找出相邻的两个元素交换后,保证有一行或者一列的元素相同,如下图: 如果这一个九宫格是一张图片的话,我们将其分割成9个部分,然后每一格都将其标注为一个类别就行,或者直接从源码中拿到9张图片,最终的话,是转成一个…

Devops系列六(CI篇之jenkinsfile)jenkins将gitlab helm yaml和argocd 串联,自动部署到K8S

一、为什么是jenkinsfile 上文我们说了pipeline&#xff0c;已为本文铺路不少&#xff0c;接下里就是将之串联起来。 先想说下&#xff0c;为什么是jenkinsfile, 因为jenkins job还支持pipeline方式。 这种方式&#xff0c;不建议实际使用&#xff0c;仅限于测试或调试groovy…

2 第一个springboot程序

2.1 创建springboot项目 有两种方法&#xff1a;一种是从官网上下载jar包&#xff0c;然后使用idea的import导入。另一种是直接在idea创建springboot项目。 2.1.1 方法一 进入spring官网&#xff08;Spring | Home&#xff09;。 点击projects的spring boot。 点击overview。 …

【java】空字符串“”和null区别,以及判空的方案

空字符串“” 1、类型&#xff1a;“”是一个空字符串&#xff08;String&#xff09;&#xff0c;长度为0&#xff0c;占内存&#xff0c;在内存中分配一个空间&#xff0c;可以使用Object对象中的方法。&#xff08;例如&#xff1a;“”.toString()等&#xff09; 2、内存分…