边缘检测
边缘主要包括轮廓线边缘和纹理边缘
寻找图像中的边缘是为了找到变化非常强烈的相邻像素,例如从0-255或从255-0。
Robert算子(Robert operator)
I[i, j] : 图像中的像素值
通过高斯滤波器卷积图像,我们将得到
S
[
i
,
j
]
=
G
[
i
,
j
:
σ
]
∗
I
[
i
,
j
]
S[i,j]=G[i,j:\sigma]*I[i,j]
S[i,j]=G[i,j:σ]∗I[i,j]
σ
\sigma
σ是高斯分布。
使用以下公式创建一个过滤器:
P
[
i
,
j
]
=
(
S
[
i
,
j
+
1
]
−
S
[
i
,
j
]
+
S
[
i
+
1
,
j
+
1
]
−
S
[
i
+
1
,
j
]
)
/
2
Q
[
i
,
j
]
=
(
S
[
i
,
j
]
−
S
[
i
+
1
,
j
]
+
S
[
i
,
j
+
1
]
−
S
[
i
+
1
,
j
+
1
]
)
/
2
P[i,j]=(S[i,j+1]-S[i,j]+S[i+1,j+1]-S[i+1,j])/2 \\ Q[i,j]=(S[i,j]-S[i+1,j]+S[i,j+1]-S[i+1,j+1])/2
P[i,j]=(S[i,j+1]−S[i,j]+S[i+1,j+1]−S[i+1,j])/2Q[i,j]=(S[i,j]−S[i+1,j]+S[i,j+1]−S[i+1,j+1])/2
边缘像素
M
[
i
,
j
]
=
P
[
i
,
j
]
2
+
Q
[
i
,
j
]
2
M[i,j]=\sqrt{P[i,j]^2+Q[i,j]^2}
M[i,j]=P[i,j]2+Q[i,j]2
边缘像素的
θ
\theta
θ
θ
[
i
,
j
]
=
a
r
c
t
a
n
(
Q
[
i
,
j
]
,
P
[
i
,
j
]
)
\theta[i,j] = arctan(Q[i,j], P[i,j])
θ[i,j]=arctan(Q[i,j],P[i,j])
广义的霍夫(Hough)变换
在目标图像中寻找任何形状。
包含2个主要模型。
- 保留模板形状的细节。
- 搜索目标图像内的形状。
在创建一个形状之前,选择图像的中心点。
对于属于边缘的像素,将直线向中点拖动,并收集以下值。
GHT: R-Table
算法
1.找到目标图像的边缘,并收集梯度值grad(梯度方向)。
2.对于每个边缘像素,使用步骤1得到的值 θ \theta θ(梯度方向)来搜索存储在R表中的值 α \alpha α和r,这些值被储存在R-Table中。
3.对于在R-Table中搜索得到的 α \alpha α和r的值,根据该值而不是公式中的a和r的值。
因此,当比例Scale和旋转值Rotate被改变时,旧的方程式将被改变为新的方程式,如下所示:
参考链接:
Find edges in 2-D grayscale image - MATLAB edge - MathWorks United Kingdom