当前位置: 首页 > 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层的高斯金字塔,然后使用高斯金字塔构建拉普拉斯金字塔。拉普拉斯金字塔的每一层都包含了对应层高斯金字塔的细节信息。金字塔的构建在图像处理中常用于图像融合、图像金字塔匹配等应用。

http://www.lryc.cn/news/240534.html

相关文章:

  • 字符串匹配算法——KMP
  • 电子学会C/C++编程等级考试2023年03月(一级)真题解析
  • 微信小程序汽车租赁系统
  • docker部署微服务
  • 统计voc格式数据中的xml标签、bndbox到excel表格中
  • 51单片机利用I/O口高阻状态实现触摸控制LED灯
  • 自动驾驶术语汇总
  • Jsonpath - 数据中快速查找和提取的强大工具
  • java中,通过替换word模板中的关键字后输出一个新文档
  • MySQL数据库约束你真的懂吗?
  • YOCTO 下载repo工具失败解决办法
  • github连接失败Host key verification failed.解决方案
  • 【TIDB】TiDB认证考试PTCA 练习题 题库
  • PPP/INS紧组合算法
  • c++ 演讲比赛流程管理系统 / from.黑马
  • 【shell】 1、bash语法超详细介绍
  • 华清远见嵌入式学习——网络编程——作业3
  • 前端学习--React(3)
  • rotation matrix reflection matrix
  • Python基础教程: sorted 函数
  • Vue 重写push和replace方法,解决:Avoided redundant navigation to current location
  • 43、vue导出pdf文件,并解决滚动条外内容无法获取的问题
  • 牛客 最小公配数 golang版实现
  • 用 HLS 实现 UART
  • 华清远见嵌入式学习——网络编程——作业4
  • 【OpenCV实现图像:制作酷炫的动画效果】
  • CSS鼠标属性篇
  • 交直流一体化电源系统测试步骤详解
  • 多数据库使用django-apscheduler时,migrate后并不能生成django_apscheduler_djangojob表的问题
  • SPS简单对应分析