1

我已经对使用全局阈值保持和自适应阈值保持的分割之间的区别进行了一些研究,这是我的理解......

注意:假设一个 16 位灰度图像

全局阈值保持:定义一个像素值 0-65535。扫描图像,将阈值以下的每个值设为黑色,否则,将其设为白色。

自适应阈值保持:为每个像素定义一个阈值保持,然后确定是否将其设为白色或黑色。

我的问题是:对于自适应阈值保持,我如何确定每个像素的阈值是多少?

编辑:在此处输入图像描述

所以看这个图,N 将是图像中的像素数。Theta 代表阈值。我不知道 while 循环条件是什么......我不知道 while 循环内的东西是什么,但我知道如何计算它。

4

1 回答 1

2

如果您正在寻找一个简单的自适应阈值,那么您有 2 个参数:

  • C - 标准函数 - 平均值、中值、最大值、最小值或其他
  • WS - 邻域/窗口大小(WS.x、WS.y) - 3X3、5X5 等...

现在您需要创建自适应阈值的图像 - AT。生成 AT - 对于整个图像,您可以根据您的标准应用过滤。对于每个像素 p - AT(p) = 局部邻域的中值/平均值/等:

 [(p-WS.x, p-WS.y), (p+WS.x, p+WS.y)]

如果标准是中值 - 它是中值滤波器(非线性) -

 AT = medfilter (IM, WS)

否则,如果标准是 averae - 使用内核(平均内核)的平均滤波器(线性)

 AV = createAverageKernel (WS) 

 AT = IM * AV  ("*" is a convolution)

可能有一个特殊的过滤器,用于任何其他类型的标准

然后,您可以使用 AT 对图像 IM 进行阈值处理。

 B_IM (p) = (IM (p) > AT (p)) ? 1 : 0

至于问题中的自适应阈值算法 - 它是一种基于直方图的迭代算法来计算阈值。但是,直方图可以应用于整个图像(全局)或像素的邻域(局部)。所以这个算法可以应用于全局或局部。所以在你的情况下,这是标准函数。它只是一个比媒体、平均值等更复杂的功能。

对于算法:首先用统一值初始化 theta(阈值) - 直方图的加权平均值。而条件 - 您迭代直到前一个阈值等于当前阈值。在循环 - 。定义下限值和上限值。下限值是低于当前阈值的直方图部分的加权平均值,与上限值类似。当前的 theta 值是较低和较高加权平均值之间的平均值

于 2014-05-28T02:49:25.263 回答