如果您正在寻找一个简单的自适应阈值,那么您有 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 值是较低和较高加权平均值之间的平均值