matlab大津法,大津算法(OTSU)

大津算法(OTSU)

在图像处理领域,我们会遇到如下需求:把图像中的目标物体和背景分开。比如背景用白色表示,目标物体用黑色表示。此时我们知道目标物体的灰度值相互接近,背景灰度值相互接近,那么用大津算法能很好把目标从背景当中区分开来。

算法思想

目标

比如对于下面这张灰度图片

ff7f9f00bd99

目标物体是中间黑色的几何物体,我们想让这些物体和背景区分更明显一些,比如让物体为纯黑,背景全白。那么我们就需要找到一个合适的阈值,使图片上灰度值大于这个阈值的像素点为255(白色),灰度值小于阈值的像素点为0(黑色)。也就是变成下面这幅图:

ff7f9f00bd99

那么大津算法需要处理的就是找到最佳的阈值,让目标和物体尽可能分离开。

灰度直方图

为了找到合适的阈值,我们首先观察原图的灰度直方图📊:

ff7f9f00bd99

这是用 Matlab 对原图形成的灰度直方图,灰度直方图的含义是统计图像中不同灰度值的分布情况。由图我们可以看出两个尖峰,在灰度值为0~20的地方存在一个尖峰,代表原图中有大量像素点灰度值为0~20,经观察我们可以认为这部分对应于目标物体。同

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
彩色图像大津法是一种图像处理算法,它可以将彩色图像转换成黑白二值图像,该算法的核心在于选择一个合适的阈值,使得图像中的前景和背景能够被正确地分离出来。 在实现彩色图像大津法二值化的C语言代码中,需要使用OpenCV库来读取图像并对其进行处理。首先将彩色图像转换为灰度图像,然后计算图像的直方图,并利用大津法求出最佳阈值。最后将阈值应用于原始图像,将其二值化。 具体地,首先读取彩色图像并将其转化为灰度图像: ``` Mat srcImg = imread("test.jpg"); Mat grayImg; cvtColor(srcImg, grayImg, COLOR_BGR2GRAY); ``` 然后计算图像的直方图: ``` int hist[256] = {0}; for (int i = 0; i < grayImg.rows; i++) { for (int j = 0; j < grayImg.cols; j++) { hist[grayImg.at<uchar>(i,j)]++; } } ``` 接下来计算最佳阈值: ``` int total = grayImg.rows * grayImg.cols; float sum = 0.0; for (int i = 0; i < 256; i++) { sum += i * hist[i]; } float sumB = 0.0; int wB = 0; int wF = 0; int threshold = 0; float maxVariance = 0.0; for (int i = 0; i < 256; i++) { wB += hist[i]; if (wB == 0) { continue; } wF = total - wB; if (wF == 0) { break; } sumB += (float)(i * hist[i]); float meanB = sumB / wB; float meanF = (sum - sumB) / wF; float variance = (float)wB * (float)wF * (meanB - meanF) * (meanB - meanF); if (variance > maxVariance) { maxVariance = variance; threshold = i; } } ``` 最后将阈值应用于原始图像,将其二值化: ``` Mat binaryImg; threshold(grayImg, binaryImg, threshold, 255, THRESH_BINARY); ``` 以上就是用C语言实现彩色图像大津法二值化的基本流程,需要注意的是,在实际使用中,还需要对代码进行适当的优化和封装,以提高算法的效率和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值