我希望使用Niblack
lib来实现OpenCV4Android
阈值算法。我尝试在线查看一些代码(主要是MatLab
和C++
代码),但我对完全理解它有疑问。因此我只想坚持阈值公式并自己创建阈值方法:
if pixel > (mean + k * standard_deviation)
pixel = object;
else
pixel = background;
end
k - 此参数的值通常为-0.2,默认为
standard_deviation - 如果我们有意思,很容易得到:((平均值来自图像^ 2) - 均值^ 2)^ 0.5
还有我的问题。如何实际计算这里的意思?对于我可以得到的每个thhresholded像素,它是一个从整个图像计算的常数值:
Core.mean(Mat src);
或者它可能是像素周围N x N邻域的平均值?还有构造函数:
Core.mean(Mat src, mask);
但根据文件:http://docs.opencv.org/java/org/opencv/core/Core.html#mean(org.opencv.core.Mat,org.opencv.core.Mat) 它看起来不像我需要的......
所以,假设我正在通过表示想要二值化的图像的整个矩阵进行迭代。每个像素都通过逻辑:
if pixel > (mean + k * standard_deviation)
有人能理解这个算法告诉我应该如何计算平均值?每个像素不同或所有像素相同?