图像之间的算术操作其实就是阵列操作,例如:
[
a
11
a
12
a
21
a
22
]
[
b
11
b
12
b
21
b
22
]
=
[
a
11
b
11
+
a
12
b
21
a
11
b
12
+
a
12
b
22
a
21
b
11
+
a
22
b
21
a
21
b
12
+
a
22
b
22
]
\left[ \begin{matrix} a_{11} & a_{12} \\ a_{21}&a_{22} \end{matrix} \right] \left[ \begin{matrix} b_{11} & b_{12} \\ b_{21}&b_{22} \end{matrix} \right] = \left[ \begin{matrix} a_{11} b_{11} +a_{12}b_{21}& a_{11}b_{12} +a_{12} b_{22}\\ a_{21}b_{11} +a_{22}b_{21}&a_{21}b_{12}+a_{22}b_{22} \end{matrix} \right]
[a11a21a12a22][b11b21b12b22]=[a11b11+a12b21a21b11+a22b21a11b12+a12b22a21b12+a22b22]
而像素之间操作有加减乘除。
笔者在学习之初,不太明白这个算术操作的意义,特此记录。
1.图像相加平均(降噪)
《数字图像处理》第三版中,涉及到一个公式即:
g
(
x
,
y
)
=
f
(
x
,
y
)
+
η
(
x
,
y
)
g(x,y)=f(x,y)+η(x,y)
g(x,y)=f(x,y)+η(x,y)
这里假设在每一对坐标
(
x
,
y
)
(x,y)
(x,y)处,噪声是不相关的(变量不相关,它们的协方差为0),并且其均值为零。一下步骤的目的是通过一组带噪图像
{
g
i
(
x
,
y
)
}
{g_i(x,y)}
{gi(x,y)}的相对减少噪声。
如果图像
g
‾
(
x
,
y
)
\overline{\text{g}}(x,y)
g(x,y)是通过对
K
K
K幅不同的噪声图像进行平均形成的:
g
‾
(
x
,
y
)
=
1
K
∑
i
=
1
k
g
i
(
x
,
y
)
\overline{\text{g}}(x,y)=\frac{1}{K}\sum_{i=1}^kg_i(x,y)
g(x,y)=K1∑i=1kgi(x,y)会遵循
E
(
g
‾
(
x
,
y
)
)
=
f
(
x
,
y
)
E( \overline{\text{g}}(x,y) )=f(x,y)
E(g(x,y))=f(x,y)和
б
g
‾
(
x
,
y
)
2
=
1
K
б
η
(
x
,
y
)
2
б^2_{\overline{\text{g}}(x,y)}=\frac{1}{K}б^2_{η(x,y)}
бg(x,y)2=K1бη(x,y)2
证明:
数学期望
E
(
g
‾
(
x
,
y
)
)
=
E
[
1
K
∑
i
=
1
k
g
i
(
x
,
y
)
]
=
E
[
1
K
∑
i
=
1
k
f
i
(
x
,
y
)
+
1
K
∑
i
=
1
k
η
i
(
x
,
y
)
]
=
1
K
E
∑
i
=
1
k
f
i
(
x
,
y
)
+
1
K
E
∑
i
=
1
k
η
i
(
x
,
y
)
=
1
K
E
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
=
f
(
x
,
y
)
E( \overline{\text{g}}(x,y) )\\=E[\frac{1}{K}\sum_{i=1}^kg_i(x,y)]\\=E[\frac{1}{K}\sum_{i=1}^kf_i(x,y)+\frac{1}{K}\sum_{i=1}^kη_i(x,y)]\\=\frac{1}{K}E\sum_{i=1}^kf_i(x,y)+\frac{1}{K}E\sum_{i=1}^kη_i(x,y)\\=\frac{1}{K}E[\sum_{i=1}^kf_i(x,y)]\\=f(x,y)
E(g(x,y))=E[K1∑i=1kgi(x,y)]=E[K1∑i=1kfi(x,y)+K1∑i=1kηi(x,y)]=K1E∑i=1kfi(x,y)+K1E∑i=1kηi(x,y)=K1E[∑i=1kfi(x,y)]=f(x,y)
由于噪声是随机且不相关的,所以
1
K
E
∑
i
=
1
k
η
i
(
x
,
y
)
=
0
\frac{1}{K}E\sum_{i=1}^kη_i(x,y)=0
K1E∑i=1kηi(x,y)=0
协方差表征变量之间的相关性,不相关则它们的协方差为0
这里笔者记录一下以下转换的步骤
=
1
K
E
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
=
f
(
x
,
y
)
=\frac{1}{K}E[\sum_{i=1}^kf_i(x,y)]\\=f(x,y)
=K1E[∑i=1kfi(x,y)]=f(x,y)
这里涉及到伯努利方程大数定理,具体定义为:设
n
A
n_A
nA是
n
n
n次独立重复试验中事件A发生的次数,
p
p
p是事件A在每次试验中发生的概率,则对于任意整数
ε
>
0
ε>0
ε>0。这里我不多加赘述,具体可查阅大学概率论相关书籍。
这里直接写出该定律的含义:
(1)当
n
n
n很大,服从同一分布的随机变量的算术平均数将依概率接近于这些随机变量的数学期望。当用于抽样调查时,随着样本容量n的增加,样本平均数将接近于总体平均数。
(2)以严格的数学形式描述了频率的稳定性,当试验次数
n
n
n很大时,常以事件发生的频率来近似估计其发生的概率。(当
n
n
n很大时,频率可近似认为概率)
具体公式如下:
假设
n
A
=
∑
i
=
1
n
X
i
n_A=\sum_{i=1}^nX_i
nA=∑i=1nXi为事件A发生的次数,
n
n
n为总次数,频率为
f
n
=
n
A
n
=
1
n
∑
i
=
1
n
X
i
f_n=\frac{n_A}{n}=\frac{1}{n}\sum_{i=1}^nX_i
fn=nnA=n1∑i=1nXi,p为概率
E
(
n
A
n
)
=
E
(
1
n
∑
i
=
1
n
X
i
)
=
1
n
E
(
∑
i
=
1
n
X
i
)
=
p
E(\frac{n_A}{n})=E(\frac{1}{n}\sum_{i=1}^nX_i)=\frac{1}{n}E(\sum_{i=1}^nX_i)=p
E(nnA)=E(n1∑i=1nXi)=n1E(∑i=1nXi)=p
由上述大数定理(2)中可得说明
p
=
f
n
p=f_n
p=fn
1
K
E
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
=
p
=
f
n
=
1
K
∑
i
=
1
k
f
i
(
x
,
y
)
\frac{1}{K}E[\sum_{i=1}^kf_i(x,y)]\\=p=f_n \\=\frac{1}{K}\sum_{i=1}^kf_i(x,y)
K1E[∑i=1kfi(x,y)]=p=fn=K1∑i=1kfi(x,y)
由于
f
i
(
x
,
y
)
f_i(x,y)
fi(x,y)为多张相同的图像,所以
1
K
∑
i
=
1
k
f
i
(
x
,
y
)
=
1
K
K
f
(
x
,
y
)
=
f
(
x
,
y
)
\frac{1}{K}\sum_{i=1}^kf_i(x,y)=\frac{1}{K}Kf(x,y)=f(x,y)
K1∑i=1kfi(x,y)=K1Kf(x,y)=f(x,y)
方差
σ
2
[
g
‾
(
x
,
y
)
]
=
σ
2
(
1
K
∑
i
=
1
k
g
i
(
x
,
y
)
)
=
σ
2
[
1
K
∑
i
=
1
k
f
i
(
x
,
y
)
+
1
K
∑
i
=
1
k
η
i
(
x
,
y
)
]
=
1
K
2
σ
2
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
+
1
K
2
σ
2
[
∑
i
=
1
k
η
i
(
x
,
y
)
]
=
1
K
σ
η
(
x
,
y
)
2
σ^2[\overline{\text{g}}(x,y)]\\=σ^2(\frac{1}{K}\sum_{i=1}^kg_i(x,y))\\=σ^2[\frac{1}{K}\sum_{i=1}^kf_i(x,y)+\frac{1}{K}\sum_{i=1}^kη_i(x,y)]\\=\frac{1}{K^2}σ^2[\sum_{i=1}^kf_i(x,y)]+\frac{1}{K^2}σ^2[\sum_{i=1}^kη_i(x,y)]\\ =\frac{1}{K}σ^2_{η(x,y)}
σ2[g(x,y)]=σ2(K1∑i=1kgi(x,y))=σ2[K1∑i=1kfi(x,y)+K1∑i=1kηi(x,y)]=K21σ2[∑i=1kfi(x,y)]+K21σ2[∑i=1kηi(x,y)]=K1ση(x,y)2
前两步这里不叙述了,记得公式
D
(
a
X
+
b
)
=
a
2
D
(
X
)
D(aX+b) = a^2D(X)
D(aX+b)=a2D(X) ;很简单。主要讲解一下
=
1
K
2
σ
2
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
+
1
K
2
σ
2
[
∑
i
=
1
k
η
i
(
x
,
y
)
]
=
1
K
σ
η
(
x
,
y
)
2
=\frac{1}{K^2}σ^2[\sum_{i=1}^kf_i(x,y)]+\frac{1}{K^2}σ^2[\sum_{i=1}^kη_i(x,y)]\\ =\frac{1}{K}σ^2_{η(x,y)}
=K21σ2[∑i=1kfi(x,y)]+K21σ2[∑i=1kηi(x,y)]=K1ση(x,y)2
这里得先明白一个定义,
D
(
X
)
=
E
[
(
X
−
E
(
X
)
)
2
]
D(X)=E[(X-E(X))^2]
D(X)=E[(X−E(X))2]当且仅当
X
=
E
(
X
)
X=E(X)
X=E(X)时
D
(
X
)
=
0
D(X)=0
D(X)=0
所以由期望
E
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
=
f
(
x
,
y
)
E[\sum_{i=1}^kf_i(x,y)]=f(x,y)
E[∑i=1kfi(x,y)]=f(x,y)得
σ
2
[
∑
i
=
1
k
f
i
(
x
,
y
)
]
=
0
σ^2[\sum_{i=1}^kf_i(x,y)]=0
σ2[∑i=1kfi(x,y)]=0
所以这里我们只需要计算
1
K
2
σ
2
[
∑
i
=
1
k
η
i
(
x
,
y
)
]
\frac{1}{K^2}σ^2[\sum_{i=1}^kη_i(x,y)]
K21σ2[∑i=1kηi(x,y)]这部分。
之前我们提到噪声时不相关的,这里涉及到概念设X,Y,是两个不相关的随机变量数学期望全为零,方差都是1 。
所以我们得到
1
K
2
K
σ
2
∗
1
=
1
K
σ
2
\frac{1}{K^2}Kσ^2*1=\frac{1}{K}σ^2
K21Kσ2∗1=K1σ2,
我们把
σ
η
(
x
,
y
)
2
σ^2_{η(x,y)}
ση(x,y)2标记为
η
η
η为所有坐标
(
x
,
y
)
(x,y)
(x,y),所以得到了
σ
2
[
g
‾
(
x
,
y
)
]
=
1
K
σ
η
(
x
,
y
)
2
σ^2[\overline{\text{g}}(x,y)]=\frac{1}{K}σ^2_{η(x,y)}
σ2[g(x,y)]=K1ση(x,y)2
我们也可得到标准差为:
1
K
σ
η
(
x
,
y
)
2
=
1
K
σ
η
(
x
,
y
)
\sqrt{\frac{1}{K}σ^2_{η(x,y)}}={\frac{1}{\sqrt K}σ_{η(x,y)}}
K1ση(x,y)2=K1ση(x,y)
经历了数学推导,我们也明白了,对带噪声图像相加平均需要带噪声的数量很大,但是也避免输出图像带来模糊和替他人为缺陷。特别是天文学领域图片处理。可以通过长时间观察统一场景(拍摄大量图像并实现带噪图像平均)来达到降噪的目的。
2.增强差别的图像相减
图像相减常用于增强图像之差,即两个图像的区别在哪里。你可以想象一下以前玩的找不同游戏,两张差不多一样的照片,找出它们的不同点。
图像差公式为: g ( x , y ) = f ( x , y ) − h ( x , y ) g(x,y)=f(x,y)-h(x,y) g(x,y)=f(x,y)−h(x,y)
这里演示一下
这两张猫猫图片,中间铃铛不同,运用图像相减可得到
中间部位不同处十分明显,
代码如下所示,此代码运用C++程序调用Opencv库实现,注意输入图像尺寸大小要一致
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src1 = imread("D:\\User\\images\\FindDifferent.jpg");
Mat src2 = imread("D:\\User\\images\\FindDifferent1.jpg");
if (src1.empty() && src2.empty())//判断图像是否存在
{
cout << "unable to find picture..." << endl;
}
//减法
Mat sub_result = Mat::zeros(src1.size(), src1.type());//创建与src1一样尺寸的空白图像
subtract(src1, src2, sub_result);//实现图像相减
imshow("sub_result", sub_result);//显示图像
waitKey(0);
return 0;
}
3.图像相乘和相处来矫正阴影
图像相乘具体操作如下图所示:
这样操作可以使原来无阴影的图像出现阴影。
图像相除:假设
f
(
x
,
y
)
f(x,y)
f(x,y)表示完美图像,
h
(
x
,
y
)
h(x,y)
h(x,y)为阴影函数,生成图像由完美图像和阴影构成:
g
(
x
,
y
)
=
f
(
x
,
y
)
h
(
x
,
y
)
g(x,y)=f(x,y)h(x,y)
g(x,y)=f(x,y)h(x,y)
我们可以通过生成图像除以阴影函数,得到完美图像。即:
f
(
x
,
y
)
=
h
(
x
,
y
)
/
g
(
x
,
y
)
f(x,y)=h(x,y)/g(x,y)
f(x,y)=h(x,y)/g(x,y)。