数字图像处理(实践篇)十四 图像金字塔

目录

一 图像金字塔

二 涉及的函数

三 实践


一 图像金字塔

        在某些情况下,需要处理不同分辨率的(相同)图像。比如,在图像中搜索某些目标(比如人脸)的时候,不确定该目标在所述图像中会以多大的大小出现。在这种情况下,就需要创建一组具有不同分辨率的相同图像,并在所有图像中搜索目标。这些具有不同分辨率的图像集称为图像金字塔最高分辨率的图像在底部,最低分辨率的图像在顶部,它看起来像一个金字塔)。

        图像金字塔有两种,分别是高斯金字塔拉普拉斯金字塔

  • ①高斯金字塔

        高斯金字塔中的较高层次(低分辨率)是通过删除较低层次(高分辨率)图像中的连续行和列而形成的。然后,较高层次的每个像素由底层水平中具有高斯权重的 5 个像素的贡献形成的。面积减少到原始面积的四分之一。换句话说,就是下采样。图像变小,分辨率降低。

        同理,在扩展时,每个级别中的面积变为 4 倍。即上采样。相对尺寸变大,但是分辨率不会增加,图像会变得更模糊。

        可以使用 cv2.pyrDown() 和 cv2.pyrUp() 函数实现高斯金字塔。

  • ②拉普拉斯金字塔

        拉普拉斯金字塔由高斯金字塔组成。没有专用功能。拉普拉斯金字塔图像仅与边缘图像类似。大部分元素都是零。它们用于图像压缩。

二 涉及的函数

pyrDown(src[, dst[, dstsize[, borderType]]]) -> dstpyrUp(src[, dst[, dstsize[, borderType]]]) -> dst

三 实践

①高斯金字塔

  • 代码
import numpy as np
import cv2
import matplotlib.pyplot as plt
def dealImg(img):b, g, r = cv2.split(img)img_rgb = cv2.merge([r, g, b])return img_rgb
def dealImageResult(img_path):im = cv2.imread(img_path)# 下采样im_down1 = cv2.pyrDown(im)im_down2 = cv2.pyrDown(im_down1)# 上采样img_up1 = cv2.pyrUp(im_down2)img_up2 = cv2.pyrUp(img_up1)fig = plt.figure(figsize=(8, 10))titles = ["img", " down1", "down2", "up1", 'up2']im = dealImg(im)im_down1 = dealImg(im_down1)im_down2 = dealImg(im_down2)img_up1 = dealImg(img_up1)img_up2 = dealImg(img_up2)images = [im, im_down1, im_down2, img_up1, img_up2]for i in range(5):plt.subplot(2, 3, i + 1), plt.imshow(images[i])plt.title("{}".format(titles[i]), color="green", fontsize=20, ha='center')# plt.xticks([]), plt.yticks([])plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.3, hspace=0)# plt.tight_layout()plt.show()fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':dealImageResult("2.jpg")pass
  • 结果图

注意:img不等于up2,虽然尺寸相同,但是因为一旦降低分辨率,就会丢失信息。可以看出up2的结果模糊了。

②拉普拉斯金字塔

  • 代码
import numpy as np
import cv2
import matplotlib.pyplot as plt
def dealImg(img):b, g, r = cv2.split(img)img_rgb = cv2.merge([r, g, b])return img_rgb
def dealImageResult(img_path):im = cv2.imread(img_path)# 下采样im_down = cv2.pyrDown(im)# 上采样img_up = cv2.pyrUp(im_down)# 拉普拉斯金字塔Lp = cv2.subtract(im, img_up)# 或者Lp_1 = im - img_upfig = plt.figure(figsize=(8, 10))titles = ["img", " im_down", "img_up", "Lp", 'Lp_1']im = dealImg(im)im_down = dealImg(im_down)img_up = dealImg(img_up)Lp = dealImg(Lp)Lp_1 = dealImg(Lp_1)images = [im, im_down, img_up, Lp, Lp_1]for i in range(5):plt.subplot(2, 3, i + 1), plt.imshow(images[i])plt.title("{}".format(titles[i]), color="green", fontsize=20, ha='center')# plt.xticks([]), plt.yticks([])plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.3, hspace=0)# plt.tight_layout()plt.show()fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':dealImageResult("2.jpg")pass
  • 结果图

注意:图像尺寸最好是 2 的整次幂,如 256,512 等等。否则的话,在金字塔向上的过程中图像的尺寸会不等,这会导致在拉普拉斯金字塔处理时由于不同尺寸矩阵相减操作而报错。

前文回顾

入门篇目录

 数字图像处理(入门篇)一 图像的数字化与表示

 数字图像处理(入门篇)二 颜色空间

 数字图像处理(入门篇)三 灰度化

 数字图像处理(入门篇)四 像素关系

 数字图像处理(入门篇)五 图像数据预处理之颜色空间转换

 数字图像处理(入门篇)六 图像数据预处理之坐标变化

 数字图像处理(入门篇)七 图像数据预处理之灰度变化

 数字图像处理(入门篇)八 图像数据预处理之直方图

 数字图像处理(入门篇)九 图像数据预处理之滤波

 数字图像处理(入门篇)十 边缘检测

 数字图像处理(入门篇)十一 形态学处理

 数字图像处理(入门篇)十二 自适应阈值分割

 数字图像处理(入门篇)十三 仿射变换

 数字图像处理(入门篇)十四 透视变换

实践篇目录

数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!

数字图像处理(实践篇)二 画出图像中目标的轮廓

数字图像处理(实践篇)三 将两张图像按照指定比例融合

数字图像处理(实践篇)四 图像拼接-基于SIFT特征点和RANSAC方法

数字图像处理(实践篇)五 使用Grabcut算法进行物体分割

数字图像处理(实践篇)六 利用hough变换进行直线检测

数字图像处理(实践篇)七 利用霍夫变换进行圆环检测

数字图像处理(实践篇)八 Harris角点检测

数字图像处理(实践篇)九 基于边缘的模板匹配

数字图像处理(实践篇)十 图像质量检测

数字图像处理(实践篇)十一 图像中的条形码解析

数字图像处理(实践篇)十二 基于小波变换的图像降噪

数字图像处理(实践篇)十三 数据增强之给图像添加噪声!

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

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

相关文章

java+springboot实验室管理系统的设计与实现ssm+jsp

课题研究内容: (1) 系统需求分析(构成模块,系统流程,功能结构图,系统需求) (2) 实验室课程安排功能模块(课程的录入和调补) &#xff…

netcore 获取应用程序或者站点根路径的一点知识和教训

最近在用abpvnext做报表导出,涉及到要在站点根目录生成pdf文件提供下载。于是就要获取站点根路径。 开头搜索资料提示用IWebHostEnvironment.ContentRootPath,来实现获取站点根目录。这个其实是正解。.netcore的通用规则,使用任何借口都是依…

世微 低功耗 PFM DC-DC 升压芯片 AP8105 干电池手持设备驱动IC

概述 AP8105 系列产品是一种高效率、低纹波、工作频率高的 PFM 升压 DC-DC 变换器。AP8105 系列产品仅需要四个外围元器件,就可完成将低输入的电池电压变换升压到所需的工作电压,非常适合于便携式 1~4 节普通电池应用的场合。电路采用了高性能…

2023.11.30 -hzmx电商平台建设项目05 - member会员主题建模开发

1.需求说明 1.11各类数据信息说明 说明:公司为了对不同会员进行不同的营销策略,对各类会员的数量都非常敏感,比如注册会员、消费会员、复购会员、活跃会员、沉睡会员。不仅需要看新增数量还要看累积数量。 9个指标:新增注册会员数,累计注册会员数(上一…

微服务--07--Seata 分布式事务

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 分布式事务1.认识Seata2.部署TC服务2.1.准备数据库表2.2.准备配置文件2.3.Docker部署 3.微服务集成Seata3.1.引入依赖3.2.改造配置3.3.添加数据库表3.4.测试 分布式…

Whisper

文章目录 使后感Paper Review个人觉得有趣的Log Mel spectrogram & STFT Trainingcross-attention输入cross-attention输出positional encoding数据 Decoding为什么可以有时间戳的信息 Test code 使后感 因为运用里需要考虑到时效和准确性,类似于YOLO&#xff…

用最少数量的箭引爆气球[中等]

优质博文:IT-BLOG-CN 一、题目 有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i] [xstart, xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直…

【开源视频联动物联网平台】帧率、码率和分辨率

帧率、码率和分辨率是视频和图像处理中的重要概念,它们直接影响到视频的带宽占用和显示效果。在进行视频项目时,根据应用需求对视频参数进行调整是必要的,因此了解这些参数的具体含义和指标是非常重要的。 在进行视频项目时,需要…

类 —— 继承、多重继承

继承 一个类,继承另一个已有的类。(在一个已存在的类的基础上建立一个新的类,并拥有其特性) 是一个父类(基类)派生出子类(派生类)的过程。 派生类往往是基类的具象化,基…

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy(门控融合策略)判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

WPF实战项目十九(客户端):修改RestSharp的引用

修改HttpRestClient,更新RestSharp到110.2.0,因为106版本和110版本的代码不一样,所以需要修改下代码 using Newtonsoft.Json; using RestSharp; using System; using System.Threading.Tasks; using WPFProjectShared;namespace WPFProject.S…

java springboot通过application配置文件生成随机值并控制范围

我们找到 项目的 application 配置文件 这里我们还是习惯用 yml格式的 我们在配置文件中 写出 ${random.} 的时候 他就会将所有可配置的随机类型都提示出来了 有 整数 长整星 字符串 uuid 这里 我们来个模板 testcase:book:id: ${random.int}name: ${random.value}date: ${r…