简单二值化阈值计算

此二值化阈值计算理论并非本人提出,只是之前在一个博客上看到过(忘了作者,对不住啊微笑),故用c实现了下,很简单的一个方法


基本思想:二值化取阈值 先随机设置一个阈值 然后求255和0两部分像素的平均值 再求二值化平均作为当前阈值 直到两次阈值相等

GrayImage是指向YUV原图像的指针,ImageWidth是图像宽度


int ThreshforBinary(unsigned char *GrayImage, POINT ColX, POINT RowY, int InitThresh)
{
	int iCol, iRow;
	int ForeThresh , CurThresh = 0;
	int sum255value = 0, sum0value = 0, num255 = 0, num0 = 0, avg255 = 0, avg0 = 0;
	ForeThresh = InitThresh;
  while(1)
  {
	sum255value = 0,sum0value = 0; num255 = 0, num0 = 0, avg255 = 0, avg0 = 0;
	for(iCol = ColX.x; iCol <= ColX.y; iCol++)
	{
		for(iRow = RowY.x; iRow <= RowY.y; iRow++)
		{
			if( *(GrayImage + 2 * (iRow ) * ImageWidth + 2 * iCol) >= ForeThresh)
			{
				sum255value += *(GrayImage + 2 * (iRow ) * ImageWidth + 2 * iCol);
				num255 ++;
			}
			else
			{
				sum0value += *(GrayImage + 2 * (iRow ) * ImageWidth + 2 * iCol);
				num0 ++;
			}
		}
	}
	avg255 = sum255value / num255;
	avg0 = sum0value / num0;
	CurThresh = (avg255 + avg0) / 2;
	if(abs(CurThresh - ForeThresh) >=1)
		ForeThresh = CurThresh;
	else
		break;
  }
  return CurThresh;
} 


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值