🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀计算机图形学_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 前言 

2. 概述

2.1 什么是数字图像

2.2 人类与图像

2.3 图像处理

2.4 图像处理与计算机视觉 

3. 数字图像基础

3.1 图像取样和量化

3.2 数字图像表示

3.3 图像存储(空间和灰度级)

3.4 图像像素间的关系

3.4.1 像素的邻域信息

3.4.2 领接性、连通性、区域和边界

3.4.3 像素距离

4. 基本图像处理

4.1 放大和收缩数字图像

4.1.1 放大(插值与重采样)

4.1.2 收缩

4.1.3 图解放大与收缩

4.2 图像灰度变换

4.2.1 对数变换

4.2.2 指数变换

4.2.3 分段变换

4.3 图像直方图(必考)

4.3.1 图像特征与直方图特征

4.3.2 直方图均衡化(必考)

4.4 图像滤波

数学中的卷积和相关

4.4.1 低通滤波器

4.4.1.1 均值滤波

4.4.1.2 中值滤波

4.4.1.3 高斯滤波

 4.4.1.4 自适应中值滤波

4.4.2 高通滤波器

4.4.2.1 锐化滤波器

4.4.2.2 Prewitt、sobel滤波器(算子)

4.4.2.3 拉普拉斯算子(Laplace)

5. 频域图像处理

5.1 傅里叶变化是什么

5.1.1 连续傅里叶变化公式

5.1.2 离散傅里叶变化公式

5.1.3 频谱图中心化

5.1.4 傅里叶变化的性质 

5.1.4.1 线性

5.1.4.2 加法分配性

5.1.4.3 平移性

5.1.4.4 缩放

​编辑​编辑5.1.4.5 旋转

5.1.4.6 周期性和对称性

5.1.4.7 可分离性

5.1.4.8 卷积与乘积

5.2 频率域中的图像处理

5.2.1 频率域的基本性质

5.2.2 频率域图像处理流程

5.2.3 滤波函数(频率域的滤波器)

5.2.3.1 理想低通滤波器

5.2.3.2 巴特沃斯低通滤波器(BLPF)

5.2.3.3 高斯低通滤波器(GLPF)

5.3 图像恢复

5.3.1 图像退化

5.3.2 图像复原 

5.3.3 图像逆滤波复原

5.3.4 逆滤波复原步骤

6. 总结 


1. 前言 

 今天是【数字图像处理】课程考试前一周时间,趁着数字图像处理考试,猫猫来进一步梳理数字图像处理这门课程的知识,希望也能给阅读本系列文章的友友们提供一些帮助。

本系列分为两个部分:

  1. 全面知识梳理
  2. 特别知识梳理

(全面知识梳理一律加上【第*章】字样,是软件工程所有知识的全面梳理)

(特别知识梳理一律加上 【一篇搞定】字样,仅仅作为特别重要内容的展开延申)

参考书籍🥰:

冈萨雷斯的数字图像处理(第四版)

十二月的猫猫在这里祝愿大家都能在期末考试中取得好成绩,高分拿拿拿!考试过过过!💯


2. 概述

2.1 什么是数字图像

        定义:图像是在(x,y)二维空间上的函数 f ,函数f(x,y)可以表示强度,灰度。色度等。当x,y和幅值f为有限、离散的数值时,称该图像为数字图像

  • 数字图像由有限的元素组成的、每个元素都有特定位置和幅值,该元素称为图像元素、画面元素或像素

图像取样和量化(必考)

  • 图像在空间上的离散化称为采样,也就是用空间上部分点的灰度值代表图像,这些点称为采样点。采样越细即采样点越多像素越小越能精细地表现图像
  • 把采样后所得的各像素的灰度变换成离散的整数值称为图像灰度的量化。量化越细致即设置灰度值范围越大图像灰度表现越丰富

2.2 人类与图像

  1. 人眼视觉是人类最高级的感知器官
    • 一图抵千言
    • 人脑处理图像的速度比文本快60000倍
    • 获得信息的比例眼83%,耳朵11%,触觉3.5%,嗅觉1.5%,味觉1%
    • 80%的人记得他们看到的内容,而10%的人记得他们听到的内容和20%的内容
  2. 人类感知局限性
    • 只限于可见光波段
    • 只限于可见光波段的幅度,不识别偏振
    • 错觉

图像对于人类来说很重要,但是人类对图像的感知存在局限性,因此图像处理就很重要。

2.3 图像处理

  1. 仅是人为界定和限制
  2. 计算机视觉用计算机去模拟人类视觉,包括理解和推理并根据世界输入采用行动等
  3. 图像分析(也称为图像理解)领域则处在图像处理和计算机视觉两个学科之间

2.4 图像处理与计算机视觉 

  • 低级处理及初始操作,如降低噪声的图像预处理,对比度增强和图像尖锐化。低级处理是一输入和输出都是图像为特点的处理
  • 中级处理涉及分割(把图像分为不同区域或目标物)以及缩减对目标的描述,以使其更适合计算机处理对不同目标的分割(识别)。中级图像处理是一输入为图像,但是输出是从这些图像中提取的特征(如边缘、轮廓及不同物体的标识等)为特点
  • 高级处理涉及图像分析中被识别物体的总体理解,以及执行与视觉相关的识别函数

3. 数字图像基础

3.1 图像取样和量化

  • 图像空间坐标的离散化,称为取样或采样
  • 图像幅值信息的离散化,称为量化

注意:数字图像的质量很大程度上取决于取样和量化中所运用的取样数和灰度

3.2 数字图像表示

        一幅图像f (x,y)被取样,产生的数字图像有M行和N列,表达式的右侧定义了一幅数字图像,矩阵中的没个元素称为图像单元、图像元素或像素f的不同体现出提取特点的不同,可能提取的是灰度,也可能是色度或是亮度

数字图像表示:对图像采样得到数字图像,数字图像用矩阵表示

3.3 图像存储(空间和灰度级)

图片分为很多类型:灰度图片、RGB图、带有Alph通道的RGB图像等。不同图片类型的存储不一样

  1. 灰度图片--grayImg---是--单通道图像
  2. RGB彩色图像---------是--3通道图像
  3. 带Alph通道的RGB图像--是--4通道图像

灰度图片:

数字b是存储数字图像需要的比特数,

有 b = M * N * k,当M=N时,上式变为:b = N^2 * k

当一幅图像有 2^k 灰度级时,实际上通常称为该图像是k比特图像

例: 存储1幅32 × 32,16个灰度级的图需要 4 096 bit

RGB图的存储:

一副32位三通道图像,每一行的字节数为step,共有weight行,high列。(1)(u,v)的存储位置为p,画出其八邻域的存储位置(2)(0,0)的存储位置是data,写出(x,y)的存储位置 (必考)


  • 图像格式
  • 无损压缩:PNG
  • 存储东华:GIF
  • 透明图:GIF、PNG

3.4 图像像素间的关系

3.4.1 像素的邻域信息

  • N4:四邻域
  • Nd:对角邻域
  • N8:八邻域。N8=N4+Nd

3.4.2 领接性、连通性、区域和边界

给出一个区域,用四邻域和八邻域结构元取提取边界有什么特点(必考)

一句话:四领域提取边界是八邻域边界,八邻域提取边界是四领域边界

给出一副二值图像,有多个白色区域,设计算法,伪代码:1)找出面积最大的白色区域2)找出边界线(轮廓)最小的白色区域(必考)

解答:

第一问:

def find_largest_white_region(image):
    max_area = 0
    largest_region = None
    visited = set()

    for i in range(len(image)):
        for j in range(len(image[0])):
            if image[i][j] == 1 and (i, j) not in visited:
                region, area = flood_fill(image, i, j, visited)
                if area > max_area:
                    max_area = area
                    largest_region = region

    return largest_region, max_area

def flood_fill(image, i, j, visited):
    stack = [(i, j)]
    visited.add((i, j))
    region = [(i, j)]
    area = 1

    while stack:
        x, y = stack.pop()
        for nx, ny in neighbors(x, y, image):
            if image[nx][ny] == 1 and (nx, ny) not in visited:
                visited.add((nx, ny))
                stack.append((nx, ny))
                region.append((nx, ny))
                area += 1

    return region, area

def neighbors(x, y, image):
    directions = [(-1, 0), (1, 0), (0, -1), (0, 1)]
    result = []
    for dx, dy in directions:
        nx, ny = x + dx, y + dy
        if 0 <= nx < len(image) and 0 <= ny < len(image[0]):
            result.append((nx, ny))
    return result

第二问:

def find_smallest_boundary_region(image):
    min_perimeter = float('inf')
    smallest_region = None
    visited = set()

    for i in range(len(image)):
        for j in range(len(image[0])):
            if image[i][j] == 1 and (i, j) not in visited:
                region, perimeter = flood_fill_and_perimeter(image, i, j, visited)
                if perimeter < min_perimeter:
                    min_perimeter = perimeter
                    smallest_region = region

    return smallest_region, min_perimeter

def flood_fill_and_perimeter(image, i, j, visited):
    stack = [(i, j)]
    visited.add((i, j))
    region = [(i, j)]
    perimeter = 0

    while stack:
        x, y = stack.pop()
        for nx, ny in neighbors(x, y, image):
            if image[nx][ny] == 1 and (nx, ny) not in visited:
                visited.add((nx, ny))
                stack.append((nx, ny))
                region.append((nx, ny))
            elif image[nx][ny] == 0:
                perimeter += 1  # It's a boundary pixel

    return region, perimeter
  • 若像素 q 在像素 p 的领域内(包括4邻域、8邻域或对角邻域),则称 pq 为邻接像素
  • 如果 pq 是邻接像素,并且它们的灰度值满足某种相似性准则(例如灰度值相等,或属于同一灰度值集合),则称 pq 满足连接关系
  • pq 不直接邻接,但它们都位于另一个像素 r 的相同领域中(包括4邻域、8邻域或对角邻域),并且这三个像素的灰度值满足相似性准则(例如灰度值相等,或属于同一灰度值集合),则称 pq 为连通像素

3.4.3 像素距离

距离性质:

距离度量:

De:欧式距离

D4:曼哈顿距离

D8:棋盘距离

几个例题

例题一:

例题二:

这个就是四邻域 

例题三:

这个就是八邻域

4. 基本图像处理

4.1 放大和收缩数字图像

放大可看做采样,收缩可看做欠采样

这两种操作与取样和量化一幅原始连续图像之间的关键区别是放大和收缩适用于数字图像。

4.1.1 放大(插值与重采样)

放大的两步操作:创立新的像素位置和对这些新位置赋灰度值。

灰度赋值法:

  • 最近领域内插(较快;但在高放大倍数时,棋盘格效应明显)

  • 采用4个最邻近点的双线性内插

  • 放大时其他重采样的方法(B-spline、Hermit等等)

双线性插值显示效果优于最近领域内插,双线性内插通常是首选

更多领点的内插会产生平滑的结果,但是对于计算负担大。

双线性插值:计算两次线性平均值(一次是水平的,一次是垂直的) (两次的先后顺序不同,使得双线性插值有不同类型

灰度级插值是什么,最近邻插值、双线性插值、双三次插值各自的优缺点(必考)

  • 最近邻插值:计算量小、算法简单、运算速度较快。缺点:仅使用离被采样位置最近的像素没有考虑相邻的其他元素灰度值采样后灰度值明显的不连续性图像质量损失较大,会产生明显的马赛克和锯齿现象
  • 双线性插值:缩放后图像质量高基本克服了最近邻插值灰度值不连续的特点。做法:用双线性方式计算采样点周围四个点,计算其灰度值。缺点:计算量稍大但是仍然没有考虑相邻点灰度值的相互影响有低通滤波器的性质导致缩放后图像的高频分量收到损失,图像边缘变模糊
  • 双三次插值:不仅考虑周围四个相邻像素点,还考虑他们的灰度值变化率,更平滑的边缘、计算精度,更少的图像画质的损失。做法:根据采样点周围的16个像素值的双线性关系以及像素变化率来计算采样点灰度值,缺点:计算量最大,性能差
  • 灰度级插值:在一般情况下,输入图像的位置 坐标(x,y)为整数,而输出图像的位置坐标为非整数,而且 图像放大、平移、旋转或者图像中的某个区域在图像内移动等操作都会在图像中产生位缺,这些位缺需要通过插值来补齐。

(x,y)为浮点数坐标,求其双线性拟合值,用p表示(必考)

4.1.2 收缩

图像收缩可以与放大相类似的方法操作

为了减小可能的混淆效应,可以在收缩之前稍微模糊一下图像。

4.1.3 图解放大与收缩

图像的放大和缩小的基本原理就是一种映射,即缩小后或者放大后的图像像素位置向原图的一个映射。简单理解就是,将放大或者缩小后的图像将其的坐标(长宽)拉伸或者压缩到和原图一样大时,其像素坐标点对应在原图上的位置就是其映射位置

图像增强的方法分为两大类: 空间域方法和频域方法

  • 空间域:指图像平面自身,这类方法是以对图像 的像素直接处理为基础的
  • 频域处理技术是以修改图像的傅氏变换为基础的

4.2 图像灰度变换

图像灰度变化是图像增强的一种,属于空间域方法

图像反转:L' = 255 - L

亮度变换:整体变亮或变暗

4.2.1 对数变换

  1. 对数变换:s = c * log(1 + r) 其中,r表示原始图像的灰度级,s表示变换后的灰度级,c为常数。

给出一个灰度变换的图如下,问这两条线的特点是什么,适用于什么场合?(必考):

  • E1(s):特点是将灰度值低的图像变亮,会拉伸图像中灰度级较低的区域,压缩灰度级较高的部分。适用于原图像中有较多暗部区域或者某些显示设备呈现低灰度值能力有限。
  • E2(s):特点是将灰度值高的图像变亮,会拉伸图像中灰度级较高的区域,压缩灰度级较低的部分。适用于原图像有较多亮部位,增强亮部位压缩暗部位,起到提高对比度的效果

4.2.2 指数变换

  1. 指数变换:S = c * r ^ gamma。

    1)当 gamma >1时,会拉伸图像中灰度级较高的区域,压缩灰度级较低的部分;(亮的变暗)

    2)当 gamma <1时,会拉伸图像中灰度级较低的区域,压缩灰度级较高的部分;(暗的变亮)

    3)当 gamma =1时,该灰度变换是线性的,此时通过线性方式改变原图像。

几个例子:

暗变亮:

亮变暗:

4.2.3 分段变换

分段变换的作用:1、对比拉伸;2、灰度切割

  1. 对比拉伸:一个范围内灰度拉伸,一个范围内灰度压缩。从而增加对比度。
  2. 灰度切割:切割式提高一个范围内的灰度值

按比例线性拉伸可以将原始输入图像中的灰度值不加区别地扩展

实际应用中,为了突出图像中感兴趣的研究对象,常常

  • 要求局部扩展拉伸某一范围的灰度值
  • 对不同范围的灰度值进行不同的拉伸处理即分段性拉伸

一般来讲,分段线性拉伸实际是

  • 仅将某一范围的灰度值进行拉伸
  • 其余范围的灰度值实际上是被压缩了

上面第三张图公式为:

1、对比拉伸 

照明不足、成像传感器动态范围太小,甚至在图像获取过程中透镜光圈设置错误,产生低对比图像。对比拉伸的思想是提高图像处理时灰度级的动态范围。

2、灰度切割

提高特定灰度范围的亮度。两种基本方法:

  1. 为关心的范围内所有灰度指定一个较高值,而为其他灰度指定一个较低值。
  2. 使所需范围的灰度变亮,但是仍保持了图像的背景和灰度色调

4.3 图像直方图(必考)

图像直方图均衡化是图像增强的一种,属于频率域方法

        直方图定义:灰度级为 [ 0,L - 1]范围的数字图像的直方图是离散函数 h(rk)= nk ,这里 rk是第k级灰度,nk是图像中灰度级为 rk 的像素个数。

        归一化直方图定义:以图像中像素的总数(用 n 表示)来除它的每一个值得到归一化的直方图(normalized histogram)。 归一化的直方图由 P(rk)=nk/n给出,这里 k = 0,1,2…,L-1。

  • p(rk)给出了灰度级为 rk 发生的概率估计值
  • 归一化的直方图其所有部分之和是 1

4.3.1 图像特征与直方图特征

由上图可总结得到四个基本灰度级特征(暗、亮、低对比度和高对比度)

  • 暗色图像中,直方图的组成成分集中在灰度级低(暗)的一侧
  • 高亮图像中,直方图的组成成分集中在灰度级高(亮)的一侧
  • 低对比度图像的直方图窄而集中于灰度级的中部
  • 高对比度的图像中,直方图的成分覆盖了灰度级很宽的范围,而且像素的分布相对均匀,只有少量垂线比其他的高许多。

看到这里,不难发现,我们喜欢的图像是直方图在全区域分布均匀的图像

因此,就提出了一个图像增强方法——直方图均衡化

4.3.2 直方图均衡化(必考)

直方图题目

  1. 描述一下高亮度,低亮度和高对比度,低对比度它们直方图的特点
  2. 一个单通道图像0和255各占一半,画出它们的直方图和均衡化之后的直方图

答:

  1. 高亮度的直方图的图像主要分布在右侧部分,低亮度主要分布在左侧部分,高对比度图像分布比较分散,低对比度图像分布比较集中。

        T(0) = 0.5*255=127.5->128

        T(255) = 0.5255+0.5255=255

        均衡化之后的直方图 128为0.5,255为0.5。

均衡化步骤:

  1. 统计出每个灰度数量 (包括数量是0的灰度!)
  2. 归一化求每个像素的概率
  3. 累加
  4. 乘以要转换的灰度,如 255

例题:

p(0)=2/16=1/8,p(1)=3/16,p(2)=1/8,p(3)=1/8,p(4)=1/8,p(6)=1/8,p(8)=1/8,p(16)=1/16

T(0)=round(15*1/8)=2

T(1)=round(15*(1/8+3/16))=5

T(2)=round(15*7/16)=7

T(3)=round(15*9/16)=8

T(4)=round(15*11/16)=10

T(6)=round(15*13/16)=12

T(8)=round(15*15/16)=14

T(9)=round(15*16/16)=15

怎么理解直方图均衡化呢?

  1. 均衡化本质:找到一个映射函数,将直方图从一个变为另一个。新的直方图要求频域分布更均匀,灰度动态范围更大。
  2. 均衡化有两个目的:a.让频域分布更均匀,从原本离散的变为尽量连续的分布,什么频域的都有。b. 映射后的灰度动态范围更大,对比度增加。
  3. 均衡化有一个条件:映射后,不能打乱原有的像素值大小顺序, 映射后亮、 暗的大小关系不能改变;

基于两个目的一个条件,我们发现累计概率函数满足要求。

  • 累计概率函数,原像素值越大,则累计概率越大,保持了单调性,亮暗关系不变。
  • 累计概率函数乘上一个系数a,就可以将灰度动态范围调整为0-a,提升对比度。
  • 累计概率函数是连续的,因此每一个频域都有一个值,分布更均匀

4.4 图像滤波

图像滤波是图像增强的一种,属于空间域方法

图像滤波分为线性滤波和非线性滤波

线性滤波:一个w*h的图像,滤波核的大小为7*7,求滤波用了多少次乘法;如果行列可分离,滤波用了多少次乘法(必考)

        如果不进行边缘填充:

  • (w-6)*(h-6)*7*7
  • (w-6)*(h-6)*7*2

        如果进行边缘填充:

  • w*h*7*7
  • w*h*7*2

卷积核也叫滤波器

      1)滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。

      2)滤波器矩阵所有的元素之和应该要等于1这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

      3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

      4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

      5)滤波实际上就是Same模式的卷积操作,也就是说滤波后图像的大小不变,各种滤镜和照片的风格化就是使用不同的滤波器对图像进行操作。因此卷积核、滤波器本质上都是一个东西

前景知识:

        1、卷积核也叫滤波器:对图片信息进行过滤(特征提取)(Same模式的卷积)。

        2、大小奇数。

        3、滤波器所有元素和大于1则图像变亮,否则图像变暗。


数学中的卷积和相关

相关(corr):就是在图像f中逐点移动滤波掩模w然后相应的值乘积然后累加得到的响应值

卷积(conv):将掩模旋转180度,再逐点移动然后相应的值乘积相加得到响应值。

卷积公式如下:

相关公式如下: 

下面说的卷积核本质上做的是数学中的相关 

4.4.1 低通滤波器

4.4.1.1 均值滤波

特点:

  • 滤波器中元素之和为1,输出亮度与输入基本一致;
  • 为低通滤波器,主要用于图像模糊/平滑处理、消除噪点;
  • 核越大,模糊程度越大;

其中均值滤波器从名字就可以看出,每个元素值都一样,是卷积核元素个数的倒数,这样每个输出像素就是其周围像素的均值。一个3 × 3 的均值滤波器如下所示:

一个例子:

4.4.1.2 中值滤波

中值滤波会选取数字图像或数字序列中像素点及其周围临近像素点(一共有奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值,让周围的像素值接近真实值,从而消除孤立的噪声点。
例如,针对图2-1中第4行第4列的像素点,计算它的中值滤波值。

将其邻域设置为3×3大小,对其3×3邻域内像素点的像素值进行排序(升序降序均可),按升序排序后得到序列值为:[66,78,90,91,93,94,95,97,101]。在该序列中,处于中心位置(也叫中心点或中值点)的值是“93”,因此用该值替换原来的像素值 78,作为当前点的新像素值,处理结果如下图所示:

中值滤波取卷积核当中所覆盖像素中的中值作为锚点的像素值即可

其基本原理是把数字图像中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点,对于斑点噪声(speckle noise)和椒盐噪声(这类噪声特点是离散,但是突然会有极大噪声值来说尤其有用,因为它不依赖于邻域内那些与典型值差别很大的值。中值滤波器在处理连续图像窗函数时与线性滤波器的工作方式类似,但滤波过程却不再是加权运算。

4.4.1.3 高斯滤波

特点:滤波器中元素之和为1,输出亮度与输入基本一致;
为低通滤波器,主要用于图像模糊/平滑处理、消除噪点;
核越大,模糊程度越大;

高斯滤波器虽然元素总和也为1,但每个位置的权重不一样,权重在行和列上的分布均服从高斯分布,故称高斯滤波器。高斯分布的标准差越大,则模糊程度越大。一个3 × 3 标准差为1的高斯滤波器如下所示:

一个例子:

 4.4.1.4 自适应中值滤波

自适应中值滤波器(必考)

请写出自适应中值滤波的算法?请算出下面中心像素经过自适应中值滤波后的值?

4.4.2 高通滤波器

4.4.2.1 锐化滤波器

锐化卷积核从名字就可以看出,主要作用就是对图片进行锐化操作,也就是让图像的边缘更加锐利。图像的边缘往往就是变化较大的地方,也就是图像的高频部分,因此锐化卷积核就是一种高通滤波器。锐化卷积核从名字就可以看出,主要作用就是对图片进行锐化操作,也就是让图像的边缘更加锐利。图像的边缘往往就是变化较大的地方,也就是图像的高频部分,因此锐化卷积核就是一种高通滤波器。

一个例子:

4.4.2.2 Prewitt、sobel滤波器(算子)

梯度就是图像的一阶导数(必考)

  1. 写出求梯度的标准表达式
  2. 写出sobel算子,sobel算子可以抑制噪声,sobel算子与高斯滤波有什么联系?

  • 高斯滤波:消除噪音的同时也使边缘变得模糊;
  • SOBEL 算子:消除噪音的同时使边缘锐化。
  • Sobel 算子是在一个坐标轴的方向上进行非归一化的高斯平滑,在另外一个坐标轴方向上进行差分处理

sobel和Prewitt滤波器:

  1. 目的是为了提取边缘(不仅仅是锐化,而是直接提取)。
  2. 底层数学理论是求导,导函数能够让仅仅边缘处有值存在,其他部分没有值。因此起到边缘提取的效果。
  3. 也就是说一个图像f(x,y)的导函数就是f(x,y)图像的边缘信息
  4. 求导过程可以用Prewitt和sobel算法来代替。
  5. 也就是说 f(x,y)*算子 = f(x,y)的导数值导数值显示出来图像就是边缘信息

来看一张图像f(x),将其值当作函数画出来如下:

如果对图像值进行求导得到:

不难发现,只有图像变化的边缘部分导函数有值,其他时候没有值

因此,导函数值可以表示图像的边缘

根据数学推导,可以发现导函数值如下:

\frac{\partial f(x,y)}{\partial x}=\lim_{\epsilon\to0}\frac{f(x+\epsilon,y)-f(x,y)}{\epsilon}\\\frac{\partial f(x,y)}{\partial y}=\lim_{\epsilon\to0}\frac{f(x,y+\epsilon)-f(x,y)}{\epsilon}

离散化表示如下(由于图像是离散的二维函数,ε不能无限小,最小就是1像素 ):

\frac{\partial f(x,y)}{\partial x}=f(x+1,y)-f(x,y)=gx\\\frac{\partial f(x,y)}{\partial y}=f(x,y+1)-f(x,y)=gy

注意:记住一阶导数推导过程!!!! 

这个导函数的计算过程正好可以用核函数来表示,如下:

因此,拿到一张图片,我们将其乘上 算子(计算模板) 就可以得到图片的导数值,也就是图片的边缘信息,同时消除了图片中的噪声。 


Prewitt算子

Prewitt算子就是对图像进行差分来近似对图像的某个部分求一阶导数。Prewitt算子适合用来识别噪声较多、灰度渐变的图像

d_x=\begin{bmatrix}-1&0&1\\-1&0&1\\-1&0&1\end{bmatrix}\quad d_y=\begin{bmatrix}-1&-1&-1\\0&0&0\\1&1&1\end{bmatrix}

具体计算如下:

g_{x}=\frac{\partial f}{\partial x}=(P7+P8+P9)-(P1+P2+P3)\\g_{y}=\frac{\partial f}{\partial y}=(P3+P6+P9)-(P1+P4+P7)

一个例子: 

Sobel算子

Sobel算子则是Prewitt算子的改进版,对中间的元素适当进行了加权,Sobel算子与Prewitt算子类似。Sobel算子包含两组3×3的滤波器,分别对水平及垂直方向上的边缘敏感。

\begin{gathered}G_{x}=\begin{bmatrix}x_1&x_2&x_3\\x_4&x_5&x_6\\x_7&x_8&x_9\end{bmatrix}=\begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix}\\G_{y}=\begin{bmatrix}x_1&x_2&x_3\\x_4&x_5&x_6\\x_7&x_8&x_9\end{bmatrix}=\begin{bmatrix}1&2&1\\0&0&0\\-1&-2&-1\end{bmatrix}\end{gathered}

让两个方向模板分别沿着x轴、y轴与图像做卷积,方向是从上到下和从左到右。将模板的中 心和图像上的某个像素重合,并将该像素周围的点 与模板上对应的系数相乘,如图所示,其 中Gx及Gy分别代表经横向及纵向边缘检测的图像梯度值。

G_x=(x_3+2x_6+x_9)-(x_1+2x_3+x_5)\\G_y=(x_7+2x_8+x_9)-(x_1+2x_2+x_3)

图像上每个像素点的横向及纵向梯度值通过下式结合,来计算该点梯度值G的大小

G=\sqrt{G_x^2+G_y^2}

为了减少运算时间,提高运算效率,可以使用绝对值求和近似的方法代替开平方

G=|G_x|+|G_y|

由于Sobel算子对于象素的位置的影响做了加权,可以降低边缘模糊程度,与Prewitt算子、Roberts算子相比效果更好。

sobel 算子有去噪能力,请根据你的理解,描述 SOBEL 算子和高斯滤波的关系:

  • 高斯滤波:消除噪音的同时也使边缘变得模糊;
  • SOBEL 算子:消除噪音的同时使边缘锐化。
  • Sobel 算子是在一个坐标轴的方向上进行非归一化的高斯平滑,在另外一个坐标轴方向上进行差分处理
4.4.2.3 拉普拉斯算子(Laplace)

理解:有了前面sobel和prewitt算子作为基础,我们不难继续往下研究。除了一阶导数可以反映边缘信息外,二阶导数同样可以。并且比起一阶导数边缘宽大,二阶导数边缘显得更小,更有利于判断边缘,但是二阶导数对噪声更加敏感。

图像的边缘不仅可以通过一阶导数进行表述,还可以通过二阶导数进行寻找。边缘是一阶导数的极大值点,对应二阶导数的过零点,求出图像的二阶导数的过零点就能精确地找到图像的边缘点,如下面的图像显示:

二阶导数数学推导如下:

\nabla^2f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y)

二阶导数计算过程可以用如下算子代替:

稍作修改,可以实现图片锐化,而不是提取边缘:

另一种修改,可以提升提取效果(多考虑对角线领域):

Sobel算子和拉普拉斯算子的联系与区别:

  • sobel 产生的边缘有强弱,抗噪性好。但是边缘比较宽大,不利于边缘判断。
  • laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了

5. 频域图像处理

首先去看看这篇文章:【数字图像处理】一篇搞定傅里叶变换-CSDN博客

这里做一个简单回顾:

e^{ix}=cos(x)+isin(x) 

x=\pi得到:

e^{i\pi }+1=0

这也就是欧拉公式。 

5.1 傅里叶变化是什么

怎么理解傅里叶变换:

  • 傅里叶变换的本质就是找到基信号在输入信号中的占比。
  • 由于输出仍然是一个新的信号,因此输入需要考虑每一个x的情况,所以要积分。
  • 基信号包括cos(ux)和sin(ux),因此综合可以转化为

5.1.1 连续傅里叶变化公式

连续傅里叶变化公式(从一个波分解为多个波): 

连续傅里叶变化反公式(从多个波合成一个波):

5.1.2 离散傅里叶变化公式

离散傅里叶变化公式(从一个波分解为多个波)

F(u)=\frac1M\sum_{t=0}^{M-1}f(x)e^{-2j\pi ux/M}

离散傅里叶变化反公式(从多个波合成一个波)

拓展到二维如下:

离散化: 

特别地,当u和v取0时,表示取图像地平均灰度值:


来两道题练练手吧: 

需要知识:欧拉公式+傅里叶变化 

5.1.3 频谱图中心化

通过前面的学习,我们知道傅里叶变化能够将图像从空间域转化为频率域。

得到一个空间域图像在频率域上的呈现形式。这个呈现形式就是频谱图

显然这个时候,中间部分是高频,四个角落是低频。上图中整体颜色偏暗,因此灰度变化不大,因此低频多于高频

但是这个频谱图看起来很难受,于是就想要对他进行处理。

这就是频谱中心化~~~ 


下面的东西看看就好:

5.1.4 傅里叶变化的性质 

5.1.4.1 线性

5.1.4.2 加法分配性

5.1.4.3 平移性

5.1.4.4 缩放

几个例子:

5.1.4.5 旋转

5.1.4.6 周期性和对称性

假如图片大小为N*N,则周期性为N且关于N/2对称

5.1.4.7 可分离性

5.1.4.8 卷积与乘积

就是因为空间域上的卷积等于频率域的乘积,我们才能根据空间域的卷积核滤波,发现频率域的滤波函数 

5.2 频率域中的图像处理

先来看看频谱图和空间域图像的关系:

1、频谱图点的数量与图像

2、频谱图点的位置与图像

3、频谱图点的方向 

 方向相差90度,原因如下:

5.2.1 频率域的基本性质

  • 变换最慢的频率成分(u=v=0)对应一幅图像的平均灰度级
  • 当从变换的原点移开时,低频对应着图像的慢变换分量
  • 进一步移开原点时,较高的频率对应的图像中变化越来越快的灰度级,即边缘、噪声等灰度级突变的图像成分。

5.2.2 频率域图像处理流程

  1. 原始图像转化为数字图像(空间域表示)f(u,v)
  2. 乘上(-1)^(x+y)将图像中心化
  3. 利用二维离散傅里叶将图像从空间域转化为频率域F(u,v)
  4. 对F(u,v)乘上滤波函数H(u,v)得到过滤后的频率域F’(u,v)
  5. 对F’(u,v)进行二维离散傅里叶的逆变化
  6. 取5结果的实部
  7. 对6结果乘上(-1)^(x+y)得到滤波后的图像

5.2.3 滤波函数(频率域的滤波器)

5.2.3.1 理想低通滤波器

将H(u,v)函数画出来如下: 

处理图像后如下:

理想低通滤波器会出现严重的振铃现象,D0越小越容易出现 

振铃现象出现的原因:

5.2.3.2 巴特沃斯低通滤波器(BLPF)

处理后图像如下:

BLPF不存在振铃现象原因:

巴特沃兹低通滤波器处理的图像将不会有振铃现象。这是由于在滤波器的通带和阻带之间有一平滑过渡的缘故。它的H(u,v)不是陡峭的截止特性,它的尾部会包含大量的高频成分

5.2.3.3 高斯低通滤波器(GLPF)

处理后图像如下: 

高通滤波器和低通滤波器反一下就行了:

BHPF:

GHPF:

滤波器考点(必考)

解答:

5.3 图像恢复

图像恢复和图像增强的异同点(必考)

        相同点:两者都能增强输入图像的视觉质量

        不同点:1、图像增强是根据人的视觉系统特点,对图像进行增强,以取得较好的视觉质量(不考虑退化原因);2、图像恢复是根据相应的退化模型知识重建恢复原始的图像(考虑退化原因)。

5.3.1 图像退化

可以看到,第一幅图像是由于镜头聚焦不好引起的模糊,第二幅是由于小车运动产生的模糊,第三幅是大气湍流影响的结果,a 中,大气湍流可以忽略不计,b 为剧烈湍流影响的结果,c 和 d 分别为中等湍流和轻微湍流影响的结果。从以上几张图片可以看出,成像过程中不同因素的影响导致影响质量下降,这就是所谓的图像退化。

图像退化的定义:
图像的退化是指图像在形成、传输和记录过程中,由于成像系统、传输介质和设备的不完善,使图像的质量下降(变坏)。

其典型表现为: 模糊、失真、有噪声。

5.3.2 图像复原 

针对图像的模糊、失真、有噪声等造成的退化,我们需要对退化后的图像进行复原

图像复原就是尽可能恢复退化图像的本来面目,它是沿图像退化的逆过程进行处理,也就是如果我们知道图像是经历了什么样的过程导致退化,就可以按其逆过程来复原图像。

因此,图像复原过程流程如下:

找退化原因→建立退化模型→反向推演→恢复图像

典型的图像复原是根据图像退化的先验知识,建立退化现象的数学模型,再根据模型进行反向的推演运算,以恢复原来的景物图像。

因此,图像复原的关键是知道图像退化的过程,即图像退化模型。并据此采用相反的过程求得原始图像。

(一)、图像复原的方法
针对不同的退化问题,图像复原的方法主要有:代数方法恢复、运动模糊恢复、逆滤波恢复、维纳滤波恢复、功率谱均衡恢复、约束最小平方恢复、最大后验恢复、最大熵恢复、几何失真恢复等。

图像复原和图像增强的区别
区别如下:图像增强不考虑图像是如何退化的,而是主观上试图采用各种技术来增强图像的视觉效果。

因此,图像增强可以不顾增强后的图像是否失真,只要达到想要的目视效果就可以。

而图像复原就完全不同,需知道图像退化的机制和过程等先验知识,客观上找出一种相应的逆处理方法,从而得到复原的图像。

如果图像已退化,应先作复原处理,再作增强处理。

二者的目的都是为了改善图像的质量。

(二)、图像退化的数学模型
输入图像 f ( x , y ) 经过某个退化系统后输出的是一幅退化的图像。为了讨论方便,把噪声引起的退化即噪声对图像的影响一般作为加性噪声考虑。

原始图像 f ( x , y )  经过一个退化算子或退化系统 H ( x , y )的作用,再和噪声 n ( x , y )进行叠加,形成退化后的图像 g ( x , y )。

下图表示退化过程的输入和输出之间的关系,其中 H ( x , y )概括了退化系统的物理过程,它就是我们要寻找的退化数学模型。

5.3.3 图像逆滤波复原

根据上述所介绍的图像退化与复原的概念以及图像退化模型,如下图所示,原始图像 f ( x , y ) 经过退化系统 H以及噪声 n ( x , y ) 的影响后得到退化后的图像 g ( x , y ) ,经过复原系统 M将 g ( x , y ) 尽最大可能恢复到近似原图 f ’ ( x , y ),因此,对图像的复原可以看作是图像退化的逆过程。

由图像的退化模型及图像复原的基本过程可见,复原处理的关键在于对系统 H 的基本了解。由信号与系统的时域和频域分析与处理理论可知,对退化图像的恢复可以在时域或者频域来完成,时域是通过卷积实现,卷积是积分求和的过程,根据傅里叶变换的时域卷积性质,可以知道,频域
处理是通过乘积来实现。乘法计算比卷积计算简单,同时傅里叶变换的快速实现(FFT)使得对图像的频率域处理更为简单。因此,可以在频率域来解决该问题。

设图像退化前的傅里叶变换为F ( u , v ) ,退化后的傅里叶变换为G ( u , v ) ,系统函数即退化函数的傅里叶变换为 H ( u , v ),从频率域角度看,它使图像退化,因而反映了成像系统的性能。由前面得知的图像退化频域描述模型(如下式)

可知,在无噪声的理想情况下,上式可简化为

进行反傅立叶变换可得到f ( x , y ) 

以上就是逆滤波复原的基本原理。将 1 / H ( u , v )  称为逆滤波器。

该过程就是用退化函数除退化图像的傅里叶变换,得到退化前图像的傅里叶变换的估计,因此叫直接逆滤波图像复原,该方法是对经退化函数 H 退化的图像进行复原的最简单方法。

该过程就是用退化函数除退化图像的傅里叶变换,得到退化前图像的傅里叶变换的估计,因此叫直接逆滤波图像复原,该方法是对经退化函数 H 退化的图像进行复原的最简单方法。

当有噪声存在时, 

因此,可得

由该式可知,即使知道退化函数,也不能准确的复原图像,因为 $N(u, v) $未知,甚至有更糟的情况是

如果退化函数是零或是非常小的值时,则噪声与退化函数的壁纸 N ( u , v ) / H ( u , v ) 比较大,很容易支配 F ( u , v ) 的估计值,会对逆滤波复原的图像产生很大的影响,有可能使恢复得到的图像与原始 f ( x , y )相差很大,甚至面目全非。

解决这个问题的一种方法是限制滤波的频率,从频谱图可知,高频分量(通常对应的是噪声信号)的值接近 0,而 H ( 0 , 0 )  在频率域中通常是 H ( u , v )的最高值。因此可缩短滤波半径,使通过的频率接近原点,减少遇到零值的概率。

5.3.4 逆滤波复原步骤

6. 总结 

本文到这里就结束啦~~

目前已完成:

【数字图像处理】一篇搞定傅里叶变换-CSDN博客

【数字图像处理】一篇搞定图像傅里叶变换-CSDN博客

【数字图像处理】常用图像卷积核类型_常用的卷积核-CSDN博客

【数字图像处理】数学推导·图像傅里叶变换得到的频谱图的中心对称性以及高低频位置_傅里叶频谱高低频-CSDN博客

期待您的关注~~🥰🥰

猫猫陪你永远在路上💪💪

如果觉得对你有帮助,辛苦友友点个赞哦~ 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐