计算机视觉——图像金字塔与目标图像边缘检测原理与实践

news2025/4/21 13:25:19

一、两个图像块之间的相似性或距离度量

1.1 平方差和(SSD)

平方差和(SSD) 是一种常用的图像相似性度量方法。它通过计算两个图像在每个对应位置的像素值差的平方和来衡量两个图像之间的整体差异。如果两个图像在每个位置的像素值完全相同,SSD 将为零,表明这两个图像是完全相同的。而如果像素值存在差异,SSD 将是一个非零值,表明这两个图像存在差异。

例如,假设我们有两个图像块 ( I_1 ) 和 ( I_2 ),它们的像素值分别为:

I 1 = [ 1 2 3 4 ] , I 2 = [ 1 2 3 5 ] I_1 = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad I_2 = \begin{bmatrix} 1 & 2 \\ 3 & 5 \end{bmatrix} I1=[1324],I2=[1325]

那么,它们的 SSD 可以计算为:

S S D = ( 1 − 1 ) 2 + ( 2 − 2 ) 2 + ( 3 − 3 ) 2 + ( 4 − 5 ) 2 = 1 SSD = (1-1)^2 + (2-2)^2 + (3-3)^2 + (4-5)^2 = 1 SSD=(11)2+(22)2+(33)2+(45)2=1

SSD 的缺点在于它对图像的平均强度非常敏感。例如,如果两个图像的整体亮度不同,即使它们的结构相似,SSD 也会产生较大的值。如下图所示:

SSD 对平均强度敏感

1.2 归一化交叉相关(NCC)

归一化交叉相关(NCC) 是一种更为鲁棒的图像相似性度量方法。它通过先对两个图像的像素值进行归一化处理,然后计算它们之间的交叉相关性。归一化过程可以有效消除两个图像之间整体强度差异的影响,使 NCC 对强度变化更具鲁棒性。

NCC 的计算公式为:

N C C = ∑ i = 1 n ( I 1 ( i ) − I 1 ˉ ) ( I 2 ( i ) − I 2 ˉ ) ∑ i = 1 n ( I 1 ( i ) − I 1 ˉ ) 2 ∑ i = 1 n ( I 2 ( i ) − I 2 ˉ ) 2 NCC = \frac{\sum_{i=1}^{n} (I_1(i) - \bar{I_1})(I_2(i) - \bar{I_2})}{\sqrt{\sum_{i=1}^{n} (I_1(i) - \bar{I_1})^2 \sum_{i=1}^{n} (I_2(i) - \bar{I_2})^2}} NCC=i=1n(I1(i)I1ˉ)2i=1n(I2(i)I2ˉ)2 i=1n(I1(i)I1ˉ)(I2(i)I2ˉ)

其中, I 1 ˉ \bar{I_1} I1ˉ I 2 ˉ \bar{I_2} I2ˉ分别是图像 I 1 I_1 I1 I 2 I_2 I2 的平均像素值。

例如,对于上述两个图像块 I 1 I_1 I1 I 2 I_2 I2,它们的 NCC 可以计算为:

I 1 ˉ = 2.5 , I 2 ˉ = 2.75 \bar{I_1} = 2.5, \quad \bar{I_2} = 2.75 I1ˉ=2.5,I2ˉ=2.75

N C C = ( 1 − 2.5 ) ( 1 − 2.75 ) + ( 2 − 2.5 ) ( 2 − 2.75 ) + ( 3 − 2.5 ) ( 3 − 2.75 ) + ( 4 − 2.5 ) ( 5 − 2.75 ) ( ( 1 − 2.5 ) 2 + ( 2 − 2.5 ) 2 + ( 3 − 2.5 ) 2 + ( 4 − 2.5 ) 2 ) ( ( 1 − 2.75 ) 2 + ( 2 − 2.75 ) 2 + ( 3 − 2.75 ) 2 + ( 5 − 2.75 ) 2 ) ≈ 0.97 NCC = \frac{(1-2.5)(1-2.75) + (2-2.5)(2-2.75) + (3-2.5)(3-2.75) + (4-2.5)(5-2.75)}{\sqrt{((1-2.5)^2 + (2-2.5)^2 + (3-2.5)^2 + (4-2.5)^2)((1-2.75)^2 + (2-2.75)^2 + (3-2.75)^2 + (5-2.75)^2)}} \approx 0.97 NCC=((12.5)2+(22.5)2+(32.5)2+(42.5)2)((12.75)2+(22.75)2+(32.75)2+(52.75)2) (12.5)(12.75)+(22.5)(22.75)+(32.5)(32.75)+(42.5)(52.75)0.97

NCC 的值范围为 ([-1, 1]),其中 1 表示两个图像完全相同,-1 表示两个图像完全相反,0 表示两个图像之间没有相关性。

1.3 SSD 与 NCC 对比

特性SSDNCC
计算速度
对强度变化的敏感性非常敏感鲁棒
适用场景适用于强度一致的图像块比较适用于强度变化较大的图像块比较

二、 图像金字塔

2.1 图像金字塔概述

图像金字塔 是一种多分辨率的图像表示方式,它通过构建一个包含不同分辨率图像的层次结构来表示原始图像。图像金字塔的每一层都是原始图像的一个下采样版本,从最高分辨率的图像(位于金字塔顶部)到最低分辨率的图像(位于金字塔底部)。这种多分辨率表示方法在图像处理和计算机视觉中具有广泛的应用,例如目标检测、图像融合和特征提取等。

2.2 高斯金字塔

高斯金字塔 是一种常见的图像金字塔构建方法。它通过反复对图像应用高斯模糊滤波器并以 2 的因子进行下采样来生成不同分辨率的图像。高斯滤波器是一种低通滤波器,可以有效去除图像中的高频细节,使图像更加平滑。因此,高斯金字塔中的每一层图像都比上一层图像更平滑且分辨率更低。

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

  1. 对原始图像 ( I ) 应用高斯模糊滤波器,得到模糊后的图像 ( I_{\text{blur}} )。
  2. 对 ( I_{\text{blur}} ) 进行下采样,即每隔一个像素取一个像素,得到下采样后的图像 ( I_{\text{down}} )。
  3. 重复步骤 1 和 2,直到达到所需的分辨率层次。

例如,假设我们有一个原始图像 ( I ),其高斯金字塔的构建过程如下图所示:

高斯金字塔

高斯金字塔的主要应用包括:

  • 多分辨率图像分析:在不同的空间尺度上寻找目标。例如,在目标检测中,可以在不同分辨率的图像上分别检测目标,从而提高检测的鲁棒性。
  • 粗到细的图像处理:在非常低分辨率的图像上进行模糊估计或运动分析,然后上采样并重复。这种方法可以有效避免复杂估计任务中的局部最小值问题。

2.3 拉普拉斯金字塔

拉普拉斯金字塔 是另一种图像金字塔构建方法。它通过从原始图像中减去下采样版本的图像来生成每一层的图像。生成的图像是原始图像的高通滤波版本,突出了细节和边缘。

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

  1. 构建高斯金字塔 G G G
  2. 对高斯金字塔的每一层 G i G_i Gi 进行上采样,得到上采样后的图像 G i up G_i^{\text{up}} Giup
  3. 计算 G i up G_i^{\text{up}} Giup 与下一层高斯金字塔图像 G i + 1 G_{i+1} Gi+1 之间的差异,得到拉普拉斯金字塔的第 i i i 层图像 L i L_i Li

例如,假设我们有一个高斯金字塔 G G G,其拉普拉斯金字塔的构建过程如下图所示:

拉普拉斯金字塔

拉普拉斯金字塔的主要应用包括:

  • 纹理合成:通过操作拉普拉斯金字塔的每一层,可以生成具有特定纹理的图像。
  • 图像压缩:拉普拉斯金字塔可以用于图像压缩,通过保留重要的细节信息,减少存储空间。
  • 噪声去除:通过操作拉普拉斯金字塔的每一层,可以去除图像中的噪声,同时保留重要的细节信息。

2.4 上采样与重建算法

上采样是将低分辨率图像恢复为高分辨率图像的过程。在拉普拉斯金字塔中,上采样通常通过在像素之间插入零,然后应用低通滤波器来实现。例如,假设我们有一个低分辨率图像 ( I_{\text{low}} ),其上采样过程如下图所示:

上采样

重建算法是将拉普拉斯金字塔的每一层图像重新组合成原始图像的过程。通过将每一层的拉普拉斯图像与上一层的高斯图像相加,可以逐步恢复出原始图像。例如,假设我们有一个拉普拉斯金字塔 ( L ) 和一个高斯金字塔 ( G ),其重建过程如下图所示:

重建算法

2.5 使用图像金字塔进行模板匹配

图像金字塔可以用于加速模板匹配过程。通过在不同分辨率的图像上分别进行模板匹配,可以快速定位目标的大致位置,然后在高分辨率图像上进行精确匹配。这种方法可以有效提高匹配的效率和鲁棒性。

例如,假设我们有一个模板图像 ( T ) 和一个目标图像 ( I ),其使用图像金字塔进行模板匹配的过程如下图所示:

使用图像金字塔进行模板匹配

2.6 图像融合

图像融合是指将两张图像的信息进行融合,生成一张新的图像。图像金字塔可以用于图像融合,通过将两张图像的拉普拉斯金字塔分别进行融合,然后重建出融合后的图像。

图像融合的步骤如下:

  1. 为两张图像分别构建拉普拉斯金字塔 ( LA ) 和 ( LB )。
  2. 为蒙版构建高斯金字塔 ( G )。
  3. 构建组合拉普拉斯金字塔 ( L(j) = G(j) \cdot LA(j) + (1-G(j)) \cdot LB(j) )。
  4. 将组合拉普拉斯金字塔 ( L ) 压缩以获得融合后的图像。

例如,假设我们有两张图像 ( A ) 和 ( B ),以及一个蒙版 ( M ),其图像融合过程如下图所示:

图像融合

三、 边缘检测

3.1 边缘检测概述

边缘检测 是图像处理和计算机视觉中的一个重要任务,其目标是识别图像中的突然变化(不连续性)。边缘通常对应于物体的轮廓、纹理的变化或光照的变化。通过边缘检测,我们可以提取图像中的重要结构信息,为后续的图像分析和目标识别提供基础。

3.2 导致边缘的原因

边缘的形成通常与以下因素有关:

  • 反射率变化:物体表面的反射率发生变化,例如从光滑表面到粗糙表面,会导致边缘的出现。
  • 表面方向变化:物体表面的方向发生变化,例如从平面到曲面,会导致边缘的出现。
  • 深度不连续性:物体的深度发生变化,例如从前景到背景,会导致边缘的出现。
  • 投影阴影:光照的变化会导致投影阴影的出现,从而形成边缘。

例如,以下图展示了不同类型的边缘:

反射率变化导致的边缘

表面方向变化导致的边缘

深度不连续性导致的边缘

3.3 图像梯度

图像梯度是边缘检测中的一个重要概念。它反映了图像中像素值的变化率,可以通过计算像素值在水平方向和垂直方向上的差分来得到。图像梯度的大小和方向可以用于检测边缘的位置和方向。

例如,以下图展示了图像梯度的计算方法:

图像梯度

3.4 噪声的影响

噪声会对边缘检测产生很大的影响。差分滤波器对噪声的响应很强,图像中的噪声会导致像素与其邻居看起来非常不同,从而产生虚假的边缘。因此,在进行边缘检测之前,通常需要对图像进行平滑处理,以去除噪声。

例如,以下图展示了噪声对边缘检测的影响:

噪声的影响

3.5 解决方案:先平滑

为了减少噪声对边缘检测的影响,可以在进行边缘检测之前对图像进行平滑处理。常用的平滑方法是使用高斯滤波器对图像进行卷积,从而去除图像中的高频噪声。

例如,以下图展示了使用高斯滤波器进行平滑处理的效果:

用高斯滤波器进行平滑

3.6 σ 对导数的影响

高斯滤波器的尺度参数 ( \sigma ) 对边缘检测的结果有重要影响。较大的 ( \sigma ) 值可以检测到较大尺度的边缘,而较小的 ( \sigma ) 值可以检测到更细微的特征。因此,在进行边缘检测时,需要根据具体的应用场景选择合适的 ( \sigma ) 值。

例如,以下图展示了不同 ( \sigma ) 值对边缘检测的影响:

σ 对导数的影响

3.7 平滑滤波器与导数滤波器

平滑滤波器和导数滤波器是图像处理中的两种常用滤波器。平滑滤波器用于减少图像中的噪声和其他变化,从而生成更平滑、更均匀的图像。导数滤波器用于通过计算图像相对于其一个或多个维度的导数来突出图像中的特征。

平滑滤波器和导数滤波器的主要区别如下:

特性平滑滤波器导数滤波器
作用减少噪声,生成平滑图像突出特征,增加对比度
常见类型均值滤波器、中值滤波器、高斯滤波器Sobel 滤波器、Prewitt 滤波器、Roberts 交叉滤波器

例如,以下图展示了平滑滤波器和导数滤波器的效果:

平滑滤波器与导数滤波器

3.8 高斯拉普拉斯(LoG)

高斯拉普拉斯(LoG) 是一种常用的边缘检测方法。它通过将高斯滤波器与拉普拉斯算子结合,可以有效检测图像中的边缘和线条。LoG 核对图像中的边缘和其他不连续性非常敏感,通常用于检测图像中的边缘和线条。它还可以用于识别诸如角点和斑点等特征。

LoG 核的计算公式为:

L o G ( x , y ) = ∂ 2 ∂ x 2 G ( x , y ) + ∂ 2 ∂ y 2 G ( x , y ) LoG(x, y) = \frac{\partial^2}{\partial x^2} G(x, y) + \frac{\partial^2}{\partial y^2} G(x, y) LoG(x,y)=x22G(x,y)+y22G(x,y)

其中, G ( x , y ) G(x, y) G(x,y) 是高斯滤波器。

LoG 核的一个优点是它具有旋转不变性,这意味着它可以检测图像中任意方向的特征。它对噪声相对不敏感,因此适用于检测噪声图像中的特征。然而,LoG 核的计算成本可能较高,因为它需要对图像进行多次卷积。

例如,以下图展示了 LoG 核的应用效果:

高斯拉普拉斯(LoG)

3.9 设计边缘检测器

设计边缘检测器需要考虑以下几个因素:

  • 边缘的定义:边缘是指图像中像素值的突然变化,可以通过计算图像的梯度来检测。
  • 噪声的抑制:在进行边缘检测之前,需要对图像进行平滑处理,以去除噪声。
  • 边缘的定位:边缘检测器需要能够准确地定位边缘的位置。
  • 边缘的方向:边缘检测器需要能够检测边缘的方向。

例如,以下图展示了边缘检测器的设计过程:

设计边缘检测器

3.10 Canny 边缘检测器

Canny 边缘检测器 是一种经典的边缘检测算法,它通过多个步骤来检测图像中的边缘,同时抑制噪声和其他无关信息。Canny 边缘检测器的主要步骤如下:

  1. 高斯模糊:应用高斯滤波器对图像进行平滑处理,以消除噪声和其他变化。
  2. 梯度幅度和方向:使用 Sobel 算子或其他导数滤波器计算图像中每个像素的梯度幅度和方向。
  3. 非极大值抑制:通过比较每个像素的梯度幅度与其邻居的梯度幅度来抑制不属于边缘的像素。
  4. 滞后阈值处理:应用两个阈值来确定哪些像素属于边缘。梯度幅度高于较高阈值的像素被认为是强边缘,梯度幅度在两个阈值之间的像素被认为是弱边缘。只有强边缘和连接到强边缘的弱边缘才会被保留。

例如,以下图展示了 Canny 边缘检测器的各个步骤:

Canny 边缘检测器

Canny 边缘检测器的一个优点是它能够产生相对细且连续的边缘,这使其在目标识别和图像分割等任务中非常有用。它对噪声相对不敏感,因此适用于检测噪声图像中的边缘。然而,Canny 边缘检测器对阈值的选择较为敏感,如果阈值设置不当,可能会遗漏一些边缘。

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

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

相关文章

VRoid-Blender-Unity个人工作流笔记

流程 VRoid 选配模型>减面、减材质>导出vrm Blender(先有CATS、vrm插件) 导入vrm>Fix model>修骨骼>导出fbx Unity 找回贴图、改着色器、调着色器参数…… VRoid 减面 以模型不出现明显棱角为准。脸好像减面100也问题不大。 下…

Domain Adaptation领域自适应

背景与问题定义 传统监督学习假设:训练集与测试集数据分布一致。 Domain Shift:测试数据分布与训练数据不同,模型泛化性能骤降 。 例如在黑白图像上训练数字分类器,测试时用彩色图像,准确率骤降。 Domain Adaptatio…

从自动测量、8D响应到供应链协同的全链路质量管理数字化方案——全星QMS如何破解汽车行业质量困局

全星QMS如何破解汽车行业质量困局:从自动测量、8D响应到供应链协同的全链路数字化方案 在当今竞争激烈的市场环境中,企业要想脱颖而出,必须确保产品质量的稳定性和可靠性。 全星质量QMS软件系统凭借其强大的功能和灵活的架构,为企…

联想电脑开机出现Defalut Boot Device Missing or Boot Failed怎么办

目录 一、恢复bios默认设置 二、关机重启 三、“物理”方法 在图书馆敲代码时,去吃了午饭回来发现刚开机就出现了下图的问题(崩溃),想起之前也发生过一次 这样的问题,现在把我用到的方法写在下面,可能对…

SQL学习笔记-聚合查询

非聚合查询和聚合查询的概念及差别 1. 非聚合查询 非聚合查询(Non-Aggregate Query)是指不使用聚合函数的查询。这类查询通常用于从表中检索具体的行和列数据,返回的结果是表中的原始数据。 示例 假设有一个名为 employees 的表&#xff…

【Vue 3 + Element Plus 实现产品标签的动态添加、删除与回显】

🚀Vue 3 Element Plus 实现产品标签的动态添加、删除与回显 在后台管理系统中,我们经常需要对表单数据进行动态处理,尤其是类似“产品标签”这样的字段,它需要用户能够灵活添加、删除,并在编辑时自动回显。今天我们就…

IntelliJ 配置(二)配置相关类库(2)LineMarkerProvider

一、介绍 LineMarkerProvider 是 IntelliJ 平台插件开发中的一个接口,它的作用是在编辑器左侧的“行标记区域”(就是代码行号左边那一栏)添加各种图标、标记或导航链接。比如Java 类中看到的: 小绿色三角形(可以点击运…

从零开始学java--线性表

数据结构基础 目录 数据结构基础 线性表 顺序表 链表 顺序表和链表的区别: 栈 队列 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表中的元素个数就是线性表的长度,表的起始位置称为表头&am…

AD917X系列JESD204B MODE7使用

MODE7特殊在F8,M4使用2个复数通道 CH0_NCO10MHz CH1_NCO30MHZ DP_NCO50MHz DDS1偏移20MHz DDS2偏移40MHz

Spring Cloud之远程调用OpenFeign最佳实践

目录 OpenFeign最佳实践 问题引入 Feign 继承方式 创建Module 引入依赖 编写接口 打Jar包 服务提供方 服务消费方 启动服务并访问 Feign 抽取方式 创建Module 引入依赖 编写接口 打Jar包 服务消费方 启动服务并访问 服务部署 修改pom.xml文件 观察Nacos控制…

【Python爬虫】详细入门指南

目录 一、简单介绍 二、详细工作流程以及组成部分 三、 简单案例实现 一、简单介绍 在当今数字化信息飞速发展的时代,数据的获取与分析变得愈发重要,而网络爬虫技术作为一种能够从互联网海量信息中自动抓取所需数据的有效手段,正逐渐走入…

Win11系统 VMware虚拟机 安装教程

Win11系统 VMware虚拟机 安装教程 一、介绍 Windows 11是由微软公司(Microsoft)开发的操作系统,应用于计算机和平板电脑等设备 。于2021年6月24日发布 ,2021年10月5日发行 。 Windows 11提供了许多创新功能,增加了新…

打造AI应用基础设施:Milvus向量数据库部署与运维

目录 打造AI应用基础设施:Milvus向量数据库部署与运维1. Milvus介绍1.1 什么是向量数据库?1.2 Milvus主要特点 2. Milvus部署方案对比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案对比表 3. Milvus部署操作命令实战3.1 Milv…

【深度学习与大模型基础】第11章-Bernoulli分布,Multinoulli分布

一、Bernoulli分布 1. 基本概念 想象你抛一枚硬币: 正面朝上(记为 1)概率是 p(比如 0.6)。 反面朝上(记为 0)概率是 1-p(比如 0.4)。 这就是一个Bernoulli分布&…

基于Windows通过nginx代理访问Oracle数据库

基于Windows通过nginx代理访问Oracle数据库 环境说明: 生产环境是一套一主一备的ADG架构服务器,用户需要访问生产数据,基于安全考虑,生产IP地址不能直接对外服务,所以需要在DMZ部署一个前置机,并在该前置机…

北斗和GPS信号频率重叠-兼容与互操作

越来越多的同学们发现北斗三代信号的B1C,B2a信号居然和美国GPS L1,L5处在同样频率上? 为什么美国会允许这样的事情发生?同频率难道不干扰彼此的信号吗? 思博伦卫星导航技术支持文章TED 这事得从2006年联合国成立全球卫星导航系统…

python爬虫:喜马拉雅案例(破解sign值)

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 根据上一篇文章,我们破解了本网站的,手机号和密码验证&#x…

51单片机波特率与溢出率的关系

1. 波特率与溢出率的基本关系 波特率(Baud Rate)表示串口通信中每秒传输的位数(bps),而溢出率是定时器每秒溢出的次数。在51单片机中,波特率通常通过定时器的溢出率来生成。 公式关系: 波特率=溢出率/​分频系数 其中,分频系数与定时器的工作模…

摄影测量——单像空间后方交会

空间后方交会的求解是一个非线性问题,通常采用最小二乘法进行迭代解算。下面我将详细介绍具体的求解步骤: 1. 基本公式(共线条件方程) 共线条件方程是后方交会的基础: 复制 x - x₀ -f * [m₁₁(X-Xₛ) m₁₂(Y-…

基于RV1126开发板的人脸姿态估计算法开发

1. 人脸姿态估计简介 人脸姿态估计是通过对一张人脸图像进行分析,获得脸部朝向的角度信息。姿态估计是多姿态问题中较为关键的步骤。一般可以用旋转矩阵、旋转向量、四元数或欧拉角表示。人脸的姿态变化通常包括上下俯仰(pitch)、左右旋转(yaw)以及平面内角度旋转(r…