otsu

OTSU阈值化

被刻印的时光 ゝ 提交于 2019-12-06 08:44:18
OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法。如下是C++实现opencv OTSU阈值化的代码(opencv版本是3.0): 头文件: #include <stdio.h> #include <string> #include "opencv2/highgui/highgui.hpp" #include "opencv2/opencv.hpp" using namespace std; using namespace cv; 大津法函数: int OTSU(cv::Mat srcImage) { int nCols = srcImage.cols; int nRows = srcImage.rows; int threshold = 0; // 初始化统计参数 int nSumPix[256]; float nProDis[256]; for (int i = 0; i < 256; i++) { nSumPix[i] = 0; nProDis[i] = 0; } // 统计灰度级中每个像素在整幅图像中的个数 for (int i = 0; i < nCols; i++) { for (int j = 0; j < nRows; j++) { nSumPix[(int)srcImage.at<uchar>(i, j)]++; } } //

Image Processing - Otsu's method

最后都变了- 提交于 2019-12-03 21:37:49
Otsu's method 是一种图像自动阈值的方法,该方法返回一个将图像分为“前景”和“背景”两类的数值,该数值使得上述两类的类内方差最小,即类间方差最大。 图1 原图像 图2 使用 Otsu's method 进行二值化后的图像 算法 \[ \sigma _{w}^{2}(t)=\omega _{0}(t)\sigma _{0}^{2}(t)+\omega _{1}(t)\sigma _{1}^{2}(t) \] 其中, \(t\) 是将图像分为“前景”和“背景”两类的阈值, \(\omega _{0}\) 和 \(\omega _{1}\) 分别是这两个类的加权数,而 \(\sigma _{0}^{2}\) 和 \(\sigma _{1}^{2}\) 分别是这两个类的方差。 图3 算法可视化动图 ## 参考 Wikipedia - Otsu's method The Lab Book Pages - Otsu Thresholding 来源: https://www.cnblogs.com/zdfffg/p/11809719.html