OTSU一维算法概述

OTSU算法是一种自适应阈值分割方法,用于从灰度图像中找到最佳阈值进行二值化。本文介绍了算法的基本原理,包括计算灰度直方图、归一化处理、确定最佳阈值等步骤,并通过代码实现展示了其实际效果。在应用中,结合形态学运算,达到了理想的效果。
摘要由CSDN通过智能技术生成

 OTSU一维算法,我自己的理解是自适应阈值分割法,通过对灰度图的处理自行得到一个最佳的阈值,并最后用这个阈值二值化灰度图,参考了商丘师范学院的胡颖老师的<<OTSU算法的改进与纠正>>一文,但是我用的时候效果不是很理想,于是自己进行了稍微的变动,

OTSU算法:就是计算出灰度图最佳阈值的算法

1.先对灰度图进行直方图计算并归一化处理,得到0-255之间每个像素在灰度图中出现的概率,即表示为某个像素在灰度图中出现了n个,灰度图总的像素点为N个,则这个像素的出现概率为Pi=n/N

2.每个灰度图可以由阈值k将灰度图分为A,B两大类,很容易得到A,B类在灰度图中的出现概率以及灰度均值

3.计算灰度图A,B类得类间方差,在最佳阈值K处,求得的类间方差最大,也就是类间方差最大的那个时刻的阈值就为灰度图的最佳阈值

下面结合代码讲解

int ThresholdOtsu(IplImage *src)
{
 assert(src->nChannels == 1);
 float histogram[256] = {0};

 for(int h=0;h<src->height;h++)
 {
  unsigned char* p = (
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一维Otsu阈值分割算法是一种自适应的图像分割方法,主要用于将一维图像从背景和前景分离出来。该算法的原理如下: 1. 统计灰度级的直方图 将一维图像的灰度级作为横轴,像素数量作为纵轴,统计每个灰度级的像素数量,得到灰度级的直方图。 2. 计算灰度级的累积分布函数和像素平均灰度 根据灰度级的直方图,计算每个灰度级的像素累积分布函数,即前景和背景像素的比例。同时计算整个图像的平均灰度。 3. 计算最佳阈值 遍历所有可能的阈值,将图像分割成前景和背景,并计算前景和背景的像素数量、平均灰度和方差。根据Otsu公式计算每个阈值的类间方差,选择使类间方差最大的阈值作为最佳阈值。 4. 应用阈值分割 使用最佳阈值将图像分割成前景和背景,前景中的像素灰度值设置为255(或其他设定的值),背景中的像素灰度值设置为0(或其他设定的值)。 在Matlab中,可以使用以下步骤实现一维Otsu阈值分割算法: 1. 使用imhist函数计算灰度级的直方图。 2. 使用cumsum函数计算灰度级的累积分布函数,并使用mean函数计算像素平均灰度。 3. 使用循环遍历所有可能的阈值,并在每个阈值处计算前景和背景的像素数量、平均灰度和方差。 4. 根据Otsu公式计算每个阈值的类间方差,并选择使类间方差最大的阈值作为最佳阈值。 5. 使用imbinarize函数应用最佳阈值分割图像,将前景中的像素灰度值设置为255,背景中的像素灰度值设置为0。 以上就是一维Otsu阈值分割算法的原理,并给出了使用Matlab实现该算法的步骤。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值