【传知代码】图像处理解决种子计数方法

在这里插入图片描述

文章目录

  • 一、背景及意义介绍
    • 研究背景
      • 农业考种需求
      • 传统计数方法的局限性
        • 人工计数
        • 仪器设备计数
    • 研究意义
      • 提高育种效率
      • 提高计数准确性
      • 广泛的适用性
      • 数据存档与分析便利
  • 二、概述
  • 三、材料与数据准备以及方法介绍
    • 整体流程
      • 图像采集
        • 图像预处理
        • 形态学操作
          • 腐蚀运算
          • 开运算
        • 图像二值化
        • 种子计数与标记
      • 关键技术原理
        • 腐蚀运算原理
        • 开运算原理
        • 二值化原理
      • 方法优势
        • 速度优势
        • 适用性广
        • 设备简单
        • 记录留存
  • 四、Matlab代码实现
    • 代码结构概述
    • 部分代码及注释
  • 五、结果分析
    • 图像处理结果
    • 计数结果准确性
      • 粘连区域处理不当:
      • 二值化阈值不合适:
      • 图像噪声影响:
  • 六、总结
  • 部署方式

本文参考来源:传知代码平台

一、背景及意义介绍

以下是对基于Matlab图像的种子计数方法的背景及意义介绍:

研究背景

农业考种需求

在农业育种研究中,种子计数是一个较为重要的环节。考种过程涉及对大量种子的各种性状进行观察和测量,其中准确的种子数量统计是基础工作之一。例如,在评估种子的发芽率、纯度、产量潜力等指标时,都需要知道精确的种子数量。

传统计数方法的局限性

人工计数

当计数量较大时,长时间、重复性的数粒工作会导致人员疲劳,从而产生一定的误差。而且人工计数效率低下,无法满足大规模育种研究中对种子快速计数的需求。
人工计数难以保证准确性和一致性,不同人员计数结果可能存在差异。

仪器设备计数

现有的一些仪器设备用于种子计数也有一定的局限性。它们不适用于种类繁多、大小不一、形状多变的种子。例如,一些基于光电原理的计数器可能对种子的形状和大小有特定要求,对于不规则形状或过小过大的种子可能无法准确计数。
仪器设备通常比较昂贵,对于一些小型育种机构或科研团队来说,购置成本较高,限制了其广泛应用。

研究意义

提高育种效率

基于Matlab图像的种子计数方法能够快速、准确地统计种子数量,大大缩短了考种过程中种子计数的时间,提高了育种工作的整体效率。这使得科研人员能够更快地获取种子数量数据,进而更高效地进行后续的育种研究工作,如筛选优良品种、分析种子性状等。

提高计数准确性

该方法通过一系列图像处理技术,如腐蚀运算、开运算和二值化等,能够有效处理种子之间的粘连问题,减少因粘连导致的计数误差。同时,还可以对计数结果进行人工校正,进一步提高计数的准确性,为育种研究提供更可靠的数据支持。

广泛的适用性

这种计数方法具有广泛的适用性。它不仅可以用于各种类型的种子计数,只要满足在单一背景下平铺的条件即可。而且还可以扩展到其他需要计数的物品中,为相关领域的研究和应用提供了一种通用的计数解决方案。
成本效益优势
所需设备简单,只需要一台照相设备、一台计算机和常见的软件(如Matlab),相较于昂贵的专用种子计数仪器设备,大大降低了成本。这使得更多的育种机构和科研团队,包括一些小型机构和团队,都能够采用这种方法进行种子计数,促进了种子计数技术的普及和应用。

数据存档与分析便利

可对计数图片进行存档,这对于后续的数据分析和研究回顾非常有帮助。科研人员可以随时查看原始图像和计数结果,进行进一步的分析和验证,有助于提高育种研究的科学性和严谨性。

二、概述

基于Matlab图像的种子计数方法是为解决考种中人工计数繁重且易出错以及仪器设备计数有局限等问题而提出的,它通过图像采集、预处理、形态学操作及二值化等步骤对种子进行计数,具有速度快、适用性广、设备简单且可存档校正等优势,对提高育种效率和准确性等有重要意义。原文地址:

https://kns.cnki.net/kcms2/article/abstract?v=SY7jeTtuViJwrslGWo6PtHREhVR5hpz7DWu15XiWq-dWAodI4Mmap9yhKnPlhcZY2rVJunoNOwIqCRetJv0fR2O3zeDxxcHZwgkU8-3YNi3ksDm1XXpB968rX0rKvDl7zC-AHp-tLfgvt2TMSh4cVNKFlE-r2GR8jVcyW4JdawY=&uniplatform=NZKPT

三、材料与数据准备以及方法介绍

整体流程

在这里插入图片描述

图像采集

准备合适的背景(如白色A4纸),将种子均匀撒在上面,尽量减少粘连,然后使用拍摄工具获取照片,要求拍照范围不超出背景,且背景颜色单一。

图像预处理

Photoshop处理(可选):可以利用Photoshop软件提取背景颜色,调节颜色容差,使用魔棒工具和选框工具删除背景颜色,再填充黑色作为背景色。这一步骤有助于简化后续Matlab处理中的背景干扰。
Matlab中的灰度化处理:通过rgb2gray函数将彩色图像转换为灰度图像。灰度图像的像素点用颜色深度表示,范围是0(黑色)到255(白色)。灰度化处理的目的是减少图像数据量,使其更容易处理。

形态学操作
腐蚀运算

首先定义结构元素,结构元素可以是圆形、方形、线形等多种形状。腐蚀运算的思路是结构元素在整幅图像中移动,当结构元素与图像上对应像素点的像素值全部重叠相等时,保留这个像素点值。腐蚀运算的作用是使物体边界向内部收缩,也可以把小于结构元素的物体去除。

开运算

开运算是对目标图像先进行腐蚀运算再进行膨胀运算。它的作用是去除背景杂色和图像上的小异物,平滑较大区域的边界,不明显的改变区域的面积,对目标区域细小粘连点处分离等。

图像二值化

运用算法在灰度化的图像中寻找一个确定的阈值,利用阈值把灰度图像中的像素划分为2值:目标(用“1”表示,代表种子)和背景(用“0”表示)。经过前面的处理,特别是将背景替换为黑色后,阈值更容易确定,目标和背景也更容易划分,减少了背景杂色对算法的干扰。

种子计数与标记

通过计算连通图的数量得到种子数量。同时,对每个连通区域进行编号,并在原始图像上标记出连通区域的中心位置以及编号,方便人工校正。

关键技术原理

腐蚀运算原理

从数学形态学角度,腐蚀运算可以用集合的概念来解释。设原始图像为集合(A),结构元素为集合(B),腐蚀运算的结果(A\ominus B)定义为:(A\ominus B={x:B+x\subseteq A}),其中(x)是图像中的像素点坐标,(B + x)表示结构元素(B)平移到坐标(x)处。直观上,腐蚀运算就是寻找原始图像中那些能使结构元素完全包含在原始图像内的像素点。

开运算原理

开运算(A\circ B=(A\ominus B)\oplus B),其中(\oplus)表示膨胀运算。膨胀运算与腐蚀运算相反,它是将结构元素覆盖的区域进行扩展。开运算先通过腐蚀运算去除小于结构元素的物体以及一些噪声点,然后再通过膨胀运算恢复被腐蚀过度的目标物体的形状,从而达到去除背景杂色和分离粘连区域的效果。

二值化原理

二值化是根据图像的灰度值分布确定一个阈值(T),对于灰度值大于等于(T)的像素点赋值为“1”,对于灰度值小于(T)的像素点赋值为“0”。常用的阈值选择方法有全局阈值法(如Otsu算法)和局部阈值法。在该方法中,由于前期对背景进行了处理,使得阈值的确定相对简单,采用了一种基于图像灰度特征的简单阈值确定方法。

方法优势

速度优势

相对人工计数,该方法处理速度快,尤其是当计数数量较多时,这种速度优势更加明显。

适用性广

在单一的背景中只需要把种子平铺,就可以面对各种类型种子,并且该方法还可以扩展到其他需要计数的物品中。

设备简单

只需要一台照相设备、一台计算机以及几个常见的软件(如Matlab)即可开展工作。

记录留存

可对计数图片进行存档,还可以对图片进行人工校正,减少误差。

四、Matlab代码实现

代码结构概述

整个代码流程按照论文中的方法步骤进行,包括图像读取、背景去除、灰度化处理、腐蚀运算、开运算、二值化处理以及连通域分析和计数标记。

部分代码及注释

% 灰度处理
J = rgb2gray(nameFinal); 
subplot(3, 3, 3);
imshow(J);
title('灰度图像');

% 调节灰度图像
J1 = imadjust(J); 
subplot(3, 3, 4);
imshow(J1);
title('调节后的灰度图像');

% 定义结构元素
SE1,SE2

% 在灰度化图中进行腐蚀运算
J2 = imerode(J1, SE2); 
subplot(3, 3, 5);
imshow(J2);
title('腐蚀运算后的图像');

% 在灰度化图中进行开运算
J3 = imopen(J2, SE1); 
subplot(3, 3, 5);
imshow(J3);
title('开运算后的图像');

% 在灰度化图中寻找阈值
level = graythresh(J3); 

% 进行二值化运算
J4 = im2bw(J3, level); 
subplot(3, 3, 6);
imshow(J4);
title('二值化后的图像');

% 在二值化图中进行腐蚀运算
J5 = imerode(J4, SE2); 
subplot(3, 3, 7);
imshow(J5);
title('再次腐蚀后的图像');

% 在二值化图中进行开运算
J6 = imopen(J5, SE1); 
subplot(3, 3, 8);
imshow(J6);
title('再次开运算后的图像');

% 计算连通数

在这里插入图片描述

五、结果分析

图像处理结果

观察各个子图,可以看到图像经过一系列处理后的变化。原始图像显示了种子在白色A4纸上的原始状态。去除背景后的图像突出了种子主体。灰度图像将彩色图像转换为灰度形式,便于后续处理。腐蚀运算和开运算分别对图像进行了收缩和优化边界的操作,二值化图像则将图像分为目标(种子)和背景两部分,使得种子更容易被识别和计数。

计数结果准确性

通过连通域分析得到的种子计数结果与实际手动计数结果进行比较。如果两者存在差异,可能是由于以下原因:

粘连区域处理不当:

种子之间的粘连可能没有被完全分离,导致计数不准确。可以尝试调整腐蚀运算和开运算的结构元素大小或重复次数。

二值化阈值不合适:

不合适的阈值可能导致部分种子被错误地分类为背景或反之。可以手动调整阈值或尝试使用更先进的阈值选择方法。

图像噪声影响:

如果图像存在噪声,可能会干扰形态学操作和二值化过程。可以考虑在预处理阶段增加噪声去除步骤,如中值滤波或高斯滤波。

六、总结

通过本次复现,基本实现了论文中描述的基于Matlab图像的种子计数方法。在实际应用中,需要根据不同的种子类型和图像质量对代码进行适当的调整和优化,以提高计数的准确性和可靠性。

部署方式

Matlab版本:Matlab2022a

点击链接,发现更多内容 传知代码平台

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Typora一款极简Markdown文档编辑器和阅读器,实时预览,序列号生成!免费!最新可用!

文章目录 一、Typora下载和安装二、Typora序列号生成 Typora是一款Markdown编辑器和阅读器,风格极简,实时预览,所见即所得,支持MacOS、Windows、Linux操作系统,有图片和文字、代码块、数学公式、图表、目录大纲、文件管…

C/C++(八)C++11

目录 一、C11的简介 二、万能引用与完美转发 1、万能引用:模板中的 && 引用 2、完美转发:保持万能引用左右值属性的解决方案 三、可变参数模板 1、可变参数模板的基本使用 2、push 系列和 emplace 系列的区别 四、lambda表达式&#xf…

海亮科技亮相第84届中国教装展 尽显生于校园 长于校园教育基因

10月25日,第84届中国教育装备展示会(以下简称“教装展”)在昆明滇池国际会展中心开幕。作为国内教育装备领域规模最大、影响最广的专业展会,本届教装展以“数字赋能教育,创新引领未来”为主题,为教育领域新…

MYSQL期中复习

MYSQL [语句不要拼错,表名、列名不要写错,语句难记要记住] 创建表 模版 create table 表名(列名1 数据类型 [约束], 列明2 数据类型 [约束], [表级约束]); 约束 单一主码约束 primary key 联合主码约束 primary key(列名1,列名2) [要在列名12定义后…

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统

结合Intel RealSense深度相机和OpenCV来实现语义SLAM系统是一个非常强大的组合。以下是一个详细的步骤指南,帮助你构建这样一个系统。 硬件准备 Intel RealSense深度相机:例如D415、D435或L515。计算平台:一台具有足够计算能力的计算机&…

无人机之多源信息融合算法篇

一、概述 多源信息融合算法在无人机导航领域中扮演着越来越重要的角色。该算法通过整合来自不同传感器(如全球定位系统GPS、惯性导航系统INS、磁力计、气压高度计、视觉传感器等)的数据,利用先进的数据融合算法处理这些多源信息,以…

【Spring Boot】元注解

元注解 1.元注解1.1 Target1.2 Retention1.3 Inherited1.4 Documented1.5 interface 2.自定义注解2.1 创建自定义注解类2.2 实现业务逻辑2.3 使用自定义注解 1.元注解 元注解就是定义注解的注解,是 Java 提供的用于定义注解的基本注解。 注解 说明 Retention是注解…

索尔德 APON无线工业轨道机车定位测距仪介绍

索尔德APON无线定位测距仪,简称APON,采用先进的应答式微波测距技术,为车辆赋予了一双敏锐的“智慧之眼”,能够精确捕捉到有轨移动车辆的绝对位置,无论是快速穿梭还是缓慢移动,确保它们能够准确无误地抵达预…

企业如何选择适合自己的智能扭矩系统Torque?_SunTorque

【大家好,我是唐Sun,唐Sun的唐,唐Sun的Sun。一站式数智工厂解决方案服务商】 一、选择适合自己企业的智能扭矩系统时,可以考虑以下几个关键因素: 扭矩精度要求 首先要明确企业生产过程中对扭矩精度的具体要求。如果产…

全面解析:轻松掌握多模态技术精髓

多模态检索 多模态检索是指利用多种数据模态(如文本、图像、视频、音频等)进行信息检索的技术。它旨在通过整合不同形式的数据,提供更全面、精确和丰富的检索结果,以满足用户多样化的查询需求。 接下来分三部分: 单模…

net 获取本地ip地址,net mvc + net core 两种

net mvc public static string GetIP(HttpRequestBase request){// 尝试获取 X-Forwarded-For 头string result request.Headers["X-Forwarded-For"]?.Split(,).FirstOrDefault()?.Trim();if (string.IsNullOrEmpty(result)){// 获取用户的 IP 地址result reques…

云存储的费用是多少?2024年最新价格表

云存储的费用是多少最新?云存储的费用通常基于多个因素确定,包括存储容量、访问流量、请求次数、服务类型(如对象存储、文件存储、块存储等)、计费方式(按量计费或包年包月)以及可能的附加功能(…

linux 原子操作

首先是为什么要有 原子操作 网上的截图: 不能从C语言来看,要从汇编来看 但是实际的情况有可能是这样。 A进程没有得到想要的结果。 然后是 原子操作的 底层实现 最终会是这段代码,当然只是一个 加一的操作。 static inline void atomic_a…

从0到1构建 UniApp + Vue3 + TypeScript 移动端跨平台开源脚手架

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🍃 vue-uniapp-template 🌺 仓库主页: GitCode💫 Gitee &#x1f…

解析日期、编码

解析日期 这里指的是将字符串或者object类型的日期,转换成panda或python的日期类型。 主要的是dtype的变化:object / str —> datetime64[ns] # modules well use import pandas as pd import numpy as np import seaborn as sns import datetime# …

swiper默认显示三个,中间放大且显示全部图片两边显示部分图片

先上效果图 template <template><div><div class"swiper-content"><div class"swiper-container"><div class"swiper-wrapper"><div class"swiper-slide"><img src"../../assets/images/…

【每日刷题】Day146

【每日刷题】Day146 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. mari和shiny 2. 组队竞赛__牛客网 3. 删除相邻数字的最大分数_牛客题霸_牛客网 1. mari和shiny /…

Resnet搭建介绍及代码撰写详解(总结6)

可以从本人以前的文章中可以看出作者以前从事的是嵌入式控制方面相关的工作&#xff0c;是一个机器视觉小白&#xff0c;之所以开始入门机器视觉的学习主要是一个idea&#xff0c;想把机器视觉与控制相融合未来做一点小东西。废话不多说开始正题。&#xff08;如有侵权立即删稿…

compose.material3 中的DatePicker在 desktop 平台同样可以适用

引入 implementation(compose.material3) 添加触发 OptIn(ExperimentalMaterial3Api::class)Composableprivate fun BasicDateUnit(label: String, selectedDateStr: MutableState<String>) {var showDatePicker by remember { mutableStateOf(false) }var selectedDate…

115页PPT集团管控模型与企业实践5D

01 115页PPT集团管控模型与企业实践5D “5D1C”模型是一种集团管控框架&#xff0c;它将集团管控的主要任务划分为五个方面以及一个核心&#xff0c;即战略&#xff08;Strategy&#xff09;、组织&#xff08;Organization&#xff09;、决策&#xff08;Decision&#xff09…