skywircL

skywircL's Blog

图像处理期末复习指南

Posted at # CV
by skywircL / copilot
blog: skywircL'blog

基础部分

RGB颜色模型

常见的各种颜色光,都可以由红(R)、绿(G)、蓝(B)三种颜色光按不同比例混合而成。

颜色C= r[R]+ g[G]+b[B]

其中黄和蓝互为补色

CMY减色模型

颜色不是来自光线的叠加,而是来自光线照射到颜料以后,被颜料吸收一部分而反射剩余的光线,故称为减色模型。 当所有颜料都加入成为黑色,只有颜料减少时才开始出现色彩,故称为减色模型。

CMYK模型

所有油墨都包含杂质,CMY三种混合实际上产生一种浑浊的棕色

直接加入黑色更经济 所以加入一种黑色(K) ——四色打印

优点

  1. CMY可以生成任何颜色 2. 适用于印刷或打印

缺点

  1. 难以编辑(视觉对颜色的感知是非线性的) 2. 颜色的生成方式不直观
  2. 与设备相关

HSI模型

HSI模型由三个分量组成:

  1. Hue(色调):用角度度数(0°-360°)来表示颜色的主体感受,如红色、蓝色等。
  2. Saturation(饱和度):表示颜色的纯度或者颜色的浓淡程度,范围是0%-100%。
  3. Intensity(亮度):表示颜色的明暗程度,范围是0%-100%。

HSI模型的优点

  1. 可以生成很多颜色

  2. 从心理学的角度出发,符合人的主观感受

  3. 色度和亮度分开——有什么作用?

便于图像处理 分离亮度和色度信息可以方便地对图像的亮度和颜色进行独立调整。比如只调整亮度而不影响颜色,或者只改变颜色而保持亮度不变。这在图像增强、对比度调整等图像处理操作中非常有用。

提高鲁棒性 亮度分量对光照变化更加敏感,而色度分量则相对稳定。将两者分开可以使得在光照条件变化时,仍然能够可靠地提取颜色信息,提高了算法的鲁棒性。

符合人眼感知 人眼对亮度的变化比对颜色的变化更加敏感。HSI模型中将亮度独立出来,更符合人眼的感知特点,也更易于人们理解和使用。

有利于压缩 在图像和视频压缩中,可以Quantization对亮度分量使用更高的精度,而对色度分量使用较低的精度,从而在保证视觉质量的同时减小数据量,提高压缩效率。

便于特征提取 在计算机视觉、模式识别等领域,色度分量可以作为提取图像特征的重要线索,如皮肤颜色检测、道路检测等,分离出来有利于特征的提取和表示。

彩色图像处理

灰度图像处理:灰度图变灰度图 伪彩色图像处理:灰度图变彩色图 灰度化:彩色图变灰度图 彩色变换:彩色图变彩色图

伪彩色图像处理

灰度切分

同理可得,如果需要M种颜色,就切分出M个阶梯,一个阶梯表示一个颜色

灰度到颜色变换

简单理解就是map映射,将原始灰度图像中的灰度值映射到一个选定的颜色映射表(Color Map)中,从而将每个像素的灰度值赋予一种特定的颜色。

频域处理

简单了解即可,感觉不太会考这个

真彩色图像处理

两种方法

  1. 单独处理:单独处理每个分量图

输出图像的R’只和输入图像的R有关

输出图像的G’只和输入图像的G有关

输出图像的B’只和输入图像的B有关

  1. 整体处理

输出图像的R’和输入图像的R,G,B都有关

输出图像的G’和输入图像的R,G,B都有关

输出图像的B’和输入图像的R,G,B都有关

数字图像的表示

黑白图像

或称为二值图像,0/1图像

用1bit表示两种颜色 0为黑色, 1为白色

灰度图像

只有明暗不同,没有色彩

8bit灰度图,共有256级灰度。0黑——255白

彩色图像

24bit彩色图像(真彩色)

通常用8bit表示每个颜色分量。有时用12bit。

R—— 8 bits,0——255 G—— 8 bits,0——255 B—— 8 bits,0——255

256 * 256 * 256=16 777 216种颜色。

颜色通道

数字图像

什么是数字图像 - >对连续图像数字化(或离散化)的结果,也称离散图像

如何将模拟图像转换成数字图像

采样 - > 量化 - > 编码

像素间关系

欧式距离: 两个像素点在平面上直线距离 $$ d(A,B) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} $$

城区距离: 曼哈顿距离或绝对值距离。它是两个像素坐标分量的绝对差之和,类似于在城市街区中行走的路径 $$ d(A,B) = |x_2 - x_1| + |y_2 - y_1| $$

棋盘距离 : 也称最大距离。它是两个像素在水平和垂直方向上较大的坐标分量差值。 $$ d(A,B) = \max(|x_2 - x_1|, |y_2 - y_1|) $$

什么是图像的直方图

图像的直方图是一种统计工具,用于表示数字图像中亮度分布的情况。它显示了图像中每个亮度值的像素数量。在直方图中,横坐标代表亮度值,纵坐标代表对应亮度值的像素数。这种图表可以帮助我们理解图像的整体亮度分布,例如,哪些亮度值是最常见的,以及图像是偏暗还是偏亮。

噪声

高斯噪声、均匀噪声、指数噪声、椒盐噪声

直方图增强(计算重点)

直方图均衡化

什么形状的直方图对应的图像比较好?

如果一幅图像的直方图是均匀分布,则该图像的质量是好的。

均衡化步骤:

其中L表示灰度取值,MN即像素总共的个数

接着求s ,结果四舍五入 $$ s_k=(L-1)\sum_{i=0}^k p(r_i) $$ 将s值相同的合并|r_k|,得到|s_k| $$ p_s(s_k)=\frac{|s_k|}{NM} $$ 重新绘制即可

直方图规定化

直方图规定化(Histogram Specification)是一种基于直方图的图像处理技术,它通过将一幅输入图像的直方图分布**变换为期望的目标直方图分布,**从而改变图像的对比度和亮度特性。

目的:作灰度变换,使得变换后图像的直方图具有规定的形状。

规定化步骤:

将原图均衡化得到r - > s的变换

将规定图也均衡化,得到z-> u的变换

最后一步找r到z的变换

如上图所示:利用B‘到B的逆变换

【原理】:B到B‘ 假设有q -> 8

那么逆过来,如果A‘中有8,想要变换到B,那么就直接由8 ->q

例子如下,其中r到s 有0到1

z到u有 3到1

则r到z有0到3

【注】对于s,如果没有u与之相等,就选一个最接近s的u

与u对应的z可能不止一个,选最小者

对于连续函数来说,他的逆函数为反函数(指定图均衡化变换的反函数)

图像增强

什么是图像增强?

加强突出有效信息,削弱抑制无效信息

图像运算

图形学已经学过一遍了,这边就列举几个相对比较复杂的式子,简单提一下

旋转变换

$$ \begin{bmatrix} x’ \ y’ \end{bmatrix} = R(\theta) \begin{bmatrix} x \ y \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} $$

缩放变换

$$ \begin{bmatrix} x’ \ y’ \end{bmatrix} = S \begin{bmatrix} x \ y
\end{bmatrix} = \begin{bmatrix} s_x & 0 \ 0 & s_y \end{bmatrix} \begin{bmatrix} x \ y \end{bmatrix} $$

当s_x=s_y时,为均匀缩放,当s_x != s_y时,为非均匀缩放

平移变换

平移变换比较特殊,这里提一下

平移变换的数学表示不能写作线性变换的矩阵形式,只能记作 $$ \begin{bmatrix} x’\ y’ \end{bmatrix} = \begin{bmatrix} x\ y \end{bmatrix}

  • \begin{bmatrix} t_x\ t_y \end{bmatrix} $$

说明平移操作不是线性变换。但是我们不希望把平移操作看作特殊变换,因此需要把这些变换统一起来,就引入了齐次坐标。

对于点坐标的拓展表示: $$ \begin{bmatrix} x \ y \ 1 \end{bmatrix} $$ 二维坐标(x, y)扩展为三维齐次坐标(x, y, 1),补一个1

则变换矩阵可得: $$ T = \begin{bmatrix} 1 & 0 & t_x \ 0 & 1 & t_y \ 0 & 0 & 1 \end{bmatrix} $$ 通过以下式子解出t_x 和 t_y即可 $$ \begin{bmatrix} x’ \ y’ \ 1 \end{bmatrix} = T \begin{bmatrix} x \ y \ 1 \end{bmatrix} = \begin{bmatrix} 1 & 0 & t_x \ 0 & 1 & t_y \ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \ y \ 1 \end{bmatrix} $$

灰度变换

$$ g(x,y)=T(f(x,y)) $$

输出像素的灰度值只和输入像素的灰度值有关

线性变换:

图像求反: $$ s = (L-1)-r $$ 分段:

作用:突出感兴趣的灰度,抑制不感兴趣的灰度

阶梯量化:

灰度切片

空域滤波

什么是空域滤波?

在空域实现频域的某种操作

它直接对图像每个像素点的灰度值进行操作,通过运用不同的根据滤波器的作用不同,空域滤波可分为不同类型

线性滤波器

为什么线性滤波器的k值之和为1?

线性滤波器的卷积核(也称为滤波模板)系数k的和需要等于1的原因,主要是为了保证滤波后图像的灰度值不会发生整体偏移或者失真。

线性滤波器的作用;1.平滑,2.去噪声

线性滤波器的优缺点:

优点 :1.使图像更加柔和 2.减弱噪声

缺点:1. 会使得图像变得模糊降低对比度 2.不能消除噪声

非线性滤波器

中值滤波器:

中值滤波(Median Filtering)是一种非线性滤波方法,它的计算原理是:

  1. 选取待处理像素及其邻域像素构成一个邻域窗口(如3x3、5x5等)。
  2. 在该邻域窗口内,将包括当前待处理像素在内的所有像素的灰度值从小到大排序。
  3. 取排序后位于中间的那个灰度值作为输出,即中值(median)。
  4. 将该中值赋给当前待处理像素,作为输出图像在该点的像素值。
  5. 依次滑动邻域窗口,对图像每个像素重复上述操作,得到整个输出图像。

相对于均值滤波器,中值滤波器有以下优点:

  1. 可平滑图像
  2. 消除孤立噪声
  3. 减轻模糊,保留原有图像信息

除了中值滤波器,非线性滤波器还有最大值滤波器,最小值滤波器,还有中点滤波器

其中中点滤波器的计算方法为,是最大值与最小值之和的二分之一 $$ g(x,y) = \frac{1}{2}(\max_{f(x,y) \in W}{f(x,y)}+ \min_{f(x,y \in W)}{f(x,y)}) $$

锐化滤波(没太掌握)

图像的边缘或轮廓太模糊,需要使用锐化滤波增强它。

锐化的目的:使边缘、轮廓的灰度反差更强。

需要一个量来刻画每个像素(x,y)的灰度变化大小,使用像素值的梯度(gradient)来刻画图像变化的大小

拉普拉斯算子的连续形式(f(x,y)) $$ \nabla^2 f(x,y) = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} $$ 离散形式 $$ \begin{bmatrix} 0 & 1 & 0\ 1 & -4 & 1\ 0 & 1 & 0 \end{bmatrix} $$

频域增强

高通滤波器:保留高频,滤除低频

低通滤波器:选择频率D0,D0以内都保留,D0外的都滤除 作用:平滑图像

图像压缩

图像压缩:用更少的数据量表示原图像中的信息

因为压缩是通过改变编码实现的,又称为图像编码。

图像为什么可以压缩? ——因为有冗余

图像冗余种类:

  1. 编码冗余

    编码冗余与图像数据的表示方式有关。例如,在一个8位灰度图像中,每个像素使用8位来表示256个可能的灰度值。但是,如果图像只使用了其中的一小部分灰度值,那么就存在编码冗余。通过使用更有效的编码方式(如霍夫曼编码),可以减少这种冗余。

  2. 空间冗余

    空间冗余(Spatial Redundancy): 空间冗余指的是图像中相邻像素之间的相关性。在大多数自然图像中,相邻像素往往具有相似的值。这种相似性可以被利用来压缩图像,因为我们可以用较少的信息来表示相似的像素区域。

  3. 心理视觉冗余

    心理视觉冗余利用了人类视觉系统的特性。我们的眼睛对某些类型的信息比其他信息更敏感。例如,我们对亮度的变化比对颜色的细微变化更敏感。通过去除人眼不太敏感的信息,可以在不明显降低感知质量的情况下压缩图像。

压缩质量的评价准则

客观:

1.压缩比 2.失真 3. 算法复杂度 4. 算法通用性。。。等等

主观评价

lavg

熵是平均编码长度的下界

熵就像光速一样,是极限。

**如果平均编码长度大于熵,则存在编码冗余。 **

目标:编码平均长度尽量和H接近。

最大的情况:均匀分布

所有分布中,均匀分布的熵最大。

最小的情况:退化分布

熵的计算公式: $$ H = -\sum_{i=1}^{N} p_i \log_2 p_i $$

图像压缩算法

这里只提位平面编码,默认香农和哈夫曼已经学过

游程编码

游程编码(Run-Length Encoding, RLE)是一种简单而有效的无损压缩编码方式,主要针对具有相同数值连续出现多次的数据,用连续数据的值和连续出现的次数(游程长度)来表示,从而达到压缩的目的。

具体来说,游程编码的工作原理是:

  1. 扫描原始数据,识别连续重复的值及其游程长度
  2. 用一个值-计数对(value, count)来表示该游程
  3. 重复以上过程,直到扫描完整个数据序列

例如,对于如下数据序列:

1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6,6,6

可以用如下游程编码表示:

(1,4), (2,3), (3,5), (4,8), (5,4), (6,6)

其中(1,4)表示值1连续出现4次。

位平面编码

位平面编码(Bit-Plane Coding)是一种用于图像和视频压缩的技术,它将图像或视频帧的每个像素表示为二进制编码,然后对每个二进制位位平面进行单独编码。

步骤:

将图像或视频帧的每个像素值转换为二进制表示,比如对于8位灰度图像,每个像素用8位二进制数表示。

从最高有效位开始,将所有像素的同一位组成一个二进制位平面。因此,对于8位像素,将产生8个位平面。

对每个位平面分别进行编码,通常使用游程编码(Run-length Encoding)等技术。由于相邻像素具有相关性,每个位平面往往具有较大的空间冗余。

二值编码的缺点:

假设有这样一行像素值:127 128 127 128 127 128 …每相邻两个像素值只相差1,但是它们的二进制表示在每个位平面上都是不同的:

127的二进制是: 01111111 128的二进制是: 10000000

我们可以看到,在最高有效位(MSB)这个位平面上,127是0,128是1,它们是完全不同的; 在次高有效位这个位平面上,127是1,128是0,也完全不同; … 一直到最低有效位(LSB),127是1,128是0,仍然不同。

这意味着,对于这样的数据,在任何一个位平面上,都没有出现足够长的游程,无法高效地应用游程编码压缩。导致即使使用位平面分解和游程编码的组合方式,压缩效果也不太理想。

如何解决——格雷码

ai, 0 <=i <=7 为二值分解的结果,Grey码为: $$ g_i = \begin{cases} a_i \oplus a_{i+1}, & 0 \leq i \leq 6\ a_i, & i = 7 \end{cases} $$ 优点:相邻的灰度值只有1个比特位不相同。

差分编码(暂时跳过,感觉不重要,但是可以了解下)

JPEG概要

JPEG (Joint Photographic Experts Group) 联合图像专家组

专家组开发的算法称为JPEG算法。

1992年成为国际标准,因此又称为JPEG标准。

JPEG格式:大多数浏览器都支持这种格式的文件。 后缀:.JPG或.JFF(或JFIF)。