糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 边缘检测与阈值分割

边缘检测与阈值分割

时间:2023-04-05 06:17:59

相关推荐

边缘检测与阈值分割

Canny

[1] Canny Edge Detection. /3.4/da/d22/tutorial_py_canny.html

[2] OpenCV Edge Detection ( cv2.Canny ). //05/12/opencv-edge-detection-cv2-canny/

由John F. Canny提出

1、由于边缘检测容易受噪声影响,采用Gaussian空间滤波器去噪

2、采用Sobel核求图像水平与垂直方向的导数 G x , G y G_x, G_y Gx​,Gy​

x : [ − 1 0 1 − 2 0 2 − 1 0 1 ] , y : [ − 1 − 2 − 1 0 0 0 1 2 1 ] x: \begin{bmatrix} -1&0&1 \\ -2&0&2 \\ -1&0&1 \end{bmatrix}, y: \begin{bmatrix} -1&-2&-1 \\ 0&0&0 \\ 1&2&1 \end{bmatrix} x: ​−1−2−1​000​121​ ​,y: ​−101​−202​−101​ ​

3、计算边缘的梯度 ( G , θ ) (G,\theta) (G,θ)

幅值 G = G x 2 + G y 2 G = \sqrt{G_x^2 + G_y^2} G=Gx2​+Gy2​ ​

方向 θ = t a n − 1 ( G y / G x ) \theta =tan^{-1}(G_y/G_x) θ=tan−1(Gy​/Gx​)

注:梯度是一个向量,包含导数值以及求导方向;二维函数上的一点有多个求导方向,求出的导数值也各不相同,梯度的幅值即最大的导数值(方向导数)。

4、非局部极大值抑制

图像上每一点都一个梯度值与梯度方向

通过插值,求解该点梯度方向上的前后两点的梯度值

对比该点的梯度值与求出的前后两点梯度值,如果该点是极大值,则保留,否则置0

遍历所有点,便求出图像边缘上的所有点

5、滞后阈值法

高于大阈值的为边缘上的点

小于小阈值的不是边缘上的点

位于两个阈值中间的,判断其与已确定的边缘是否连通,如果是,则其也是边缘上的点,否则,不是边缘上的点

注:认为梯度方向与边缘垂直

反锐化掩膜与锐化掩膜

[1] 【图像锐化】非锐化掩模 USM(Unsharpen Mask)与锐化掩模 SM(Sharpen Mask. /54TvN.

提取图像高频信息,将其与图像叠加进行边缘增强

H: high pass filter

L: low pass filter

锐化掩膜 I 1 = I 0 + w ∗ H ( I 0 ) I_1 = I_0 + w*H(I_0) I1​=I0​+w∗H(I0​)

反锐化掩膜 I 1 = I 0 + ( I 0 − w ∗ L ( I 0 ) ) / ( 1 − w ) I_1 = I_0 + (I_0 - w*L(I_0))/(1-w) I1​=I0​+(I0​−w∗L(I0​))/(1−w)

LoG,DoG

[1] 图像特征之LoG算子与DoG算子. https://senitco.github.io//06/20/image-feature-LoG-DoG/.

将Laplace算子作用于图像: ∇ 2 I = I x x + I y y \nabla^2 I = I_{xx} + I_{yy} ∇2I=Ixx​+Iyy​

作用:突出图像点,线和边缘,抑制均匀和平滑变化的区域

由于微分运算对噪声敏感,先将图像进行高斯平滑滤波,再应用Laplace算子

LoG: ∇ 2 ( G ∗ I ) = ( ∇ 2 G ) ∗ I \nabla^2 (G*I) = (\nabla^2 G) * I ∇2(G∗I)=(∇2G)∗I

由于 G x x + G y y = k G σ G_{xx} + G_{yy} = k G_\sigma Gxx​+Gyy​=kGσ​,因此可以用DoG代替LoG

DoG: G ( σ 1 ) ∗ I − G ( σ 2 ) ∗ I = ( G ( σ 1 ) − G ( σ 2 ) ) ∗ I G(\sigma_1)*I - G(\sigma_2)*I = (G(\sigma_1) - G(\sigma_2))*I G(σ1​)∗I−G(σ2​)∗I=(G(σ1​)−G(σ2​))∗I

OSTU算法

[1] Ostu(大津法)二值化图像算法/最佳全局阈值. /pVHqD.

[2] 吴 熙, 钱盛友. 基于LoG 算子的图像边缘增强算法的改进.

灰度图像 I i j I_{ij} Iij​的均值与方差

均值 μ = 1 M N Σ i I i j \mu = \frac{1}{MN} \Sigma_i I_{ij} μ=MN1​Σi​Iij​

方差 σ 2 = 1 M N Σ i Σ j ( I i j − μ ) 2 \sigma^2 = \frac{1}{MN} \Sigma_i \Sigma_j (I_{ij} - \mu)^2 σ2=MN1​Σi​Σj​(Iij​−μ)2

注:图像的均值就是期望

灰度图像由像素值 T T T可分为前景与背景 I = I 1 + I 2 I = I_1 + I_2 I=I1​+I2​

类间方差 σ B 2 = c 1 σ 2 ( I 1 ) + c 2 σ 2 ( I 2 ) \sigma^2_B = c_1 \sigma^2(I_1) + c_2 \sigma^2(I_2) σB2​=c1​σ2(I1​)+c2​σ2(I2​)

类内方差 σ W 2 = c 1 ( μ ( I 1 ) − μ ( I ) ) 2 + c 2 ( μ ( I 2 ) − μ ( I ) ) 2 \sigma^2_W = c_1 (\mu(I_1) - \mu(I))^2 + c_2 (\mu(I_2) - \mu(I))^2 σW2​=c1​(μ(I1​)−μ(I))2+c2​(μ(I2​)−μ(I))2

其中, c 1 = N ( I 1 ) / N ( I ) , c 2 = N ( I 2 ) / N ( I ) c_1 = N(I_1)/N(I), c_2 = N(I_2)/N(I) c1​=N(I1​)/N(I),c2​=N(I2​)/N(I), N N N为像素计数函数

σ 2 = σ B 2 + σ W 2 \sigma^2 = \sigma^2_B + \sigma^2_W σ2=σB2​+σW2​

OSTU算法

遍历图像灰度直方图的所有像素作为 T T T,取使得类间方差最大与类内方差最小的 T T T作为最终划分图像的像素值

T = a r g m a x ( σ B 2 ( T ) ) T = argmax(\sigma^2_B(T)) T=argmax(σB2​(T))

T = a r g m i n ( σ W 2 ( T ) ) T = argmin(\sigma^2_W(T)) T=argmin(σW2​(T))

文献[2]采用的是:

T = a r g m a x ( σ B 2 ( T ) / σ W 2 ( T ) ) T = argmax(\sigma^2_B(T)/\sigma^2_W(T)) T=argmax(σB2​(T)/σW2​(T))

如果觉得《边缘检测与阈值分割》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。