首页 > 其他分享 >opencv学习笔记(七)

opencv学习笔记(七)

时间:2023-06-21 22:33:13浏览次数:31  
标签:采样 down img cv2 笔记 学习 opencv 图像 金字塔

图像金字塔:
用于图像的分辨率降低。它通过连续的图像平滑和下采样操作来生成一系列分辨率逐渐降低的图像。

构建过程:

  1、将原始图像作为底层

  2、应用高斯滤波器对当前的图像进行平滑处理,以减少图像中的高频细节。高斯滤波器通过卷积运算在图像上进行平滑操作,使得图像变得更加模糊。

  3、对平滑后的图像进行下采样(降采样),即将图像的分辨率减小一倍。下采样操作将原始图像分成更小的图像块,每个块代表上一层的一个像素。

  4、下采样后的图像成为金字塔的下一层,称为上一层的子层(sublevel)。重复步骤2和步骤3,生成更低分辨率的图像子层,直到达到金字塔的顶层。

  5、重复上述过程,每次处理的图像尺寸减半,直到达到金字塔的顶层或满足特定条件。(下采样)

#分为高斯金字塔和拉普拉斯金字塔
#高斯金字塔:向下采样(缩小):1:将gi和高斯内核卷积,2:将所有偶数行去掉
#高斯金字塔:向上采样(放大):1:将图像再每个方向扩大为原来的两倍,新增的行和列以0填充;2:使用先前同样的内核与放大后的图像卷积,获得近似值e
import cv2
img = cv2.imread('C:/Users/hellou/Desktop/self-image.jpg',cv2.IMREAD_GRAYSCALE)
img = cv2.resize(img,(600,600))
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

#向上采样
up = cv2.pyrUp(img)
print(up.shape)
cv2.imshow('up',up)
cv2.waitKey(0)
cv2.destroyAllWindows()

down = cv2.pyrDown(img)
print(down.shape)
cv2.imshow('down',down)
cv2.waitKey(0)
cv2.destroyAllWindows()
#先上采样,后下采样,图片和原图不会相同;先下采样,后上采样同理

拉普拉斯金字塔:
构建过程:
  1、原始图像作为金字塔底层;

  2、对底层图像以用高斯滤波器进行平滑,生成平滑后的图像;

  3、对平滑后的图形进行采样(降采样),生成下一层的图像,这一层称为高斯金字塔的子层;

  4、降子层上采样至与上一层的尺寸相同,得到上一层的重建图像;

  5、计算上一层的重建图像与原始图像之间的差异,得到该层的细节图像;

  6、重复步骤2至5,生成更高层级的细节图象和重建图像,直到达到金字塔的顶层。

"""拉普拉斯金字塔:
1、低通滤波,2、缩小尺寸(down),3、放大尺寸(up),4、图像相减"""
down = cv2.pyrDown(img)
down_up = cv2.pyrUp(down)
I_1 = img-down_up
cv2.imshow("I_1",I_1)
cv2.waitKey(0)
cv2.destroyAllWindows()

在拉普拉斯金字塔中,由于减小分辨率和图像大小而导致的细节丢失可以找回

标签:采样,down,img,cv2,笔记,学习,opencv,图像,金字塔
From: https://www.cnblogs.com/hellou/p/17497237.html

相关文章

  • 外设驱动库开发笔记54:外设库驱动设计改进的思考
      不知不觉中我们已经发布了五十多篇外设驱动的文章。前段时间有一位网友提出了一些非常中肯的建议,这也让我们开始考虑怎么优化驱动程序设计的问题。在这一篇中我们将来讨论这一问题。1、问题分析  首先我们来分析一下网友提出的几点问题。第一点是说在驱动设计时,使用了type......
  • 最近公共祖先-算法学习
    问题提出如何计算树上任意两点x和y的最近公共祖先呢?通俗地理解-假设在一棵二叉树中,有两个节点和那么该如何求这两个节点的最近公共祖先节点如下图,节点和节点的最近公共祖先节点是思路解析假设一个节点的深度为,这可以通过一次DFS预处理出来。那么这里如何进行预处理呢?单......
  • 现代C++学习指南-具体类
    类作为C++中重要的概念之一,有着众多的特性,也是最迷人的部分!类是一个加工厂,开发者使用C++提供的各种材料组装这个工厂,使得它可以生产出符合自己要求的数据,通过对工厂的改造,可以精细控制对象从出生到死亡的各种行为,真正达到我的代码我做主的境界。类我们经常说的面向对象三大特......
  • opencv学习笔记(六)
    Canny边缘检测:图片必须先转换为灰度图像主要步骤:1、噪声抑制:使用高斯滤波器,对图像进行平滑处理;2、计算梯度:计算每个像素点的梯度强度和方向;3、非极大值抑制:在梯度方向上,对梯度幅值进行非极大值抑制,保留局部最大值点作为候选边缘;4、双阈值检测:根据设定的高阈......
  • 机器学习-解决几乎任何机器学习问题路径
    本书介绍    在处理机器学习问题时,通常有两种类型的数据(和机器学习模型)    监督数据:总是有一个或多个目标与之相关联。    无监督数据:没有任何目标变量。    有监督的问题比无监督的问题更容易解决。要求预测一个值的问题被称为监督问题。例如,如果问题是预测给......
  • 机器学习基础-统计学习与数据分析介绍
    本书介绍    本入门级统计教科书主要讲解发展和培养统计思维所需的基本概念和工具。它提供了描述性,归纳性和探索性的统计方法,并指导读者完成定量数据分析的过程。在实验科学和跨学科研究中,数据分析已成为任何科学研究的组成部分。诸如判断数据的可信度,分析数据,评估所获得结果的......
  • 2021最新深度学习自然语言处理模型及原理细节汇编
        本简书整理了基于深度学习模型的自然语言处理(NLP)的模型研究的最新趋势。它涵盖了深度学习模型(如递归神经网络(RNN),卷积神经网络(CNN)和强化学习)背后的理论描述和实现细节,用于解决各种NLP任务和应用常见。本简书包含NLP任务(例如机器翻译,问题解答和对话系统)的最新研究进展。  ......
  • Linux 学习笔记
    Linux学习笔记Linux目录结构了解Linux的目录结构有助于我们管理Linux系统。目录作用/binbin是Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命令。/boot这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/devdev......
  • VINS-Fusion学习笔记(一)
    1.operator的用法c++工程文件结构:test.h具体:#include<iostream>usingnamespacestd;classV_3d{public: doublex,y,z; V_3d(doublex_,doubley_,doublez_):x(x_),y(y_),z(z_) { cout<<x<<","<<y<<","<<z<......
  • 自然语言处理中的深度学习研究
    目录1.引言2.技术原理及概念3.实现步骤与流程4.应用示例与代码实现讲解4.1.应用场景介绍4.2.应用实例分析4.3.核心代码实现4.4.代码讲解说明自然语言处理是人工智能领域的重要分支,研究的重点包括语音识别、机器翻译、文本生成等。深度学习是自然语言处理中的主流算法之一......