二值化是图像处理的最基本的功能,是 图像分割的最简单形式。
一般图像处理流程:
- 图像灰度化,再图像二值化
- 连通域分析,搜索目标
我经常需要设计一些二值化算法,用于图像处理。
其中一种二值化算法是 基于极值比率。
int bin_max(const Mat& src, Mat& dst, double ratio = 0.9) { //最亮的 百分比 double minV = 0, maxV = 255; cv::minMaxLoc(src, &minV, &maxV); int val = maxV * ratio; cv::threshold(src, dst, val, 255, THRESH_BINARY); return val;}
极值比率,可以用于 一些比较特殊的场景,比如 热红外目标跟踪。
用这种简单的二值化就可以得到不错的效果,其中系数需要设置,一般设置为0.8左右,就有不错效果。
目前我整理了比较多的二值化算法:
有一些算法是 opencv和第三方库,有些算法是根据效果个人设计的。
有机会分享其中一些效果不错的算法。