【IPMV】Lab2-2 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器!(二)

Lab2-2 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器(二)

参考自同济大学蒋磊老师编写的IPMV实验说明
同济大学自动化专业IMPV课程学习记录 (包含知识点以及实验)


Lab0 实验环境准备与OpenCV Hello World
Lab1-1 OpenCV入门与实践——从基础操作到实时视频处理(一)
Lab1-2 OpenCV入门与实践——从基础操作到实时视频处理(二)
Lab2-1 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器(一)
Lab2-2 从零玩转Eigen库:掌握线性代数与OpenCV互操作的神器!(二)
Lab4 Blending 线性混合与拉普拉斯金字塔混合对比

待更新



🌫️高斯模糊与频域特征分析

0 前言

嘿!有没有想过把一张图片变得朦胧又梦幻?或者让照片里的噪点统统消失?这就是 高斯模糊(Gaussian Blur) 大显身手的时候!作为一种经典的图像处理技术,高斯模糊不仅能制造出柔和的模糊效果,还在许多图像处理任务中扮演着关键角色,比如去噪、边缘检测前的平滑处理等。

在上一篇文章中,我们探讨了 Eigen 库的基本操作、线性代数运算以及与 OpenCV 的互操作。这次,我们不但要用 OpenCV 提供的 cv2.GaussianBlur() 轻松搞定高斯模糊,还要用Eigen库来亲手DIY一个高斯模糊算子!更进一步,我们会深入到离散傅里叶变换(DFT) 的世界,对比处理前后图像的频域特征,看看模糊前后到底发生了什么!

无论你是想优化图像识别算法,还是纯粹想要理解图像处理背后的数学原理,这篇文章都能带你轻松入门并大展身手!

1 🎯任务目标

  1. 使用 OpenCV 实现高斯模糊
  2. 使用 Eigen 自制高斯模糊算子
  3. 进行频域特征分析与可视化

2 🌌高斯模糊

2.1 📚高斯模糊:究竟是什么?

高斯滤波是一种经典的线性平滑滤波技术,广泛用于图像处理的预处理阶段,尤其是消除高斯噪声。想象一下:当你拍照时,如果镜头稍微失焦,或者在玻璃上哈气,你会看到一种柔和的、朦胧的效果——这正是高斯模糊带来的视觉体验。

高斯模糊的本质就是给图像“戴上眼镜”:通过对每一个像素点进行加权平均,将其与周围的像素混合,使图像显得更加平滑柔和。这个加权平均的规则就像一座山峰,从中心点向外逐渐递减,呈现出一种自然的“扩散”效果。

2.2 🔬工作原理:模糊的数学之美

2.2.1 高斯函数与高斯核

所谓的“模糊”,其实就是让每个像素点的值变成它周围像素的加权平均值。那么问题来了:如何合理分配权重?
答案是——高斯函数(Gaussian Function)

想象一下:在一座山峰上,山顶(中心点)是最重要的点,它的权重最大。随着距离的增加,山势逐渐降低,权重也随之递减。这个过程用高斯函数来描述再合适不过了。

高斯函数(默认中心点为原点):
G ( x ) = 1 2 π σ 2 e − x 2 2 σ 2 G(x) = \frac{1} {2 \pi \sigma^2} e^{-\frac{x^2}{2\sigma^2}} \\ G(x)=2πσ21e2σ2x2

一维高斯分布(正态分布)
高斯分布

然而,图像是二维的,因此我们需要扩展到二维空间:

二维高斯函数
G ( x , y ) = 1 2 π σ 2 e − x 2 + y 2 2 σ 2 G(x, y) = \frac{1} {2 \pi \sigma^2} e^{-\frac{x^2+y^2}{2\sigma^2}} G(x,y)=2πσ21e2σ2x2+y2

其中:

  • x , y x, y x,y 是相对中心点的位置坐标。
  • σ \sigma σ 是标准差,决定模糊的程度。 σ \sigma σ 越大,模糊效果越强,图像越发柔和。

二维高斯函数

2.2.2 高斯模糊的核心:卷积操作

高斯模糊的实现过程,就是用一个叫做 高斯核(Gaussian Kernel) 的小窗口对图像进行逐点扫描。想象一下,你拿着一个带有权重的小模板在图片上“扫来扫去”,每次都会用模板的权重对图像中的像素进行加权求和。
在这里插入图片描述
公式表示
I b l u r r e d = ∑ i = − k k ∑ i = − k k I ( x + i , y + j ) ⋅ K ( i , j ) I_{blurred}=\displaystyle\sum_{i = -k}^{k}\sum_{i = -k}^{k}I(x+i,y+j) \cdot K(i,j) Iblurred=i=kki=kkI(x+i,y+j)K(i,j)

2.2.3 优化高斯模糊计算:行列分离

1. 行列分离的高斯模糊

直接用二维高斯核卷积,计算量很大。幸运的是,二维高斯核其实可以分解为两个一维高斯核的乘积。这就像用一把锋利的刀将一块大蛋糕(二维卷积)切成两条细长的条状(两个一维卷积):

G ( x , y ) = G ( x ) ⋅ G ( y ) G ( x ) = 1 2 π σ 2 e − x 2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值