OpenCV学习(4.8) 图像金字塔

1.目的

在这一章当中,

  • 我们将了解图像金字塔。
  • 我们将使用图像金字塔创建一个新的水果,“Orapple”
  • 我们将看到这些功能: cv.pyrUp() , cv.pyrDown()

在通常情况下我们使用大小恒定的图像。但在某些情况下,我们需要使用不同分辨率的同幅图像。例如,在搜索图像中的某些内容如脸部信息时,并不确定该内容在图像中占据的大小。在这种情况下,我们需要创建一组不同分辨率的相同图像,并在所有图像中搜索该内容。这些不同分辨率的图像被称为图像金字塔(因为当它们堆叠排列时,底部为最高分辨率图像而顶部为最低分辨率图像,看起来像金字塔)。

图像金字塔有两种: 1)高斯金字塔和 2)拉普拉斯金字塔

通过去除较低级别图像(较高分辨率)中的连续行和列来形成高斯金字塔中的较高级别图像(较低分辨率)。较高级别图像的每个像素值由低一级别图像的 5 个像素值高斯加权得到,由此图像面积减少到原来的四分之一。这些图像被称为 Octave(组)。当我们在金字塔中上升时(即分辨率降低),重复相似的操作。同理,在金字塔中下降时,每个级别的图像面积大小为上一级的四倍。我们可以使用 cv.pyrDown() 和 cv.pyrUp() 函数获取高斯金字塔。

2. 图像金字塔

import cv2
import numpy as np
from matplotlib import pyplot as plt# 读取原始图像
image = cv2.imread(r'D:\study\EmotionDetection_RealTime-master\data\data\te\13.jpg', cv2.IMREAD_COLOR)# 创建图像金字塔
# 这里我们将创建三个层次的金字塔
pyramid_images = [image]
cv2.imshow('image',image)
downscaled_image = cv2.pyrDown(image)
cv2.imshow('downscaled_image',downscaled_image)upsampled_image = cv2.pyrUp(image)cv2.imshow('upsampled_image',upsampled_image)# 等待按键后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
2.1 cv2.pyrDown()

cv2.pyrDown()函数用于对图像进行下采样,即减少图像的分辨率。它通常用于创建图像金字塔的较低层次。下采样的具体过程是:

  1. 对图像进行高斯模糊。
  2. 将模糊后的图像沿水平方向和垂直方向各减半。

这样,原始图像的分辨率被降低了一半。

2.2 cv2.pyrUp()

cv2.pyrUp()函数用于对图像进行上采样,即增加图像的分辨率。它通常用于创建图像金字塔的较高层次。上采样的具体过程是:

  1. 将图像复制到一个新的尺寸更大的图像中。
  2. 在新图像的边缘填充零。
  3. 对新图像进行高斯模糊。

这样,原始图像的分辨率被提高了一倍。

原始图像的分辨率通常指的是图像在水平和垂直方向上的像素数量。这是图像的一个重要属性,因为它决定了图像的清晰度和细节水平。

例如,一个分辨率为1024x768的图像意味着图像在水平方向上有1024个像素,在垂直方向上有768个像素。这意味着图像的总面积是786432个像素(1024x768)。

分辨率通常以像素为单位表示,但也可以用其他单位,如英寸(inches)或厘米(centimeters)。在这种情况下,分辨率指的是每英寸或每厘米的像素数量。例如,一个分辨率为300dpi(dots per inch)的图像意味着每英寸有300个像素。

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

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

相关文章

node的安装

node是前端开发环境,所以运行前端程序需要安装和配置node 1. 下载安装node 去node官网选择你需要的版本进行下载 Node.js — Download Node.js (nodejs.org) ​ 下载到本地后一路点击next傻瓜式安装,安装成功后测试是否安装成功 node -v 显示node版…

几种数据集格式

在机器学习和计算机视觉领域,有多种数据集格式被广泛使用来存储和交换数据,尤其是图像数据。以下是一些常见的数据集格式: JSON (JavaScript Object Notation): 一种轻量级的数据交换格式,易于人阅读和编写,也易于机器…

【Ardiuno】使用ESP32网络功能调用接口数据(图文)

接着上文连通wifi后,我们通过使用HTTPClient库进行网络相关操作,这里我们通过http协议进行接口调用。 为了简化操作,这里使用了本地服务器上的文件作为接口,正常操作时会调用接口后,将服务器返回的数据进行解析&#…

白话解读网络爬虫

网络爬虫(Web Crawler),也称为网络蜘蛛、网络机器人或网络蠕虫,是一种自动化程序或脚本,被用来浏览互联网并收集信息。网络爬虫的主要功能是在互联网上自动地浏览网页、抓取内容并将其存储在本地或远程服务器上供后续处…

独孤思维:高考那段日子,我痛不欲生

今天是高考日。 回想自己当年高考的情景,还历历在目。 备考那段时间,每天没日没夜做卷子。 惴惴不安,每天焦虑,不得安宁。 当时还在想,高考完了以后,要怎么怎么玩,怎么怎么野。 但是真的到…

【模拟-BM99 顺时针旋转矩阵】

题目 BM99 顺时针旋转矩阵 描述 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵。 分析 模拟,写几个样例,分析一下新矩阵元素下标与原矩阵元素…

游戏心理学Day08

从本质上讲,游戏是对现实世界规律的简化和明晰化,并以此为基础,对现实世界进行建模。通过游戏,我们认识到艰苦的工作原来就是 幸福的来源,只要工作目标明确,充满挑战,反馈及时和充满社会化合作…

python记录之字符串

在Python中,字符串是一种非常常见且重要的数据类型,用于存储文本信息。下面,我们将对Python字符串进行深入的讲解,包括其基本操作、常见方法、格式化以及高级特性。 1. 字符串的创建 在Python中,字符串可以通过单引号…

编译原理-语法分析(实验 C语言)

语法分析 1. 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析 2. 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析 2.1 待分析的简单语言的语法 用扩充的BNF表示如下: …

牛客NC32 求平方根【简单 二分 Java/Go/C++】

题目 题目链接: https://www.nowcoder.com/practice/09fbfb16140b40499951f55113f2166c 思路 Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** para…

【python报错】TypeError: ‘dict_values‘ Object IsNot Subscriptable

【Python报错】TypeError: ‘dict_values’ object is not subscriptable 在Python中,字典(dict)提供了几种不同的视图对象,包括dict_keys、dict_values和dict_items。这些视图对象允许你以只读方式遍历字典的键、值或键值对。如果…

vue 创建一个新项目 以及 手动配置选项

【Vue】3.0 项目创建 自定义配置_vue3.0-CSDN博客

GPT-4o仅排第二!北大港大等6所高校联手,发布权威多模态大模型榜单!

多模态大模型视频分析能力榜单出炉: Gemini 1.5 Pro最强,GPT-4o仅排第二? 曾经红极一时的GPT-4V屈居第三。 3.5研究测试:hujiaoai.cn 4研究测试:askmanyai.cn Claude-3研究测试:hiclaude3.com 最近&#…

WordPress网站更换域名后如何重新激活elementor

在创建WordPress网站时,我们常常需要更改域名。但是,在更换域名后,你可能会遇到一个问题:WordPress后台中的Elementor插件授权状态会显示为不匹配。这时,就需要重新激活Elementor插件的授权。下面我会详细说明如何操作…

MySQL8 全文索引

文章目录 创建索引使用索引总结 创建索引 之前未尝试过使用MySQL8的全文索引,今天试一试看看什么效果,否则跟不上时代了都。   创建索引非常简单,写句SQL就行。 create table goods(id integer primary key auto_increment,name varchar(2…

编译原理-词法分析(实验 C语言)

编译原理-词法分析 1. 实验目的 设计、编写并调试一个词法分析程序,加深对词法分析原理的理解 2. 实验要求 2.1 待分析的简单语言的词法 关键字:begin,if,then,while,do,end 所有关键字都是…

前端如何封装自己的npm包并且发布到npm注册源

前言 在前端开发中,复用代码是一种常见且高效的实践。通过封装和发布自己的npm包,你可以轻松地在多个项目之间共享代码,并且贡献给社区。以下是一步一步指导你如何封装自己的npm包并发布到npm注册源。 步骤一:创建并设置项目 首…

智驾”IT运维,探索企业高效管理新航道——运维智慧驾驶舱

在信息化高速发展的今天,企业对于稳定、高效的IT运维管理需求日益迫切。运维智慧驾驶舱,作为新一代的运维解决方案,正以其独特的优势,引领着企业IT运维的新方向。当它与优秀的监控系统相结合时,比如监控易,…

28-unittest批量执行(discover)

unittest框架提供了创建测试用例、测试套件以及批量执行的解决方案。 利用单元测试框架创建测试类,可以把每个测试方法看成是一个最小的单元, 由测试容器组装打包起来,然后可以统一执行,最后输出测试报告。 一、UnitTest核心要素…

最新区块链论文速读--CCF A会议 CCS 2023 共25篇 附pdf下载(3/4)

Conference:ACM Conference on Computer and Communications Security (CCS) CCF level:CCF A Categories:network and information security Year:2023 Num:25 第1~7篇区块链文章请点击此处查看 第8~13篇区块链文…