opencv二值化之otsu算法

本文介绍了OpenCV中用于图像二值化的Otsu算法,探讨了算法的基本原理,以及如何在实践中计算图像的最佳阈值。内容包括Otsu算法的数学表达式和简化公式,并提供了两种实现方式:一种是自定义实现,另一种是利用OpenCV库的CV_THRESH_OTSU标志。在处理复杂图像时,两种方法得到的最佳阈值可能存在差异,提示了进一步优化的必要性。
摘要由CSDN通过智能技术生成
OTSU算法也称最大类间差法,有时也称之为大津算法。它是按图像的灰度特性,将图像分成背景和前景两部分。背景和前景之间的类间方差越大,说明构成图像的两部分的差别越大,当部分前景错分为背景或部分背景错分为前景都会导致两部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。


设灰度图像灰度级是L,则灰度范围为[0,L-1],

OTSU算法计算图像的最佳阈值为:

t = Max[w0(t) * (u0(t) - u)^2 + w1(t) * (u1(t) - u)^2)]

其中分割的阈值为t时,w0为背景比例,u0为背景均值,w1为前景比例,u1为前景均值,u为整幅图像的均值,u=w0*u0+w1*u1

由于上式计算量较大,于是可以等价于t=w1*w2(u1-u2)^2

以下一种是自己写的实现过程,一种通过调用opencv中 CV_THRESH_OTSU,对于复杂图片,两者在最佳阈值上不是很接近,有待改进。

代码如下:

// 1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include"opencv243.h"
#include"stdlib.h"

using namespace std;
using namespace cv;


int piexlSum;//全部像素点
int thresh;
float w1,u1,w2,u2,g,gmax;//分别表示背景色所占比例和平均灰度,前景色所占比例和平均灰度

int _tmain(int argc, _TCHAR* argv[])
{
	vector<int> hi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值