图像边缘探测

参考自:http://www.cnblogs.com/drizzlecrj/archive/2008/02/25/1077494.html

 

边缘探测在图像测量,模式识别时,从图像中抽出线条,检测出图像边缘或者抽出图像轮廓是最常用的操作。迄今为止,已经出现了许多成熟的算法。例如微分算法,掩模算法等。在微分算法中,常使用N*N的像素块,例如3*3或者4*4。3*3的像素块如下,f(i-1,j-1)  f(i-1,j)  f(i-1,j+1)f(i,j-1)     f(i,j)      f(i,j+1)f(i+1,j-1) f(i+1,j)  f(i+1,j+1)我们不妨设f(i,j)为待处理的像素,而g(i, j)为处理后的像素。

● Roberts算子g(i, j) = sqrt( (f(i, j) - f(i + 1, j))^2 + (f(i + 1, j) - f(i, j + 1))^2 )或者g(i, j) = |f(i,j) - f(i + 1,j)| + |f(i+1,j) - f(i,j+1)|

● Sobel算子对数字图像的每一个像素f(i,j),考察它的上、下、左、右邻域灰度的加权值,把各方向上(0度、45度、90度、135度)的灰度值加权之和作为输出,可以达到提取图像边缘的效果。即 g(i,j) = fxr + fyr, 其中fxr = f(i-1,j-1)+2*f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-2*f(i+1,j)-f(i+1,j+1)fyr = f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1)

● Laplace算子Laplace算子是一种二阶微分算子。它有两种形式:4邻域微分算子和8邻域微分算子。

 ⊙   4邻域微分g(i,j)=|4*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)| 

⊙   8邻域微分g(i,j)=|8*f(i,j)-f(i,j-1)-f(i-1,j)-f(i+1,j)-f(i,j+1)-f(i-1,j-1)-f(i-1,j+1)-f(i+1,j-1)-f(i+1,j+1)|

● 其他常用算子 

⊙   右下边缘抽出采用3*3算子时,表达式为g(i,j)=|-2*f(i,j-1)-2*f(i-1,j)+2*f(i+1,j)+2*f(i,j+1)| 

⊙   prewitt 边缘探测样板算子prewitt算子是一个边缘模板算子,由八个方向的样板组成,能够在0度,45度,90度,135度,180度,225度角等八个方向检测边缘。

8个3*3边缘模板及方向如下:

90度角:            45度角:

1   1   1           -1  -1  -1

1  -2   1            1  -2   1

-1 -1 -1            1   1   1

0度角:             315度角:

-1   1   1          1   1   -1

-1  -2   1         1  -2   -1

-1   1   1         1   1   -1

270度角:       225度角:

1   1   1          -1   -1  1

-1  -2 1         -1   -2   1

-1 -1  1           1    1   1

180度角:      135度角:

1   1   1           1   -1   -1

1  -2  -1          1   -2   -1

1  -1  -1          1    1     1

3*3时表达式如下:

A1*f(i-1,j-1)     A8*f(i,j-1)      A7*f(i+1,j-1)

A2*f(i-1,j)         -2*f(i,j)         A6*f(i+1, j)

A3*f(i-1,j+1)     A4*f(i,j+1)     A5*f(i+1,j+1)

g(i,j)=|-2*f(i,j)+A8*f(i,j-1)+A1*f(i-1,j-1)+A2*f(i-1,j)+A3*f(i-1,j+1)+A4*f(i,j+1)+A5*f(i+1,j+1)+A6*f(i+1,j)+A7*f(i+1,j-1)|

在程序设计中,依次用样板去检测图像,与被检测区域最为相似的样板给出最大值,用该最大值作为算子的输出值。 

⊙   Robinson算子Robinson算子是一个模板算子,由八个方向的样板组成,能够在0度,45度,90度,135度,180度,225度角等八个方向检测边缘。

8个3*3边缘模板及方向如下:

90度角:            45度角:

1   2   1           0   1  2

0  0   0            -1  0   1

-1 -2 -1          -2  -1   0

0度角:             315度角:

-1   0   1         -2 -1   0

-2  0   2         -1  0   1

-1   0   1         0   1   2

270度角:       225度角:

-1  -2  -1          0   -1  -2

0    0    0         1   0   -1

1   2    1           2    1   0

180度角:      135度角:

1   0   -1        2   1   0

2  0  -2          1   0  -1

1  0  -1          0  -1  -2

使用方法与prewitt算子一样。

⊙   Kirsch算子Kirsch算子是一个模板算子,由八个方向的边缘样板组成,能够在0度,45度,90度,135度,180度,225度角等八个方向检测边缘。

8个3*3边缘模板及方向如下:

90度角:            45度角:

5   5   5           -3   5    5

-3  0   -3          -3    0   5

-3 -3 -3          -3   -3   -3

0度角:             315度角:

-3  -3   5         -3 -3   -3

-3  0   5         -3  0   5

-3   -3   5        -3  5   5

270度角:       225度角:

5   5  -3          -3   -3  -3

5    0  -3         5   0   -3

-3  -3   -3        5  5   -3

180度角:      135度角:

5   -3   -3        5   5   -3

5   0  -3          5   0  -3

5  -3  -3          -3  -3  3

使用方法与prewitt算子一样。

⊙   Smoothed算子Smoothed算子是一个3*3的算子,设       

         |-1  0  1|                  |0  0  0|

Dx =  |1  1  1|        Dy =   |-1  0  1|       

|-1  0  1|                            |-1 -1 -1|

则  D = sqrt(Dx^2 + Dy^2) 或者 D = |Dx| + |Dy|

或 Dx(i, j) = f(i-1,j+1)+f(i,j+1)+f(i+1,j+1)-f(i-1,j-1)-f(i,j-1)-f(i+1,j-1)  

 Dy(i,j) = f(i-1,j-1)+f(i-1,j)+f(i-1,j+1)-f(i+1,j-1)-f(i+1,j)-f(i+1,j+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值