图像求导推理
数字图像的边缘检测在图像处理中起着十分重要的作用,十分简单又有效的方法就是微分算子,常见的微分算子包括:Sobel算子、Robert算子、Prewitt算子、Laplacian算子、Canny算子。
从名字也可以看出,微分算子,当然涉及到求导,为什么对图像进行求导就可以检测图像中的边缘呢?图像的边缘一般存在灰度变化强烈的地方,只有灰度变化的明显我们才可以从图像中清晰的看到没有一个物体的轮廓,要是一个图像灰度变化很均匀的话,整个图像就变得比较模糊。就如把一副图像均值滤波以后,图像变得模糊了。如何表示一个图像的灰度变化,当然是求导了,梯度值越大表示图像中灰度值变化越剧烈,越有可能是图像的边缘。图像求导包括一阶和二阶,二阶导数比一阶导数在细节方面处理的更好一点,但是也各有利弊,如含有噪声的图像就不适合二阶导,因为他会把图像中的噪声增强,所以需要先做平滑处理。
下面看一下在图像中一阶导和二阶导是怎么求的。在数学中一维函数的一阶导数的概念如下:
f
′
(
x
)
=
lim
Δ
x
→
0
f
(
x
+
Δ
x
)
−
f
(
x
)
Δ
x
f'\left( x \right) = \mathop {\lim }\limits_{\Delta x \to 0} \frac{{f\left( {x + \Delta x} \right) - f\left( x \right)}}{{\Delta x}}
f′(x)=Δx→0limΔxf(x+Δx)−f(x)
图像是一个二维的函数
f
(
x
,
y
)
f(x, y)
f(x,y),所以需要求偏微分:
∂
f
(
x
,
y
)
∂
x
=
lim
Δ
x
→
0
f
(
x
+
Δ
x
,
y
)
−
f
(
x
,
y
)
Δ
x
∂
f
(
x
,
y
)
∂
y
=
lim
Δ
y
→
0
f
(
x
,
y
)
−
f
(
x
,
y
+
Δ
y
)
Δ
y
\frac{{\partial f\left( {x,y} \right)}}{{\partial x}} = \mathop {\lim }\limits_{\Delta x \to 0} \frac{{f\left( {x + \Delta x,y} \right) - f\left( {x,y} \right)}}{{\Delta x}} \\ \frac{{\partial f\left( {x,y} \right)}}{{\partial y}} = \mathop {\lim }\limits_{\Delta y \to 0} \frac{{f\left( {x,y} \right) - f\left( {x,y + \Delta y} \right)}}{{\Delta y}}
∂x∂f(x,y)=Δx→0limΔxf(x+Δx,y)−f(x,y)∂y∂f(x,y)=Δy→0limΔyf(x,y)−f(x,y+Δy)
因为图像是离散的像素点,所以其中的
Δ
x
\Delta x
Δx、
Δ
y
\Delta y
Δy 不能无限小,所以按照只能按照像素为单位,
Δ
x
=
1
\Delta x = 1
Δx=1、
Δ
y
=
1
\Delta y = 1
Δy=1 ;然后可以知道上面的微分方程就变成了如下的形式
∂
f
(
x
,
y
)
∂
x
=
f
(
x
+
1
,
y
)
−
f
(
x
,
y
)
∂
f
(
x
,
y
)
∂
y
=
f
(
x
,
y
+
1
)
−
f
(
x
,
y
)
\frac{{\partial f\left( {x,y} \right)}}{{\partial x}} = f\left( {x + {\rm{1}},y} \right) - f\left( {x,y} \right)\\ \frac{{\partial f\left( {x,y} \right)}}{{\partial y}} = f\left( {x,y + 1} \right) - f\left( {x,y} \right)
∂x∂f(x,y)=f(x+1,y)−f(x,y)∂y∂f(x,y)=f(x,y+1)−f(x,y)
所以一副图像x方向和y方向的梯度就是连个相邻像素之间的差值。那么求整体的梯度公式就如下:
M
(
x
,
y
)
=
(
d
x
)
2
+
(
d
y
)
2
M\left( {x,y} \right) = \sqrt {{{\left( {dx} \right)}^2} + {{\left( {dy} \right)}^2}}
M(x,y)=(dx)2+(dy)2
这样图像的一阶导就完事了,然后同样的,二阶导的推理如下:
f
′
′
(
x
)
=
(
f
′
(
x
)
)
′
=
lim
Δ
→
0
f
′
(
x
+
Δ
)
−
f
(
x
)
′
Δ
=
f
′
(
x
+
1
)
−
f
(
x
)
′
=
f
(
(
x
+
1
)
+
1
)
−
f
(
(
x
+
1
)
)
−
f
(
x
+
1
)
+
f
(
x
)
=
f
(
x
+
2
)
−
2
f
(
x
+
1
)
+
f
(
x
)
\begin{array}{l} f''\left( x \right) = {\left( {f'\left( x \right)} \right)^\prime }\\ = \mathop {\lim }\limits_{\Delta \to 0} \frac{{f'\left( {x + \Delta } \right) - f{{\left( x \right)}^\prime }}}{\Delta }\\ = f'\left( {x + 1} \right) - f{\left( x \right)^\prime }\\ = f\left( {\left( {x + 1} \right){\rm{ + }}1} \right){\rm{ - }}f\left( {\left( {x + 1} \right)} \right){\rm{ - }}f\left( {x + 1} \right) + f\left( x \right)\\ = f\left( {x + 2} \right) - 2f\left( {x + 1} \right) + f\left( x \right) \end{array}
f′′(x)=(f′(x))′=Δ→0limΔf′(x+Δ)−f(x)′=f′(x+1)−f(x)′=f((x+1)+1)−f((x+1))−f(x+1)+f(x)=f(x+2)−2f(x+1)+f(x)
所以令
x
=
x
−
1
x=x-1
x=x−1,就可以得到
f
′
′
(
x
)
=
f
(
x
+
1
)
+
f
(
x
−
1
)
−
2
f
(
x
)
f''\left( x \right) = f\left( {x + 1} \right) + f\left( {x - 1} \right) - 2f\left( x \right)
f′′(x)=f(x+1)+f(x−1)−2f(x)
所以对于图像来说,x方向和y方向的二阶导数分别为:
∂
2
f
(
x
,
y
)
∂
x
2
=
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
−
2
f
(
x
,
y
)
∂
2
f
(
x
,
y
)
∂
y
2
=
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
−
2
f
(
x
,
y
)
\frac{{{\partial ^2}f\left( {x,y} \right)}}{{\partial {x^2}}} = f\left( {x + 1,y} \right) + f\left( {x - 1,y} \right) - 2f\left( {x,y} \right) \\ \frac{{{\partial ^2}f\left( {x,y} \right)}}{{\partial {y^2}}} = f\left( {x,y + 1} \right) + f\left( {x,y - 1} \right) - 2f\left( {x,y} \right)
∂x2∂2f(x,y)=f(x+1,y)+f(x−1,y)−2f(x,y)∂y2∂2f(x,y)=f(x,y+1)+f(x,y−1)−2f(x,y)
整体图像的二阶导:
∂
2
f
(
x
,
y
)
∂
x
2
+
∂
2
f
(
x
,
y
)
∂
y
2
=
f
(
x
+
1
,
y
)
+
f
(
x
−
1
,
y
)
+
f
(
x
,
y
+
1
)
+
f
(
x
,
y
−
1
)
−
4
f
(
x
,
y
)
\frac{{{\partial ^2}f\left( {x,y} \right)}}{{\partial {x^2}}} + \frac{{{\partial ^2}f\left( {x,y} \right)}}{{\partial {y^2}}} = f\left( {x + 1,y} \right) + f\left( {x - 1,y} \right) + f\left( {x,y + 1} \right) + f\left( {x,y - 1} \right) - 4f\left( {x,y} \right)
∂x2∂2f(x,y)+∂y2∂2f(x,y)=f(x+1,y)+f(x−1,y)+f(x,y+1)+f(x,y−1)−4f(x,y)
详情请查看参考链接123
欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
参考链接: