当前位置: 首页 > news >正文

opencv-图像金字塔

图像金字塔是一种图像处理技术,它通过不断降低图像的分辨率,形成一系列图像。金字塔分为两种类型:高斯金字塔和拉普拉斯金字塔

  1. 高斯金字塔(Gaussian Pyramid):

高斯金字塔是通过使用高斯滤波和降采样(缩小)操作构建的。每一层的图像都是前一层图像的一部分。在OpenCV中,可以使用cv2.pyrDown()cv2.pyrUp() 函数构建高斯金字塔。

  • cv2.pyrDown(src[, dst[, dstsize[, borderType]]]): 通过高斯内核进行降采样,缩小图像。
  • cv2.pyrUp(src[, dst[, dstsize[, borderType]]]): 通过插值进行升采样,放大图像。

示例代码:

import cv2# 读取图像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")# 构建高斯金字塔
layer = img.copy()
gaussian_pyramid = [layer]for i in range(6):layer = cv2.pyrDown(layer)gaussian_pyramid.append(layer)# 显示原始图像和金字塔图像
cv2.imshow('Original Image', img)for i in range(6):cv2.imshow(f'Layer {i+1}', gaussian_pyramid[i])# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

  1. 拉普拉斯金字塔(Laplacian Pyramid):

拉普拉斯金字塔是由高斯金字塔构建而来的,每一层都是其高斯金字塔层与其扩展(上采样)版本的差。在OpenCV中,可以使用cv2.subtract() 函数构建拉普拉斯金字塔。

示例代码:

 
import cv2# 读取图像
img = cv2.imread(r"C:\Users\mzd\Desktop\opencv\images.jpg")
# 构建高斯金字塔
layer = img.copy()
gaussian_pyramid = [layer]for i in range(6):layer = cv2.pyrDown(layer)gaussian_pyramid.append(layer)# 构建拉普拉斯金字塔
laplacian_pyramid = [gaussian_pyramid[5]]for i in range(5, 0, -1):gaussian_expanded = cv2.pyrUp(gaussian_pyramid[i])# Ensure the sizes match before subtractionif gaussian_pyramid[i-1].shape[:2] == gaussian_expanded.shape[:2]:laplacian = cv2.subtract(gaussian_pyramid[i-1], gaussian_expanded)laplacian_pyramid.append(laplacian)else:print(f"Size mismatch in level {i}.")break# 显示原始图像、高斯金字塔和拉普拉斯金字塔
cv2.imshow('Original Image', img)for i in range(min(6, len(laplacian_pyramid))):  # Ensure loop doesn't go out of rangecv2.imshow(f'Laplacian Layer {i}', laplacian_pyramid[i])# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

这里构建了一个6层的高斯金字塔,然后使用高斯金字塔构建拉普拉斯金字塔。拉普拉斯金字塔的每一层都包含了对应层高斯金字塔的细节信息。金字塔的构建在图像处理中常用于图像融合、图像金字塔匹配等应用。

相关文章:

  • HTML5+ API 爬坑记录
  • Linux基础命令5
  • 时序预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测
  • 关于前端处理后端轮询的操作 (总结)
  • 项目整个管理论文之5
  • 如何解决requests库自动确定认证arded 类型
  • 搭配:基于OpenCV的边缘检测实战
  • 3D火山图绘制教程
  • 基于qemu_v8+optee 3.17平台的ca/ta Demo
  • linux上的通用拍照程序
  • Hook+jsdom 解决cookie逆向
  • ECharts与Excel的结合实战
  • 【Mysql学习笔记】3 - 本章作业
  • 微信小程序image组件图片设置最大宽度 宽高自适应
  • JavaEE(SpringMVC)期末复习
  • Linux Process Manage
  • Logstash 参考指南(目录)
  • Mocha测试初探
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • nginx 负载服务器优化
  • spring + angular 实现导出excel
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vuex 学习笔记 01
  • 从tcpdump抓包看TCP/IP协议
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 为什么要用IPython/Jupyter?
  • ​secrets --- 生成管理密码的安全随机数​
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (solr系列:一)使用tomcat部署solr服务
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (循环依赖问题)学习spring的第九天
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net CHARTING图表控件下载地址
  • .NET/C# 使用反射注册事件
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .net连接oracle数据库
  • @media screen 针对不同移动设备
  • @requestBody写与不写的情况
  • @RequestMapping 的作用是什么?
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Android 数据通信] android cmwap接入点
  • [ARC066F]Contest with Drinks Hard
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C/C++]数据结构 栈和队列()