版本1和11间的区别 (跳过第10版)
于2007-06-05 14:46:18修订的的版本1
大小: 198
编辑: czk
备注:
于2008-06-10 14:59:44修订的的版本11
大小: 1818
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
 1. 如何检测图像中的直线?
 1. 如何检测图像中的边缘?
 1. 如何进行阈值分割?如何选取阈值?
 1. 什么是区域生长?如何进行区域分裂与合并?
== 点、线、边缘的检测 ==
点、线、边缘的检测常用空域滤波的方法进行。{{{#!latex
$$R = w_1z_1+w_2z_2+\dots +w_9z_9=\sum_{i=1}^{9}w_iz_i$$
}}}

=== 检测孤立点 ===
检测孤立点采用的滤波模板是
{{{
-1 -1 -1
-1 8 -1
-1 -1 -1
}}}

检测的标准是判断滤波后的绝对值是否大于某一阈值
{{{#!latex
$$|R| \ge T$$
}}}

在matlab中可以用如下方法实现:
{{{
g = abs(imfilter(f, w)) >= T;
}}}

另一种检测方法是看一个邻域内的最大值和最小值的差是否超过某个阈值。实现方法是:{{{
g = imsubtract(ordfilt2(f, m*n, ones(m,n)), ordfilt2(f, 1, ones(m,n))) >= T;
}}}

{{attachment:figure1002.png}}

=== 线检测 ===
线检测的模板可以是:

{{attachment:figure1001.png}}


如果对某一方向的线感兴趣,可以使用相应的模板做滤波后进行阈值处理。

{{attachment:figure1003.png}}

=== 边缘检测 ===
边缘所满足的条件:
 * 像素值的一阶导数的绝对值大于指定阈值
 * 像素值的二阶导数有零交叉。

{{attachment:figure1004.png}}

Sobel:{{{#!latex
$$g = \sqrt{ [(z_7+2z_8+z_9) - (z_1 + 2z_2 + z_3)]^2 + [(z_3+2z_6+z_9)-(z_1+2z_4+z_7))]^2 }$$
}}}

{{{
g = edge(f, 'sobel', T, dir)
}}}
f是输入图像,T是一个阈值,dir是方向('horizontol'或者'vertical'或者'both')

Prewitt:{{{
g = edge(f, 'prewitt', T, dir)
}}}

Roberts:{{{
g = edge(f, 'roberts', T, dir)
}}}

Laplacian of Gaussian:
{{{
g = edge(f, 'log', T, sigma)
}}}sigma为标准差,默认是2。

检测零交叉:
{{{
g = edge(f, 'zerocross', T, H)
}}}H指定卷积的模板。

Canny:
{{{
g = edge(f, 'canny', T, sigma)
}}}
== Hough变换 ==
== 阈值处理 ==
== 区域分割 ==
== 分水岭算法 ==

点、线、边缘的检测

点、线、边缘的检测常用空域滤波的方法进行。

$$R = w_1z_1+w_2z_2+\dots +w_9z_9=\sum_{i=1}^{9}w_iz_i$$

1. 检测孤立点

检测孤立点采用的滤波模板是

-1 -1 -1
-1  8 -1
-1 -1 -1

检测的标准是判断滤波后的绝对值是否大于某一阈值

$$|R| \ge T$$

在matlab中可以用如下方法实现:

g = abs(imfilter(f, w)) >= T;

另一种检测方法是看一个邻域内的最大值和最小值的差是否超过某个阈值。实现方法是:

g = imsubtract(ordfilt2(f, m*n, ones(m,n)), ordfilt2(f, 1, ones(m,n))) >= T;

figure1002.png

2. 线检测

线检测的模板可以是:

figure1001.png

如果对某一方向的线感兴趣,可以使用相应的模板做滤波后进行阈值处理。

figure1003.png

3. 边缘检测

边缘所满足的条件:

  • 像素值的一阶导数的绝对值大于指定阈值
  • 像素值的二阶导数有零交叉。

figure1004.png

Sobel:

$$g = \sqrt{ [(z_7+2z_8+z_9) - (z_1 + 2z_2 + z_3)]^2 + [(z_3+2z_6+z_9)-(z_1+2z_4+z_7))]^2 }$$

g = edge(f, 'sobel', T, dir)

f是输入图像,T是一个阈值,dir是方向('horizontol'或者'vertical'或者'both')

Prewitt:

g = edge(f, 'prewitt', T, dir) 

Roberts:

g = edge(f, 'roberts', T, dir)

Laplacian of Gaussian:

g = edge(f, 'log', T, sigma)

sigma为标准差,默认是2。

检测零交叉:

g = edge(f, 'zerocross', T, H)

H指定卷积的模板。

Canny:

g = edge(f, 'canny', T, sigma)

Hough变换

阈值处理

区域分割

分水岭算法

图像如何分割 (2008-06-22 15:33:18由czk编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.