Ostu最大类间差方法

 

Ostu方法又名最大类间差方法,通过统计整个图像的直方图特性来实现全局阈值T的自动选取,其算法步骤为:

1) 先计算图像的直方图,即将图像所有的像素点按照0~255256bin,统计落在每个bin的像素点数量

2) 归一化直方图,也即将每个bin中像素点数量除以总的像素点

3) i表示分类的阈值,也即一个灰度级,从0开始迭代

4) 通过归一化的直方图,统计0~i 灰度级的像素(假设像素值在此范围的像素叫做前景像素) 所占整幅图像的比例w0,并统计前景像素的平均灰度u0;统计i~255灰度级的像素(假设像素值在此范围的像素叫做背景像素) 所占整幅图像的比例w1,并统计背景像素的平均灰度u1

5) 计算前景像素和背景像素的方差 g = w0*w1*(u0-u1) (u0-u1)

6) i++;转到4),直到i256时结束迭代

7)将最大g相应的i值作为图像的全局阈值

 

 

 

clear all;close all;clc

img=imread('C:\Users\hjd\Desktop\test1.jpg');

if ndims(img)==3

    img = rgb2gray(img);

end

 [count, x] = imhist(img);

ostu_result = [];

sum_pixel = sum(count(:));

count_w = count(:)/sum_pixel;

count_u = count(:).*x(:);

for i=1:256

    w0 = sum(count_w(1:i));

    sum_u0 = sum(count_u(1:i));

    u0 = sum_u0/sum(count(1:i));

    if i==256

        w1=0;

        u1=0;

    else

        w1 = sum(count_w(i+1:end));

        sum_u1 = sum(count_u(i+1:end));

        u1 = sum_u1/sum(count(i+1:end));

    end

    ostu_result(i) = w0*w1*(u0-u1)^2;

end

[index,maxValue]=max(ostu_result);

level = graythresh(img);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pads 文本不能修改_斜框检测经典网络(文本)- R2CNN

论文题目:R2CNN:Rotational Region CNN for Orientation Robust Scene Text Detection论文来源:2017CVPR论文地址:https://arxiv.org/abs/1706.09579论文代码:https://github.com/DetectionTeamUCAS/R2CNN_Faster-RCNN…

【题解】炮兵阵地

【题解】炮兵阵地 luogu 题解 暴力状压记录上一行和上上行信息,暴力判断是否存在不合法的阵地,暴力滚动数组,暴力统计,暴力转移即可。 看了yyb代码,我感觉我不曾写过代码... 加入说不要那么暴力也可以,可以…

matlab reshape矩阵维度变换

B reshape(A,m,n) 将矩阵A的元素返回到一个mn的矩阵B。如果A中没有mn个元素则返回一个错误。 B reshape(A,m,n,p,...) or B reshape(A,[m n p ...]) 把A中元素进行重塑成mnp…的矩阵,特别地,指定的维数mnp…的积必须与prod(size(A))相同。 …

使用Arquillian测试Spring Data + Spring Boot应用程序(第2部分)

在上一篇文章中 ,我写了关于如何使用Arquillian Cube和 Docker一起测试Spring Data应用程序的信息。 测试看起来像: RunWith(SpringRunner.class) SpringBootTest(classes PingPongController.class, webEnvironment RANDOM_PORT) ContextConfigurati…

OpenCV circle图像上画圆

OpenCV中circle与rectangle函数显示,只不过rectangle在图像中画矩形,circle在图像中画圆。 void circle(Mat img, Point center, int radius, Scalar color, int thickness1, int lineType8, int shift0) img为源图像 center为画圆的圆心坐标 radius…

如何得到长整数逆序后的整数

目录 一 如何得到长整数逆序后的整数注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 如何得到长整数逆序后的整数 最近在写代码遇到这样一个问题:如何得到得到一个长整型数逆序后的长整型数?比如输入…

python网页表格读取_是否可以读取网页html表格数据?

我目前正在考虑一些自动读取网页数据。因此,有没有可能从网页中读取以下类型的表格:excel应该有一个值name of condion,Operator and Expressions。在编辑>>> from urllib import urlopen>>> from bs4 import BeautifulSoup>>&g…

matlab exist()判断目录文件是否存在

if exist(abc.doc,file)0error(display(文件不存在));end判断当前目录中是否存在x文件夹,若不存在则创建if exist(x,dir)0mkdir(x);end

20190608笔试题のCSS-属性继承

以下的CSS属性哪些可以继承?(单选) A. font-sizeB. marginC. widthD. padding emmm,这题答案是A,看到这题我是能选对的,但又不由让我想到一件事情,在全部的CSS属性里有哪些是不可被继承…

群晖套件来源_群晖安装IPKG包管理器及第三方社区安装包步骤

运行环境为群晖DS1517,系统版本为DSM6.2.3。群晖虽然是基于Linux开发的,但与Red Hat或者Ubuntu这样的公开发行版不同,群晖除了官方的图形化包管理器外,并没有提供类似yum或者apt-get等类似包管理器。为了通过命令行安装诸如nano 等…

tf.app.flags和tf.app.run的使用

tf.app.flags和tf.app.run的使用 tf.app.flags主要用于处理命令行参数的解析工作,其实可以理解为一个封装好了的argparse包(argparse是一种结构化的数据存储格式,类似于Json、XML)。 我们通过tf.app.flags来调用这个flags.py文件…

redis 持久化性能_高性能持久消息

redis 持久化性能总览 尽管有许多可用于Java的高性能消息传递系统,但大多数都避免引用基准,包括持久消息传递和消息的序列化/反序列化。 这样做有多种原因。 1)您并不总是需要或想要持久消息2)您希望使用自己的序列化选项。 避免使…

python标签使用教程_怎样用Python做标签云

怎样用Python做标签云标签云是比较直观的频率分布表现方式,很多网站和APP在年度盘点和总结时会使用。Python生成标签云有一个比较易用的库 pytagcloud。Python做标签云的具体方法如下:1、导入头文件from pytagcloud import create_tag_image, make_tagsf…

057-while循环

<?php$x1; //初始化变量while($x<5){ //执行while循环echo "$x<br />";$x;} ?> 转载于:https://www.cnblogs.com/tianpan2019/p/10995180.html

OpenCV显示中文汉字,未使用CvxText和FreeType库

OpenCV显示中文汉字&#xff0c;未使用CvxText和FreeType库 采用windows的GDI显示系统的TrueType字体&#xff0c;没有封装&#xff0c;就两个函数&#xff0c;分成了h和cpp文件&#xff0c;可以自己编辑文件名和函数名&#xff0c;亦可以直接将cpp的代码复制到你需要的程序中…

使用Arquillian测试Spring Data + Spring Boot应用程序(第1部分)

Spring Data的使命是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它提供了与一些后端技术的集成&#xff0c;例如JPA&#xff0c;Rest&#xff0c;MongoDB&#xff0c;Neo4J或Redis。 因此&#xff0…

生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

经常听到小伙伴问到生日祝福视频怎么做&#xff0c;当然我想既然要为他人做生日祝福视频&#xff0c;那么这个人必定是自己身边比较重要的人&#xff0c;而生日又是每个人都是非常重要的&#xff0c;在这种充满意义的时刻&#xff0c;我们想给自己极其重要的人送上一份祝福&…

putty WinScp 免密登录远程 Linux

该方法的原理是预先生成一对公钥和私钥&#xff0c;私钥以文件的形式保存在本地&#xff0c;公钥保存在远程机器上。这样每次登录只需指定私钥文件&#xff0c;远程机器通过比对公钥和私钥来验证登录的合法性。 Putty 免密登录 第一步 生成公钥/私钥对 使用 putty 安装目录中的…

tensorflow log 日志级别设置

log 日志级别设置 import os os.environ["TF_CPP_MIN_LOG_LEVEL"]1 # 这是默认的显示等级&#xff0c;显示所有信息 os.environ["TF_CPP_MIN_LOG_LEVEL"]2 # 只显示 warning 和 Error os.environ["TF_CPP_MIN_LOG_LEVEL"]3 # 只显示 Error

springcloud微服务实战--笔记--1、基础知识

微服务的问题&#xff1a; 分布式事务和数据一致性。 由于分布式事务本身第实现难度就非常大&#xff0c;所以在微服务架构中&#xff0c;我们更强调在各服务之间进行无事务第调用&#xff0c;而对于数据一致性&#xff0c;只要求数据在最后第处理状态是一致第即可&#xff1b;…