图像阈值分割处理

1、图像阈值定义

  利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。(百度百科定义)。
  简单来说,图像阈值就是选择一个或多个合适的值,结合图像的像素灰度值将像素分为两类(目标和背景)。简单单阈值C++(结合opencv)代码及案例如下所示:

代码

#include<opencv2/opencv.hpp>
#include<iostream>
void main()
{
	cv::Mat src = cv::imread("test7.bmp",-1);//读图
	int thresholdVal = 130;//阈值
	//图像阈值分割
	cv::Mat thresholdImage(src.size(),CV_8UC1,cv::Scalar(0));
	for (int i = 0; i < src.rows; i++)
	{
		for (int j = 0; j < src.cols; j++)
		{
			if (src.at<uchar>(i, j) > thresholdVal)
				thresholdImage.at<uchar>(i, j) = 255;
		}
	}
	cv::waitKey();
}

单阈值案例:

在这里插入图片描述

图1(a)原图
在这里插入图片描述

图1(b)阈值30

在这里插入图片描述

图1(c)阈值50
在这里插入图片描述

图1(d)阈值130

  从上面单阈值效果来看,不同的阈值有不同的目标提取效果,阈值在选择时需要根据目标的灰度特征以及背景的灰度情况确定。

2、阈值方法

(1)固定阈值

   设定一个数值,利用此值将图像像素灰度值分为两类,其效果如图一中所示。

(2)自适应阈值

  根据算法计算出一个阈值,利用此阈值将图像像素分为目标和背景。如图2所示,自适应阈值是通过算法找到一个波谷值或一个合适的值(如图2中红线),将像素分为两类。算法主要有:OTSU阈值、迭代阈值、最大熵阈值。
在这里插入图片描述

图2 灰度直方图

(3)聚类分割

   这类方法的主要核心是利用聚类算法将图像灰度分为多个类,每个类都有一个灰度范围(如图3所示),根据目标灰度特征选则合适的类,选择其对应类的灰度范围,将图像像素分为两类。典型算法例如EM聚类分割算法。
在这里插入图片描述

图3 聚类分类示意图

3、阈值类型

(1)阈值二值化

表达式为:
在这里插入图片描述

(2)阈值反二值化

表达式为:
在这里插入图片描述

(3)截断

表达式为:

在这里插入图片描述

(4)阈值取零

表达式为:
在这里插入图片描述

(5)阈值反取零

表达式为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值