重点是高斯加权系数的计算,可参考一下连接,日后来补
https://blog.csdn.net/jiandanjinxin/article/details/51281828
基本思路是,先将图像分块,比如分成11x11邻域块,为了确定这个邻域块内的二值化阈值,我们采用高斯加权平均的方法,距离邻域中心点越远的权重越小,越近的权重越大(因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远),计算出权重矩阵之后 ,用像素值乘以各自的权重,然后相加,即为最终阈值。
比这个阈值大,置为0,比这个阈值小的像素点,置为255,如此就实现了局部阈值分割。
其他博主的见解:
接下来的问题就是,既然每个点都要取周边像素的平均值,那么应该如何分配权重呢?
如果使用简单平均,显然不是很合理,因为图像都是连续的,越靠近的点关系越密切,越远离的点关系越疏远。因此,加权平均更合理,距离越近的点权重越大,距离越远的点权重越小。
cv::adaptiveThreshold()支持两种自适应方法,即cv::ADAPTIVE_THRESH_MEAN_C(平均)和cv::ADAPTIVE_THRESH_GAUSSIAN_C(高斯)。在两种情况下,自适应阈值T(x, y)。通过计算每个像素周围bxb大小像素块的加权均值并减去常量C得到。其中,b由blockSize给出,大小必须为奇数;如果使用平均的方法,则所有像素周围的权值相同;如果使用高斯的方法,则(x,y)周围的像素的权值则根据其到中心点的距离通过高斯方程得到。