标签: 三维图像 海森矩阵 二阶偏导数 高斯函数
海森矩阵(Hessian matrix)
雅可比矩阵
在向量分析中,雅可比矩阵是一阶偏导数以一定方式排列成的矩阵, 其行列式称为雅可比行列式。
海森矩阵
数学中,海森矩阵(Hessian matrix)是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵(假设其二阶偏导都存在)。
H
(
f
)
=
[
∂
2
f
∂
x
1
2
∂
2
f
∂
x
1
x
2
⋯
∂
2
f
∂
x
1
x
n
∂
2
f
∂
x
2
x
1
∂
2
f
∂
x
2
2
⋯
∂
2
f
∂
x
2
x
n
⋮
⋮
⋱
⋮
∂
2
f
∂
x
n
x
1
∂
2
f
∂
x
n
x
2
⋯
∂
2
f
∂
x
n
2
]
H(f)=\left[ \begin{matrix} \frac{\partial^2 f}{\partial x^2_1} & \frac{\partial^2 f}{\partial x_1x_2} & \cdots & \frac{\partial^2 f}{\partial x_1x_n} \\ \frac{\partial^2 f}{\partial x_2x_1} & \frac{\partial^2 f}{\partial x^2_2} & \cdots & \frac{\partial^2 f}{\partial x_2x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_nx_1} & \frac{\partial^2 f}{\partial x_n x_2} & \cdots & \frac{\partial^2 f}{\partial x^2_n} \\ \end{matrix} \right]
H(f)=⎣⎢⎢⎢⎢⎢⎡∂x12∂2f∂x2x1∂2f⋮∂xnx1∂2f∂x1x2∂2f∂x22∂2f⋮∂xnx2∂2f⋯⋯⋱⋯∂x1xn∂2f∂x2xn∂2f⋮∂xn2∂2f⎦⎥⎥⎥⎥⎥⎤
高斯求导
前言
通过上述公式可知,求海森矩阵的过程实际上就是求二阶偏导的过程。卷积中有一个重要的性质:卷积的微分特性—两个函数相卷积后的导数等于其中一个函数的导数与另一个函数的卷积
d
d
t
[
f
1
(
t
)
∗
f
2
(
t
)
]
=
d
f
1
(
t
)
d
t
∗
f
2
(
t
)
=
f
1
(
t
)
∗
d
f
2
(
t
)
d
t
\frac{d}{dt}[f_1(t)* f_2(t)]=\frac{df_1(t)}{dt}* f_2(t)= f_1(t)*\frac{df_2(t)}{dt}
dtd[f1(t)∗f2(t)]=dtdf1(t)∗f2(t)=f1(t)∗dtdf2(t)
证明如下:
d
d
t
[
f
1
(
t
)
∗
f
2
(
t
)
]
=
d
d
t
∫
−
∞
∞
f
1
(
τ
)
∗
f
2
(
t
−
τ
)
d
τ
=
∫
−
∞
∞
f
1
(
τ
)
∗
d
d
t
f
2
(
t
−
τ
)
d
τ
=
f
1
(
t
)
∗
d
f
2
(
t
)
d
t
\frac{d}{dt}[f_1(t)* f_2(t)]=\frac{d}{dt}\int ^{\infty}_{-\infty} f_1(\tau)* f_2(t-\tau)d\tau = \int ^{\infty}_{-\infty} f_1(\tau)* \frac{d}{dt}f_2(t-\tau)d\tau =f_1(t)*\frac{df_2(t)}{dt}
dtd[f1(t)∗f2(t)]=dtd∫−∞∞f1(τ)∗f2(t−τ)dτ=∫−∞∞f1(τ)∗dtdf2(t−τ)dτ=f1(t)∗dtdf2(t)
同理可证:
d
d
t
[
f
1
(
t
)
∗
f
2
(
t
)
]
=
d
d
t
∫
−
∞
∞
f
1
(
τ
)
∗
f
2
(
t
−
τ
)
d
τ
=
∫
−
∞
∞
d
d
t
f
1
(
τ
)
∗
f
2
(
t
−
τ
)
d
τ
=
d
f
1
(
t
)
d
t
∗
f
2
(
t
)
\frac{d}{dt}[f_1(t)* f_2(t)]=\frac{d}{dt}\int ^{\infty}_{-\infty} f_1(\tau)* f_2(t-\tau)d\tau = \int ^{\infty}_{-\infty} \frac{d}{dt}f_1(\tau)* f_2(t-\tau)d\tau =\frac{df_1(t)}{dt}*f_2(t)
dtd[f1(t)∗f2(t)]=dtd∫−∞∞f1(τ)∗f2(t−τ)dτ=∫−∞∞dtdf1(τ)∗f2(t−τ)dτ=dtdf1(t)∗f2(t)
故上述微分特性得证。
推广易得:
∂
2
∂
t
2
[
f
1
(
t
)
∗
f
2
(
t
)
]
=
∂
2
f
1
(
t
)
∂
t
2
∗
f
2
(
t
)
=
f
1
(
t
)
∗
∂
2
f
2
(
t
)
∂
t
2
\frac{\partial^2}{\partial t^2}[f_1(t)* f_2(t)]=\frac{\partial^2f_1(t)}{\partial t^2}* f_2(t) = f_1(t)*\frac{\partial^2f_2(t)}{\partial t^2}
∂t2∂2[f1(t)∗f2(t)]=∂t2∂2f1(t)∗f2(t)=f1(t)∗∂t2∂2f2(t)
推导
根据上式,令
f
1
(
t
)
f_1(t)
f1(t)为高斯函数
G
(
x
,
y
,
z
)
=
(
1
2
π
σ
)
3
e
−
x
2
+
y
2
+
z
2
2
σ
2
G(x,y,z)=(\frac{1}{\sqrt{2\pi}\sigma})^3e^{-\frac{x^2+y^2+z^2}{2\sigma^2}}
G(x,y,z)=(2πσ1)3e−2σ2x2+y2+z2,
f
2
(
t
)
f_2(t)
f2(t)为三维图片
I
(
x
,
y
,
z
)
I(x,y,z)
I(x,y,z),则有:
∂
2
∂
x
2
[
G
(
x
,
y
,
z
)
∗
I
(
x
,
y
,
z
)
]
=
∂
2
G
(
x
,
y
,
z
)
∂
x
2
∗
I
(
x
,
y
,
z
)
=
G
(
x
,
y
,
z
)
∗
∂
2
I
(
x
,
y
,
z
)
∂
x
2
\frac{\partial^2}{\partial x^2}[G(x,y,z)* I(x,y,z)]=\frac{\partial^2G(x,y,z)}{\partial x^2}* I(x,y,z) = G(x,y,z)*\frac{\partial^2I(x,y,z)}{\partial x^2}
∂x2∂2[G(x,y,z)∗I(x,y,z)]=∂x2∂2G(x,y,z)∗I(x,y,z)=G(x,y,z)∗∂x2∂2I(x,y,z)
可知,只要求得了
∂
2
G
(
x
,
y
,
z
)
∂
x
2
\frac{\partial^2G(x,y,z)}{\partial x^2}
∂x2∂2G(x,y,z),那么通过上式就可以得到
∂
2
I
(
x
,
y
,
z
)
∂
x
2
\frac{\partial^2I(x,y,z)}{\partial x^2}
∂x2∂2I(x,y,z)为图像
I
I
I在
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)点的对
x
x
x的二阶偏导。其他方向的二阶偏导同理可求。
到这里,求图像的二阶偏导转换成了求高斯函数的二阶偏导。
跳过。。跳过。。一系列的求导过程((٩(//̀Д/́/)۶))
得到以下高斯函数的二阶偏导:
∂
2
G
(
x
,
y
,
z
)
∂
x
2
=
1
(
2
π
σ
)
3
x
2
−
σ
2
σ
4
e
−
x
2
+
y
2
+
z
2
2
σ
2
=
x
2
−
σ
2
(
2
π
)
3
σ
7
e
−
x
2
+
y
2
+
z
2
2
σ
2
\frac{\partial^2G(x,y,z)}{\partial x^2}=\frac{1}{(\sqrt{2\pi}\sigma)^3}\frac{x^2-\sigma^2}{\sigma^4}e^{-\frac{x^2+y^2+z^2}{2\sigma^2}}=\frac{x^2-\sigma^2}{(\sqrt{2\pi})^3\sigma^7}e^{-\frac{x^2+y^2+z^2}{2\sigma^2}}
∂x2∂2G(x,y,z)=(2πσ)31σ4x2−σ2e−2σ2x2+y2+z2=(2π)3σ7x2−σ2e−2σ2x2+y2+z2
∂
2
G
(
x
,
y
,
z
)
∂
x
∂
y
=
1
(
2
π
σ
)
3
x
y
σ
4
e
−
x
2
+
y
2
+
z
2
2
σ
2
=
x
y
(
2
π
)
3
σ
7
e
−
x
2
+
y
2
+
z
2
2
σ
2
\frac{\partial^2G(x,y,z)}{\partial x\partial y}=\frac{1}{(\sqrt{2\pi}\sigma)^3}\frac{xy}{\sigma^4}e^{-\frac{x^2+y^2+z^2}{2\sigma^2}}=\frac{xy}{(\sqrt{2\pi})^3\sigma^7}e^{-\frac{x^2+y^2+z^2}{2\sigma^2}}
∂x∂y∂2G(x,y,z)=(2πσ)31σ4xye−2σ2x2+y2+z2=(2π)3σ7xye−2σ2x2+y2+z2
同理易得高斯函数
G
(
x
,
y
,
z
)
G(x,y,z)
G(x,y,z)对
y
2
,
z
2
,
y
x
,
x
z
,
z
x
,
y
z
,
z
y
y^2,z^2,yx,xz,zx,yz,zy
y2,z2,yx,xz,zx,yz,zy等方向的偏导。
可以发现:
∂
2
G
(
x
,
y
,
z
)
∂
x
∂
y
=
∂
2
G
(
x
,
y
,
z
)
∂
y
∂
x
\frac{\partial^2G(x,y,z)}{\partial x\partial y}=\frac{\partial^2G(x,y,z)}{\partial y\partial x}
∂x∂y∂2G(x,y,z)=∂y∂x∂2G(x,y,z)
∂
2
G
(
x
,
y
,
z
)
∂
x
∂
z
=
∂
2
G
(
x
,
y
,
z
)
∂
z
∂
x
\frac{\partial^2G(x,y,z)}{\partial x\partial z}=\frac{\partial^2G(x,y,z)}{\partial z\partial x}
∂x∂z∂2G(x,y,z)=∂z∂x∂2G(x,y,z)
∂
2
G
(
x
,
y
,
z
)
∂
y
∂
z
=
∂
2
G
(
x
,
y
,
z
)
∂
z
∂
y
\frac{\partial^2G(x,y,z)}{\partial y\partial z}=\frac{\partial^2G(x,y,z)}{\partial z\partial y}
∂y∂z∂2G(x,y,z)=∂z∂y∂2G(x,y,z)
至此,高斯函数所有的二阶偏导已经求得,然后利用matlab中的convn函数进行三维空间内的卷积(参数选择same保证结果和图像一致),这也意味着黑森矩阵已经可以通过上述过程得到。
代码实现
%% 求高斯函数的二阶偏导数
%% num为高斯核的大小
%% sigma为高斯函数的方差
function [gau_xx,gau_yy,gau_zz,gau_xy,gau_xz,gau_yz]=gaus_creation_3D(num,sigma)
gau_xx=[];gau_yy=[];gau_zz=[];%初始化矩阵
gau_xy=[];gau_xz=[];gau_yz=[];%初始化矩阵
for i=1:1:2*num+1
for j=1:1:2*num+1
for k=1:1:2*num+1
x=i-num-1;y=j-num-1;z=k-num-1;
gau_xx(i,j,k)=1/power(sqrt(2*pi),3)*(-(sigma^2-x^2)/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
gau_yy(i,j,k)=1/power(sqrt(2*pi),3)*(-(sigma^2-y^2)/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
gau_zz(i,j,k)=1/power(sqrt(2*pi),3)*(-(sigma^2-z^2)/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
gau_xy(i,j,k)=1/power(sqrt(2*pi),3)*(x*y/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
gau_xz(i,j,k)=1/power(sqrt(2*pi),3)*(x*z/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
gau_yz(i,j,k)=1/power(sqrt(2*pi),3)*(z*y/sigma^7)*exp(-(x^2+y^2+z^2)/2/sigma^2);
end
end
end
end
思考
关于最终的结果
从 ∂ 2 ∂ x 2 [ G ( x , y , z ) ∗ I ( x , y , z ) ] = ∂ 2 G ( x , y , z ) ∂ x 2 ∗ I ( x , y , z ) = G ( x , y , z ) ∗ ∂ 2 I ( x , y , z ) ∂ x 2 \frac{\partial^2}{\partial x^2}[G(x,y,z)* I(x,y,z)]=\frac{\partial^2G(x,y,z)}{\partial x^2}* I(x,y,z) = G(x,y,z)*\frac{\partial^2I(x,y,z)}{\partial x^2} ∂x2∂2[G(x,y,z)∗I(x,y,z)]=∂x2∂2G(x,y,z)∗I(x,y,z)=G(x,y,z)∗∂x2∂2I(x,y,z)式中可知最后的结果其实是图像的二阶偏导和高斯函数的卷积,并不只是单纯的图像二阶偏导。高斯函数在图像处理中常用于去除高斯噪声,它具有良好的低通滤波效果,一般在检测边缘之前常用高斯卷积来移除图像一些细节以及噪声。所以事实上,这里的卷积不会影响图像整体的结构,而且一定程度上对图像进行了去噪使图像质量更好(当然不可否认的是损失了一些图像细节),如果是利用海森矩阵进行三维图像的线性结构或是面结构的检测,那么一定程度的去噪以及平滑处理将可能得到更好的结果。
以上。(づ●─●)づ