计算机视觉——图像金字塔理解与代码示例

图像金字塔

有时为了在图像中检测一个物体(例如人脸、汽车或其他类似的物体),需要调整图像的大小或对图像进行子采样,并进行进一步的分析。在这种情况下,会保持一组具有不同分辨率的同一图像。称这种集合为图像金字塔。之所以称之为金字塔,是因为当按分辨率降序排列这些图像时,会形成一个以正方形为底的金字塔形状。下面的图片可以帮助你更详细地理解这个概念。
在这里插入图片描述
新层的面积将是下面层的1/4。如果底层图像(高分辨率或第0层)的大小是M x N,那么它上面的层的大小将是(M/2 x N/2)。其中图层越高,尺寸越小。
在一些著名的CNN神经网络中(如ResNet、YOLO、SSD等),它们都使用了图像金字塔获取输入图像的特征。
在这里插入图片描述

高斯金字塔

高斯金字塔是SIFT算法中引入的概念。实际上,高斯金字塔并不是一个金字塔,而是由多个组(Octave)金字塔组成,每个组金字塔包含多个层(Interval)。

构建高斯金字塔的过程如下:

  1. 首先,将原始图像放大一倍,作为高斯金字塔的第一组的第一层。然后,对第一组的第一层图像进行高斯平滑(也称为高斯滤波),得到第一组金字塔的第二层。高斯卷积函数如下所示:

在这里插入图片描述

在SIFT算法中,参数σ取固定值1.6。

  1. 接下来,将σ乘以一个比例系数k,得到新的平滑因子σ= k * σ,然后使用该因子对第一组的第二层图像进行平滑处理,得到第一组的第三层。

  2. 重复以上步骤,直到得到L层图像。在同一组内,每层图像的尺寸相同,但平滑系数不同。它们的平滑系数分别为:0,σ,kσ,k2σ,k3σ,……,k^(L-2)σ。

  3. 将第一组的倒数第三层图像进行比例因子为2的降采样,得到第二组的第一层。然后对第二组的第一层图像进行σ的高斯平滑处理,得到第二组的第二层,类似于步骤2。重复此过程,得到第二组的L层图像。在同一组内,它们的尺寸相同,但在不同组之间,第二组的图像尺寸是第一组图像尺寸的一半。

通过反复执行以上步骤,可以得到O组金字塔,每组包含L层,共计O*L个图像。这些图像一起构成了高斯金字塔。

在同一组内,不同层图像的尺寸相同,后一层图像的平滑系数是前一层图像平滑系数的k倍。在不同组之间,后一组的第一个图像是前一组倒数第三个图像的二分之一采样,尺寸是前一组的一半。

缩减或下采样

高斯金字塔中的缩减操作是根据下面给出的关系进行的。
在这里插入图片描述
这里的l代表层级,w(m,n)是窗口函数(高斯)。缩减操作与卷积操作的唯一区别是,在卷积操作中,步长值为1,而在缩减操作中步长值为2。用高斯掩模与每一行和每一列交替进行卷积。

window=5
offset= window//2
gwindow =gkern(window,1.4)
row,col = gray_img.shape
if row%2==0:
    h = row-offset
else:
    h = row-offset-1
if col%2==0:
    w = row-offset
else:
    w = row-offset-1
nextLevel= np.zeros((w//2-1,h//2-1))
for i in range(2, w):
    for j in range(2, h):
        if j%2==0 and i%2==0:
            patch = gray_img[i-offset:i+offset+1,j-offset:j+offset+1]
            psum= np.dot(patch,gwindow).sum()
            nextLevel[(i//2)-1,(j//2)-1] = psum

opencv 实现

lowResImage = cv2.pyrDown(highResImage)

扩展或上采样

高斯金字塔中的扩展操作是根据下面给出的关系进行的。为了更清楚地理解上面的关系,让我们在一维情况下展开上面的公式。
在这里插入图片描述
上面的公式中的非整数值最终将被消除,最终公式将只有三个项。
在这里插入图片描述

上面的图片中的a、b、c、d和e项是一维中的高斯权重。在扩展操作中,新像素是通过不同的高斯权重组合从旧像素创建的。
在这里插入图片描述

highResImage = cv2.pyrUp(lowResImage)

拉普拉斯金字塔

在这里插入图片描述
在高斯金字塔中,首先对图像应用高斯模糊,然后进行子采样以降低分辨率。这一过程在每个后续层级上重复进行,从而构建出一个由多个分辨率逐渐减小的图像层组成的金字塔结构。

而在拉普拉斯金字塔中,首先创建一个高斯金字塔,然后通过对每个高斯层级的应用拉普拉斯算子来构建。拉普拉斯算子,也就是拉普拉斯-高斯(LoG)算子,用于突出图像中的边缘和高频细节。这与Marr-Hildreth边缘检测器中使用的概念相似,该检测器利用LoG来识别图像中的边缘。

实际上,拉普拉斯金字塔是通过从高斯金字塔的每个层级中减去其下一层级上采样后的图像来创建的。这个过程在下面的公式中有所体现:

L i = G i − u p s a m p l e ( G i + 1 ) L_{i} = G_{i} - upsample(G_{i+1}) Li=Giupsample(Gi+1)

其中 L i L_{i} Li 是拉普拉斯金字塔的第 i i i层, G i G_{i} Gi 是高斯金字塔的第 i i i层, u p s a m p l e upsample upsample是上采样操作。

通过这种方法,可以生成拉普拉斯金字塔的每一层,从而捕获图像的不同尺度的细节信息。这在图像处理和计算机视觉中非常有用,尤其是在需要对图像进行多尺度分析的应用中,如图像融合、纹理分析和特征提取等。

OpenCV代码实现

import cv2
import numpy as np

def laplacian_pyramid(image, levels):
    pyramid = [image]
    for _ in range(levels):
        image = cv2.GaussianBlur(image, (5, 5), 0)
        downsampled = cv2.pyrDown(image)
        expanded = cv2.pyrUp(downsampled)
        diff = cv2.subtract(image, expanded)
        pyramid.append(diff)
        image = downsampled
    return pyramid

# Example usage
image = cv2.imread('input_image.jpg', cv2.IMREAD_GRAYSCALE)
levels = 4
laplacian_pyr = laplacian_pyramid(image, levels)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析实战】印尼雅加达咖啡市场分析:品牌排名与市场趋势解读

目录 背景介绍数据展示数据分析可视化1. 各市咖啡店占比:1.1 可视化代码1.2 可视化结果1.3 浅薄解读 2. 品牌市场份额排名:2.1 可视化结果1.2 浅薄解读 3. 品牌消费者满意指数:3.1 可视化代码3.2 可视化结果3.3 浅薄解读 写在最后 背景介绍 …

03 Python进阶:MySQL - mysql-connector

mysql-connector安装 要在 Python 中使用 MySQL 数据库,你需要安装 MySQL 官方提供的 MySQL Connector/Python。下面是安装 MySQL Connector/Python 的步骤: 首先,确保你已经安装了 Python,如果没有安装,可以在 Python…

Flutter应用版本管理与更新策略:在苹果商店上架后的持续优化

引言 Flutter是一款由Google推出的跨平台移动应用开发框架,其强大的性能和流畅的用户体验使其备受开发者青睐。然而,开发一款应用只是第一步,将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上…

Linux下Nginx详解

1、概念 1.1 介绍 Nginx是一个高性能的开源Web服务器软件,也可以用作反向代理服务器、负载均衡器和HTTP缓存。它的设计目标是高性能、稳定性、丰富的功能和低资源消耗。 1.2 应用场景 Web服务器:Nginx可以作为静态资源服务器,处理静态文件…

uniapp选择退出到指定页面

方法一:返回上n层页面 onUnload(){uni.navigateBack({delta:5,//返回上5层})},方法二:关闭当前页面,跳转到应用内的某个页面。 uni.redirectTo({url: "../home/index"//页面地址}) 方法三:关闭所有页面,打…

(2024)Ubuntu源码安装多个版本的opencv并切换使用

本人工作会用到x86_64的opencv和aarch64的opencv,所以写下来备忘自用 一、源码编译安装 依赖库安装: sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev o…

图论(Graph theory)

抽象数据结构类型 Graphic操作接口 操作接口功能描述操作接口功能描述e()获取图的总边数n()顶点的总数exits(v,u)判断v,u两个顶点是否存在边insert(v) 在顶点集 V 中插入新顶点 v remove(v,u)删除从v 到u的 关联边 remove(v) 将顶点 v 从顶点集中删除 type(v,u)边所属的类型(…

特征增强自蒸馏卷积神经网络

目录 1.1 模型总体架构 1.2 特征增强金字塔模块 1.3 辅助分类器 1.1 模型总体架构 与自然图像相比,遥感场景图像地物较为复杂,具有类间相似度高和类内差异大的特点,这导致常用的网络模型难以有效学习遥感场景图像的表征特征。此外&#xf…

使用Python获取红某书笔记详情并批量无水印下载

根据红某手最新版 请求接口必须要携带x-s x-s-c x-t,而调用官方接口又必须携带cookie,缺一不可,获取笔记详情可以通过爬取网页的形式获取,虽然也是无水印,但是一些详情信息只能获取大概,并不是详细的数值,因此既不想自己破解x-s x…

【Qt】Ubuntu20.04.6+Qt5.15.2+QtCreator10.0.1无法输入中文

1、前提条件 1)已经安装了fcitx sudo apt install fcitx sudo apt install fcitx-pinyin sudo apt install fcitx-bin fcitx-table-all sudo apt install fcitx-qt52)系统已经配置fcitx 3)将系统下 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx…

Pygame基础11-mask 蒙版

蒙版 蒙版是二值化的图像,每个像素的值只能是0或1。 mask(蒙版)的用途: 碰撞检测部分着色 案例 和字母的碰撞检测 当玩家碰到字母 α \alpha α时,改变玩家颜色为绿色,否则为红色。 注意:我们希望碰到字母 α \alp…

c语言--联合体(声明、特点、计算)

目录 一、联合体类型的声明二、 联合体的特点三、 相同成员的结构体和联合体对比四、 联合体大小的计算 一、联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。…

游戏引擎中的物理应用

一、 角色控制器 Character Controller和普通的动态对象(Dynamic Actor )是不同的,主要的三个特点是: 它拥有可控制的刚体间的交互假设它是有无穷的摩擦力(可以站停在位置上),没有弹性加速和刹车几乎立即…

2023最新汽车网络安全报告汇总

2023最新汽车网络安全报告、安全参考架构及指南汇总,供大家学习参考。https://t.zsxq.com/18RkG260k 汽车信息安全法律法规及标准全景图V3.2.pdf 车载智能计算基础平台参考架构2.0.pdf 车载智能计算芯片白皮书(2023版).pdf 智能驾驶行为安全评价方法发布版.pdf 智能…

C#实现只保存2天的日志文件

文章目录 业务需求代码运行效果 欢迎讨论! 业务需求 在生产环境中,控制台窗口不便展示出来。 为了在生产环境中,完整记录控制台应用的输出,选择将其输出到文件中。 但是,存储所有输出的话会占用很多空间,…

Docker 部署开源远程桌面工具 RustDesk

RustDesk是一款远程控制,远程协助的开源软件。完美替代TeamViewer ,ToDesk,向日葵等平台。关键支持自建服务器,更安全私密远程控制电脑!官网地址:https://rustdesk.com/ 环境准备 1、阿里云服务器一 台&a…

ChatGPT全方位解析:如何培养 AI 智能对话技能?

简介 ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。 和 ChatGPT 沟通也是同样的道理,如果想要C…

【论文阅读笔记】SAM-Adapter: Adapting Segment Anything in Underperformed Scenes

1.论文介绍 SAM-Adapter: Adapting Segment Anything in Underperformed Scenes SAM适配器:在表现不佳的场景中适配任何片段 2023年 ICCV Paper Code SAM Fails to Segment Anything? – SAM-Adapter: Adapting SAM in Underperformed Scenes: Camouflage, Shado…

5.5G,只比6G少0.5G

5.5G成为通信行业2024年开年的一大焦点。提到5.5G,多出来的0.5G又是啥?为什么不直接迈向6G时代?今天我们一探究竟! “0.5G”,现在与未来的桥梁 2021年,国际标准组织3GPP为通信技术的进一步发展定义了新的里…

云上百世慧 | 达索系统电池行业智能制造解决方案

当今诸多电池厂商快速成长的同时也面临诸多挑战: ※ 如何获得实时、数据驱动的KPI来衡量生产率? ※ 如何更好地管理生产线、物料流和周期时间? ※ 如何增强整个生产系统并推动实时制造流程? 达索系统专家通过实际案例&#xf…