你看我既选了NLP专业课,又选了CV专业课,是不是很智能?

空域图像处理算子

基本运算

  • 加法:去除叠加性噪音,生成叠加效果
  • 减法:去除叠加图案,检测同一场景的图像变化,计算物体边界梯度
  • 乘法:图像的局部显示(二值蒙版)
  • 求反:获得阴图像,子图像的补图像,绘制区别于背景的可恢复图像
  • 与运算:获得两个子图像的相交子图
  • 或运算:合并子图像
  • 异或:获得相交子图像,绘制区别于背景的可恢复图像

几何变换

值不变,但位置变化

  • 平移
  • 旋转(绕原点α\alpha)
  • 水平镜像
  • 垂直镜像
  • 放缩
  • 拉伸

插值(漏点处理)

本节引用自CSDN:薇洛的打火机

通常情况下,一个整数位置(x,y)经过图像变换后,往往都位于非整数位置。此时就要采用插值技术。

映射算法
向前映射

输入图像上整数点坐标映射到输出图像之后,变成了非整数点坐标。因此,需要将其像素值按一定权重分配到其周围四个像素点上。对于输出图像而言,其整数点像素值周围会有很多输入图像像素映射过来,每个到其周围的非整数点像素值都会分配一定的灰度值到它上面,将这些分配而来的像素值叠加,就是输出图像整数点位置的像素值。由于这个分配、叠加的特性,向前映射法有时也叫像素移交映射。

因此,对于向前映射而言,输出图像某一点的像素值不能直接得到,需要遍历输入图像的所有像素值,对其进行坐标变换,分配像素值到整数位置,才能得到输出图像各像素点的像素值。这是向前映射法的缺点。

向后映射

我们知道输出图像上整数点位置(x’,y’)在变换前位于输入图像上的位置(x,y),一般来说这是个非整数点位置,利用其周围整数点位置的输入图像像素值进行插值,就得到了该点的像素值。我们遍历输出图像,经过坐标变换、插值两步操作,我们就能将其像素值一个个地计算出来,因此向后映射又叫图像填充映射。

插值算法
  • 最邻近插值法:采用最近点的复制
  • 双线性插值(一阶插值):已知正方形四个顶点的值,求正方形内部的点
  • 高阶插值:三次样条插值,卷积实现,计算量较大

图像增强算子

{\begin{cases} 扩展对比度的灰度变换\\ 消除噪声的各种平滑算法\\ 增强边缘的各种锐化技术 \end{cases}

灰度修正

灰度校正

当图像灰度与实际景物亮度不符时产生。

考虑灰度均匀的景物部分D,f(x,y)=C,(x,y)Df(x,y)=C, (x,y)\in Dgc(x,y)=e(x,y)Cg_c(x,y)=e(x,y)C,从而课反解出e。从而得到灰度校正公式

f(x,y)=Cg(x,y)gC(x,y)f(x,y)=C\frac{g(x,y)}{g_C(x,y)}

++灰度变换

整幅图像的灰度变化范围很小时产生,曝光不足引起。

可通过点运算(直接映射)来修正。

线性映射

Φ[f]=kf+b\Phi[f]=kf+b

  • k>1 对比度扩展的增强作用
  • k<1 对比度的压缩作用
  • k=1, b0b\not =0,灰度值整体移动(处理偏亮或偏暗)
分段线性变换

常分为三段处理

  • 两端裁剪
  • 锯齿形变换
  • 反转
  • 剪裁
  • 二值化
非线性变换
  • 对数变换:扩展低灰度的对比度,压缩高灰度的对比度
  • 指数变换
  • 同态滤波(先对数后指数)
  • 直方图变换
+++直方图变换
直方图均衡化

直方图:灰度级的函数,描述图像中具有该灰度级的像素的个数。其中横坐标为灰度级,纵坐标为对应频率。

直方图均衡的步骤:

  1. 统计原始图像各灰度级的像素数目nj,j=0,1,2,,L1n_j,j=0,1,2,\cdots,L-1
  2. 作灰度分布直方图Pf(fj)=njnP_f(f_j)=\frac{n_j}{n},其中n为图像的总像素数
  3. 计算累积分布函数C(f)=j=0kPf(fj)=T(rk)C(f)=\sum_{j=0}^kP_f(f_j)=T(r_k)
  4. 计算映射后的gj=(gmaxgmin)C(f)+gmin+0.5g_j=\lfloor(g_{max}-g_{min})C(f)+g_{min}+0.5\rfloor
  5. 统计映射后各灰度级的像素数目ni,i=0,1,,P1n_i,i=0,1,\cdots,P-1
  6. 计算输出图像直方图Pg(gi)=ni/n,i=0,1,,P1P_g(g_i)=n_i/n,i=0,1,\cdots,P-1
  7. 利用fjf_jgig_i的映射关系,修改原始图像的灰度级,获得直方图近似均匀的输出图像

本质是减少图像的灰度等级,以换取对比度的加大。可以自动增强整个图像的对比度。因此,有时候需要变换直方图为特定形状,从而选择性地增强某个灰度值范围内的对比度。

直方图规定化

直方图规定化可以令原始图像转换为期望输出图像的具有人为规定的直方图。设原始直方图Pf(fj)P_f(f_j)输出图像期望PZ(Zi)P_Z(Z_i)且我们假设变量取值区间相同。

步骤:

  1. 分别对Pf(fj)PZ(Zi)P_f(f_j),P_Z(Z_i)均衡化,得gm,yng_m,y_n;对取值gmyng_m\approx y_n处,将两次均衡结果组合
  2. 把两次映射组合成一个函数使得Pf(fj)PZ(Zi)P_f(f_j)\rightarrow P_Z(Z_i),即,记gm=T(fj),yn=G(Zi)g_m=T(f_j),y_n=G(Z_i)gmyng_m\approx y_n处,Zi=G1[T(fj)]Z_i=G^{-1}[T(f_j)]
  3. 获取PZ(Zi)P_Z(Z_i)

图像平滑

目的是去噪。

邻域平均
  • 4邻域,8邻域
  • 阈值的邻域平均
  • 邻域加权平均
空域低通滤波

由于噪声具有空间不相关性,在图像中噪声都比一般图像分量具有更高的空间频谱,因此可取空域低通滤波来消除图像噪声。

中值滤波

用窗口内像素的中位数代替窗口中心像素的灰度。

  • 快速算法

锐化

增强图像中对象的边缘。

经典方法

通过求解最大方向差分(数字梯度)来求解。算子矩阵的所有元素之和为0.

  • Roberts Opr.:

[1001]\left[ \begin{matrix} -1&0\\ 0&1 \end{matrix} \right]

  • Sobel Opr.:

[121000121]\left[ \begin{matrix} -1&-2&-1\\ 0&0&0\\ 1&2&1 \end{matrix} \right]

  • Prewitt Opr.:

[111000111]\left[ \begin{matrix} -1&-1&-1\\ 0&0&0\\ 1&1&1 \end{matrix} \right]

  • Isotropic Opr.:

[121000121]\left[ \begin{matrix} -1&-\sqrt{2}&-1\\ 0&0&0\\ 1&\sqrt{2}&1 \end{matrix} \right]

  • Laplacian Opr.:

[010141010]\left[ \begin{matrix} 0&1&0\\ 1&-4&1\\ 0&1&0 \end{matrix} \right]

  • 最大差分算子:2x2领域中的极差
  • Rosenfelf非线性门式算子
  • Kirsch算子
空域高通滤波

差分法的边缘算子本质上也可以算作卷积运算。

Canny算子:最优边缘检测器
  1. 高斯平滑
  2. 计算梯度幅度和方向
  3. 对幅值进行非极大值抑制
  4. 用双阈值算法检测和连接边缘
高斯平滑

使用二维高斯函数构造卷积矩阵,卷积完成。对于彩色图像,高斯滤波前需要进行灰度化。

计算梯度

一般用线性算子(Roberts,Sobel,Prewitt)计算水平和垂直方向差分GxG_xGyG_y,然后计算梯度

G=Gx2+Gy2θG=arctan(Gy/Gx)|G|=\sqrt{G_x^2+G_y^2}\\ \theta_G=arctan(G_y/G_x)

非极大值抑制

沿着梯度方向进行非极大值抑制。考察梯度方向上的三个点,如果中间的点是最大的,则置1,否则置0.

双阈值算法检测和边缘连接

选取高低两个阈值(一般为2:1).
对于大于高阈值的点直接置1,小于低阈值的点置0;两阈值之间的点仅在与高阈值点连接时才会被置1.

非线性构边处理/数学形态学

扩展/收缩算法:

  1. 给定原始图像f(x,y)f(x,y),统计直方图,选取灰度阈值,二值化为B(x,y)B(x,y)
  2. B(x,y)B(x,y)取反得B(x,y)\overline{B(x,y)}
  3. B(x,y)\overline{B(x,y)}执行1扩展(附近有1存在的0中心像素变为1)
  4. 取反计算S[B(x,y)]=E[B(x,y)]S[B(x,y)]=\overline{E[\overline{B(x,y)}]}
  5. 计算边缘Edges=B(x,y)S[B(x,y)]Edges=B(x,y)-S[B(x,y)]

开启和闭合可去除小的图像细节,但保证不产生全局失真。开启除突刺,闭合补缺口。

频域中图像处理算子

低通滤波/平滑

理想低通滤波器ILPF

H(u,v)={1D(u,v)D00D(u,v)>D0H(u,v)=\begin{cases} 1 & 若D(u,v)\le D_0\\ 0 & 若D(u,v)\gt D_0 \end{cases}

ILPF滤波后会导致模糊("振铃"特性);D0D_0越小振铃越大。

巴特沃斯低通滤波器BLPF

H(u,v)=11+0.414[D(u,v)/D0]2nH(u,v)=\frac{1}{1+0.414[D(u,v)/D_0]^{2n}}

允许了一部分高频分量通过,任何时候都没有明显的振铃效果。

指数滤波器ELPF

H(u,v)=exp(0.347[D(u,v)/D0]n)H(u,v)=exp(-0.347[D(u,v)/D_0]^n)

ELPF比BLTF的模糊增多,因为指数函数下降的快。

梯形滤波器TLPF

H(u,v)={10D(u,v)D0D(u,v)D1D0D1D0D(u,v)D10D(u,v)>D1H(u,v)=\begin{cases} 1& 0\le D(u,v)\le D_0\\ \frac{D(u,v)-D_1}{D_0-D_1}&D_0\le D(u,v)\le D_1\\ 0&D(u,v)>D_1 \end{cases}

有震荡,但比ILPF小;BLPF和ELPF不引起震荡或突变。

高通滤波/锐化

理想高通滤波器IHPF

H(u,v)={0D(u,v)D01D(u,v)>D0H(u,v)=\begin{cases} 0& D(u,v)\le D_0\\ 1&D(u,v)\gt D_0 \end{cases}

巴特沃斯高通滤波器BHPF

H(u,v)=11+0.414[D0/D(u,v)]2nH(u,v)=\frac{1}{1+0.414[D_0/D(u,v)]^{2n}}

指数高通滤波器EHPF

H(u,v)=exp(0.347[D0/D(u,v)]n)H(u,v)=exp(-0.347[D_0/D(u,v)]^n)

梯形滤波器THPF

H(u,v)={00D(u,v)D0D(u,v)D1D0D1D0D(u,v)D11D(u,v)>D1H(u,v)=\begin{cases} 0& 0\le D(u,v)\le D_0\\ \frac{D(u,v)-D_1}{D_0-D_1}&D_0\le D_(u,v)\le D_1\\ 1&D(u,v)>D_1 \end{cases}

高频加强滤波

为高频滤波传递函数增加常系数0<C<10\lt C\lt 1来补正低频信息。

+++同态滤波

压缩图像灰度,增强对比度。

  1. 取对数
  2. 傅里叶变换
  3. 滤波
  4. 傅里叶逆变换
  5. 指数运算

传递函数中,降低入射光分量(低频),提高反射光分量(高频)

图像复原

退化模型

g(x,y)=Hf(x,y)+η(x,y)g(x,y)=Hf(x,y)+\eta(x,y)

  • 线性
  • 非时变(H不随着t变化)
  • 空间位移不变(响应与位置无关)

线性、空间位移不变系统H对输入信号的响应就是系统输入信号与冲击响应函数的卷积。

复原问题就是从已知的g,h,ηg,h,\eta估计ff的过程。

复原的代数方法

  • 寻找一个估计,使它对事先确定的优度准则为最小

非约束复原

J(f^)=gHf^2J(\hat{f})=||g-H\hat{f}||^2

假设H是可逆方阵,则

f^=H1(HT)1HTg=H1g\hat{f}=H^{-1}(H^T)^{-1}H^Tg=H^{-1}g

约束复原法

加入约束条件,使用拉格朗日乘数法解决,有

f^=(QTQλ+HTH)1HTg\hat{f}=(\frac{Q^TQ}{\lambda}+H^TH)^{-1}H^Tg

图像复原的滤波方法

逆滤波

  • 消除大气扰动模糊
  • 消除高斯模糊

M(u)=1H(u)M(u)=\frac{1}{H(u)}

位逆滤波

原点附近进行逆滤波,而远处不处理。

M(u,v)={1H(u,v)u2+v2w21u2+v2>w2M(u,v)=\begin{cases} \frac{1}{H(u,v)}&u^2+v^2\le w^2\\ 1&u^2+v^2\gt w^2 \end{cases}

维纳滤波

又称最小均方差滤波。

???这里👴真的看不懂了,不过貌似并不是重点?

去噪复原

+++空域

均值滤波器
算术均值滤波器

去除均匀噪声和高斯噪声,但会造成一定程度的模糊

几何均值滤波器

能更好的去除高斯噪声,并保持边缘信息。但是对0敏感。

谐波均值滤波器

f(x,y)=mn(s,t)Sxy1g(s,t)f(x,y)=\frac{mn}{\sum_{(s,t)\in S_{xy}}\frac{1}{g(s,t)}}

对盐粒噪声效果好,但不适用于胡椒噪声。适合处理高斯噪声

逆谐波均值滤波器

f(x,y)=(s,t)Sxyg(s,t)Q+1(s,t)Sxyg(s,t)Qf(x,y)=\frac{\sum_{(s,t)\in S_{xy}}g(s,t)^{Q+1}}{\sum_{(s,t)\in S_{xy}}g(s,t)^Q}

Q称为阶数。可处理盐粒(Q<0Q\lt0)和胡椒噪声(Q>0Q\gt 0),但不能同时进行。
均匀噪声和高斯噪声均可处理。

统计排序滤波器
  • 中值滤波器:胡椒和盐粒噪声上表现很好。
  • 最大值滤波器:减少胡椒噪声
  • 最小值滤波器:减少盐噪声
  • 中点(最大值和最小值的平均值)滤波器:集合了统计排序和均值;对均匀分布和高斯分布有最好的去噪效果
  • 修正的阿尔法均值滤波器(去掉若干最高分最低分,求均值滤波),擅长去除椒盐噪声与其他类型噪声一起污染过的图片。
自适应的中值滤波器(AMF)

弥补普通MF在高密度早剩下的不足。AMF可以动态改变滤波器窗口大小,还会根据条件判定当前像素是否是噪声。

设:

Zmin=SxyZmax=SxyZmed=SxyZxy(x,y)Smax=SxyZ_{min}=S_{xy}中的最小值\\ Z_{max}=S_{xy}中的最大值\\ Z_{med}=S_{xy}的中位数\\ Z_{xy}表示(x,y)处灰度值\\ S_{max}=S_{xy}最大窗口尺寸\\

AMF有两个处理过程,A和B:

A:

  1. A1=ZmedZminA1=Z_{med}-Z{min}
  2. A2=ZmedZmaxA2=Z_{med}-Z{max}
  3. 如果A1>0,A2<0A1>0,A2<0则goto B
  4. 否则,增大窗口尺寸
  5. 如果窗口尺寸Smax\le S_{max}则goto 1
  6. 否则输出ZmedZ_{med}

B:

  1. B1=ZxyZminB1=Z_{xy}-Z{min}
  2. B2=ZxyZmaxB2=Z_{xy}-Z{max}
  3. 如果B1>0,B2<0B1>0,B2<0则输出ZxyZ_{xy}
  4. 否则输出ZmedZ_{med}

频域

  • 带阻滤波器
  • 带通滤波器
  • 陷波滤波器(阻带很窄的带阻滤波器)

图像分割

指,把图像划分为不同的区域。我们感兴趣的部分称为目标/前景.

  • 基于区域间的不连续性:找到图像中有区域间突变的边缘
  • 基于区域内部的相似性:通过阈值,区分出不同子区域

点检测

[111181111]\left[ \begin{matrix} -1&-1&-1\\ -1&8&-1\\ -1&-1&-1 \end{matrix} \right]

线检测

[121121121]\left[ \begin{matrix} -1&2&-1\\ -1&2&-1\\ -1&2&-1 \end{matrix} \right]

边缘检测

使用拉普拉斯算子。

基于跟踪的图像分割

轮廓跟踪法

  1. 扫描图像,寻找A0A_0,初始化扫面方向变量dir
  2. 逆时针方向搜索3x3邻域,搜索到第一个与当前像素值相同的像素即新的边界点AnA_n,同时更新dir为新方向
  3. 如果An=A1,An1=A0A_n=A_1, A_{n-1}=A_0则停止搜索。否则继续搜索
  4. 所有A构成的边界即为待跟踪边界
  5. 如果原图像中某一点和他的八邻域都是黑色,则它是内部点,删除之。

光栅跟踪法

  1. 确定检测阈值d,跟踪阈值t,d>td\gt t
  2. 检测准则,对图像逐行扫描,每一行中灰度值大于等于d的点记为1
  3. 设(i,j)为接受对象点,如果那么(i+1,j-1),(i+1,j),(i+1,j+1)中,大于等于d的点也是接受对象点
  4. 重复3,直到所有接受点扫描完毕

Hough变换

解决边界点集连接成线的问题。

参数空间与原空间中的点和线具有对于关系。从而,参数平面上相交直线最多的点对应的直线就是我们要求的线。

基于灰度阈值的分割

适用于求解前景与背景灰度差异较大的情况。

求解灰度直方图中的双峰或多峰,并以双峰之间的谷底作为阈值。

全局阈值算法

整幅图像使用同一个阈值,适用于对比度大的情况

迭代式阈值T可以这样计算:

  1. 选取初始估计值T(一般为平均值)
  2. 使用T分割图像为G1,G2G_1,G_2,计算它们的灰度均值μ1,μ2\mu_1,\mu_2
  3. μ1,μ2\mu_1,\mu_2的均值作为新的T
  4. 重复2-3,直到连续两次的T之间的差小于给定上界。
  • 单阈值只能对双峰直方图效果较好;对于其它直方图,需要更多阈值。

自适应阈值

单值阈值会因为不均匀的光照而失效。需要将每个像素的阈值设定依赖于其位置,如此称为自适应阈值。

大津阈值分割

大津阈值法可自动寻找阈值来完成图像划分。

把直方图在某一阈值处分割为两组,当组间方差最大时,确定阈值。

空间聚类

聚类比基于边缘检测的方法更抗噪声。

K-均值聚类
  1. 任意选取K各初始类均值
  2. 第i次迭代时,根据如下准则赋该点为K类之一(即每个点赋给均值离他最近的类):

xQl(i),if g(x)μl(i)<g(x)μj(i)x\in Q_l^{(i)}, if\space |g(x)-\mu_l^{(i)}|\lt |g(x)-\mu_j^{(i)}|

  1. 对每个类更新均值

μj(i+1)=1Qj(i)xQj(i)g(x)\mu_j^{(i+1)}=\frac{1}{|Q_j^{(i)}|}\sum_{x\in Q_j^{(i)}}g(x)

  1. 如果所有的类都有μj(i+1)=μj(i)\mu_j^{(i+1)}=\mu_j^{(i)},则算法收敛;否则继续迭代

区域生长

从单个像素出发,逐渐合并以形成所需的分割区域,称为区域生长

分裂合并

先将图片分解为若干子区域,如果临近子区域之间满足相似条件则将其合并。