基于大津阈值法和二值化与联通区域标记进行图像目标计数

1 建模

A.读取图像:

        1.使用imread函数读取图像文件。

        2.如果图像是彩色的,通常需要先转换为灰度图像,因为大津阈值法通常应用于灰度图像。

B.灰度化:

        1.如果图像是彩色的,使用rgb2gray函数将其转换为灰度图像。

        2.灰度图像只包含亮度信息,便于后续处理。

D.阈值分割:

        1.使用大津阈值法(Otsu's method)计算全局阈值。

        2.graythresh函数可以自动计算这个阈值。

        3.使用imbinarize或逻辑运算(例如gray_image > threshold)将灰度图像转换为二值图像。

E.连通区域标记:

        1.使用bwlabel函数标记二值图像中的连通区域。

        2.这个函数会为每个独立的连通区域分配一个唯一的标签。

F.统计连通区域数量:

        1.bwlabel函数在返回标记图像的同时,也返回了连通区域的数量。

        2.可以直接使用这个数量作为目标物体的计数。

G.可视化结果:

        1.使用imshow函数显示原始图像、二值化图像和标记后的图像。

        2.可以使用subplot函数将多个图像放在同一个窗口中显示。

        3.可以使用label2rgb函数将标记图像转换为彩色图像,以便于观察不同的连通区域。

2 代码

function segment_and_label_image(image_path)  % 读取图像  original_image = imread(image_path);  if size(original_image, 3) == 3  % 如果是彩色图像,则转换为灰度图像  gray_image = rgb2gray(original_image);  else  gray_image = original_image;  end  % 使用大津阈值法计算阈值  threshold = graythresh(gray_image);  % 根据阈值对图像进行二值化处理  binary_image = imbinarize(gray_image, threshold);  % 标记连通区域  [labeled_image, num_objects] = bwlabel(binary_image);  % 显示原始图像  subplot(2, 2, 1);  imshow(original_image);  title('原始图像');  % 显示二值化图像  subplot(2, 2, 2);  imshow(binary_image);  title('二值化图像');  % 显示标记连通区域后的图像  subplot(2, 2, 3);  imshow(label2rgb(labeled_image, 'jet', 'k', 'shuffle'));  title(['连通区域标记,共检测到 ', num2str(num_objects), ' 个对象']); % 等待用户按键,然后关闭所有图像窗口  pause;  close all;  
end  segment_and_label_image('米粒.png'); % 替换为你的图像路径

3 运行结果

图1 图像目标计数结果

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

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

相关文章

《昇思25天学习打卡营第16天 | 昇思MindSpore基于MobileNetv2的垃圾分类》

16天 本节学习了垃圾分类代码开发的方法。通过读取本地图像数据作为输入,对图像中的垃圾物体进行检测,并且将检测结果图片保存到文件中。 MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络,相比于传…

Excel显示/隐藏批注按钮为什么是灰色?

在excel中,经常使用批注来加强数据信息的提示,有时候会把很多的批注显示出来,但是再想将它们隐藏起来,全选工作表后,“显示/隐藏批注”按钮是灰色的,不可用。 二、可操作方法 批注在excel、WPS表格中都是按…

【考研408计算机组成原理】微程序设计重要考点指令流水线考研真题+考点分析

苏泽 “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家 目录 微指令的形成方式 微指令的地址形成方式 对应考题 题目:微指令的地址形成方式 - 断定方式 解题思路: 答题: 分析考点&…

每日疑问,多线程场景,下面的代码是否可以保证只执行一次

看着这个代码的目的是只注册一次sighandler,但是这个判定是否可以保证一次?但是根据代码看,其实不会有关键区的读写,所以即使有同步问题,也不会产生什么特别的影响。所以代码没有问题,但是这是一个坑。 in…

Spring Boot中的分页与排序实现

Spring Boot中的分页与排序实现 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在开发Web应用时,分页和排序是常见的功能需求,特别是在处…

计算机体系结构和指令系统

1.计算机体系结构 - 五大部件 - 冯 诺依曼 计算机的特点 1.计算机有五大部件组成 2.指令和数据以同等地位存储于存储器,可按照地址访问 3.指令和数据用二进制表示 4.指令由操作码和地址码组成 5。存储程序 6.以计算器为中心(输入、输出设备与存储器…

2024年【湖北省安全员-C证】新版试题及湖北省安全员-C证试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 湖北省安全员-C证新版试题参考答案及湖北省安全员-C证考试试题解析是安全生产模拟考试一点通题库老师及湖北省安全员-C证操作证已考过的学员汇总,相对有效帮助湖北省安全员-C证试题及解析学员顺利通过考试…

WIN10系统自带录屏软件怎么用?

WIN10系统自带录屏软件怎么用? WIN10系统录屏软件怎么用? 第一步:WING 快捷打开系统自带录屏软件,如下: 第二步:点击录屏软件区域“开始录制”按钮进入屏幕录制状态,如下: 第三步…

基于SpringBoot的财务管理系统

根据您提供的论文内容和模板要求,以下是定制化的文章输出: 你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言: Java 数据库: MySQL 技术: SpringBoot…

某度,网盘免费加速,复活!

哈喽,各位小伙伴们好,我是给大家带来各类黑科技与前沿资讯的小武。 有小伙伴反馈之前如下夸克网盘脚本的加速方法失效,小武今天测试,依旧正常使用! 百度/迅雷/夸克,网盘免费加速,已破&#xf…

pytest测试框架pytest-cov插件生成代码覆盖率

Pytest提供了丰富的插件来扩展其功能,本章介绍下pytest-cov插件,用于生成测试覆盖率报告,帮助开发者了解哪些部分的代码被测试覆盖,哪些部分还需要进一步的测试。 pytest-cov 支持多种报告格式,包括纯文本、HTML、XML …

node中使用mysql

在nodeJs中mysq的基础用法 mysql基础 增删改查 const mysql require(mysql)const connection mysql.createConnection({host: localhost, // 数据库的IP地址port: 3306, // 端口号user: root, // 登录数据库的账号password: 123456, // 登录数据库的密码database: test, // 指…

JavaScript高级程序设计(第四版)--学习记录之迭代器与生成器(下)

生成器 生成器是 ECMAScript 6 新增的一个极为灵活的结构,拥有在一个函数块内暂停和恢复代码执行的能力。 生成器基础 生成器的形式是一个函数,函数名称前面加一个星号表示它是一个生成器。 //生成器函数声明 function* generatorFn(){} //生成器函数表…

网站页面源码,前端页面的最基本组成形式,网页到底是什么? 网站开发教程...

演示网站:gofly.v1kf.com -----------【视频原文案】:现在给大家介绍一下网站上的页面到底是什么。对于我们很多的普通用户来说,他可能不知道一个网站一个页面到底是什么东西。我们来从最基本的开始:如果想新建一个页面&#xff0…

vue3+ts+vite项目中使用spreadjs,通过script标签引入spreadjs可以提高打包速度

https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/quickstart/quickstart-js 右键另存这个官方的示例页面可以下载全部js文件 https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html spread.html: <!DOCTYPE html> <html lang"zh">…

共识机制深度解析:PoW、PoS、DPoS和PBFT

区块链的世界里&#xff0c;有一个非常重要的概念叫做“共识机制”。它就像是区块链的心脏&#xff0c;保证大家在这条链上的信息是可靠的、不可篡改的。今天&#xff0c;我们就来通俗易懂地聊聊区块链里的四大共识机制&#xff1a;工作量证明&#xff08;PoW&#xff09;、权益…

数据产品经理知识库构建

概述 数据产品经理是企业中负责管理和推动数据产品的专业人员。他们利用数据来辅助决策&#xff0c;优化产品&#xff0c;提升用户体验。用STAR法则&#xff08;Situation, Task, Action, Result&#xff09;来介绍数据产品经理的角色&#xff0c;应该学习的数据产品&#…

Rust-11-错误处理

Rust 将错误分为两大类&#xff1a;可恢复的&#xff08;recoverable&#xff09;和 不可恢复的&#xff08;unrecoverable&#xff09;错误。对于一个可恢复的错误&#xff0c;比如文件未找到的错误&#xff0c;我们很可能只想向用户报告问题并重试操作。不可恢复的错误总是 b…

Labview_网络流

网络流的介绍 网络流是一种易于配置、紧密集成的动态通信方法&#xff0c;用于将数据从一个应用程序传输到另一个应用程序&#xff0c;其吞吐量和延迟特性可与 TCP 相媲美。但是&#xff0c;与 TCP 不同的是&#xff0c;网络流直接支持任意数据类型的传输&#xff0c;而无需先…

Java虚拟机调优技巧及性能监控

Java虚拟机调优技巧及性能监控 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 Java虚拟机&#xff08;JVM&#xff09;作为Java程序的核心执行环境&…