数字图像处理系列 | 线性滤波(高斯滤波)(3)

  • 我们知道了什么是 线性平移不变系统 是在做卷积操作 之后,我们发展出了一些非常简单的 线性滤波去增强图片,提取图片特征

文章目录

  • [1. 卷积如何在离散图片中工作的](#1. 卷积如何在离散图片中工作的)
    • [Vis 原图和mask做卷积时发生了什么](#Vis 原图和mask做卷积时发生了什么)
      • [首先,如何得到 (i.j)位置的卷积 g[i,j] 呢?](#首先,如何得到 (i.j)位置的卷积 g[i,j] 呢?)
    • 值得注意事情
  • [2. 应用示例:脉冲滤波器 (Impulse Filter)](#2. 应用示例:脉冲滤波器 (Impulse Filter))
  • [3. 模糊滤波 (Smoothing With "Fuzzy" Filter)](#3. 模糊滤波 (Smoothing With "Fuzzy" Filter))
    • [Fuzzy Filter 可以用 高斯卷积核 来表示](#Fuzzy Filter 可以用 高斯卷积核 来表示)
    • [来看看Guassian Smoothing](#来看看Guassian Smoothing)
    • [为什么高斯滤波 这么受欢迎:因为高斯是可分离的](#为什么高斯滤波 这么受欢迎:因为高斯是可分离的)

1. 卷积如何在离散图片中工作的

  • f[i, j]: 离散图片, 是图片中(i,j) 的像素值
    • i: row Number
    • j: Col Number
  • M, N 是整张图的大小
  • m, n 是卷积核大小
  • Convolved by some impulse response h[i,j]
  • h[i-m, j-n]: 被称为 "Mask", "Kernel", "Filter"

Vis 原图和mask做卷积时发生了什么

首先,如何得到 (i.j)位置的卷积 g[i,j] 呢?

  • h[m, n] 是一个卷积核

  • 反转 h[-m, -n], 看颜色变了吧

  • 这里的h是卷积核哦

  • 然后,把卷积核放在你想得到的坐标那里,这里是**(i, j)的位置**

  • 做一个卷积相乘,加和 ,得到右侧的橙色,这就是当前位置的卷积结果

  • 你想要得到所有的g[i,j], 你就重复上述动作,1. 旋转你的卷积核,2. slide over entire image

值得注意事情

2. 应用示例:脉冲滤波器 (Impulse Filter)

平移不变性指我们在图像的每个位置都执行相同的操作。线性指这个操作是线性的,也就是我们用每个像素的邻域的线性组合来代替这个像素。

图片平移:Image Shift

  • 反转 卷积核,右下角的白色方块 --> 左上角,然后全图经过卷积,原图整体向右,向下移动。

图片平均:Averaging

  • Box Filter: 汇集了 周围 5x5=25 个像素的值,所以卷积之后,该位置的值会变得非常大,但我们8 bit的图像中,数值范围是从(0, 255)的,所以 超过255的就按255算,反之小于0 的按0 算。
  • 确保你设计Filter的时候,Filter要做归一化,要不就产生上面的问题了,所有的数字相加都到255 了
  • 这样做,图就不会过度曝光了吧,变的平滑了吧

平滑滤波 (Smoothing With Box Filter)

  • 是不是看起来不太自然,好吧
  • 然我们看看下一节,高斯滤波,会让他变的自然起来

3. 模糊滤波 (Smoothing With "Fuzzy" Filter)

Fuzzy Filter 可以用 高斯卷积核 来表示

  • σ 是标准差 \sigma是标准差 σ是标准差
  • σ 2 是方差 \sigma^2是方差 σ2是方差
  • σ \sigma σ 越大,高斯的边界越大
  • 这里推荐卷积核大小k,因为这能最大化的使用高斯的能量(突出来的部分)
  • 我们可以看到σ=5的中央要比,σ=2的中央暗很多,因为k=5的时候像素很多,然后做了归一化就变得很小了
  • 推荐的k值为 k = 2 π σ k = 2 \pi \sigma k=2πσ

来看看Guassian Smoothing

  • \\sigma 越大越模糊哦

为什么高斯滤波 这么受欢迎:因为高斯是可分离的

  • 2D 高斯 -> 1D 高斯
  • 做1D 高斯计算量会比 2D 小很多

  • 来看看高斯1D, 2D的计算量
相关推荐
西猫雷婶21 分钟前
pytorch基本运算-导数和f-string
人工智能·pytorch·python
Johny_Zhao22 分钟前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
顽强卖力23 分钟前
第二十八课:深度学习及pytorch简介
人工智能·pytorch·深度学习
述雾学java24 分钟前
深入理解 transforms.Normalize():PyTorch 图像预处理中的关键一步
人工智能·pytorch·python
武子康24 分钟前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting
要努力啊啊啊27 分钟前
使用 Python + SQLAlchemy 创建知识库数据库(SQLite)—— 构建本地知识库系统的基础《一》
数据库·人工智能·python·深度学习·自然语言处理·sqlite
武子康27 分钟前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting
wufeil43 分钟前
基于功能基团的3D分子生成扩散模型 - D3FG 评测
深度学习·分子生成·药物设计·ai辅助药物设计·计算机辅助药物设计
中杯可乐多加冰1 小时前
【解决方案-RAGFlow】RAGFlow显示Task is queued、 Microsoft Visual C++ 14.0 or greater is required.
人工智能·大模型·llm·rag·ragflow·deepseek
Andrew_Xzw1 小时前
数据结构与算法(快速基础C++版)
开发语言·数据结构·c++·python·深度学习·算法