校正图像亮度不均匀问题并分析前景对象

简介: 校正图像亮度不均匀问题并分析前景对象

​一、前言
在分析前的预处理步骤增强图像。在此示例中,可以校正背景亮度不均匀问题,并将图像转换为二值图像,以便于识别前景对象(单个米粒)。然后,您可以分析对象,例如计算每粒大米的面积,并可以计算图像中所有对象的统计量。

二、预处理图像
将图像读入工作区。
1.png

图像中心的背景亮度比底部亮度高。预处理图像,使背景亮度更加均匀。

第一步,使用形态学开运算删除所有前景(米粒)。开运算会删除无法完全包含结构元素的小对象。定义半径为 15 的盘形结构元素,它完全可放入一粒米内。

要执行形态学开运算,请使用具有结构元素的 imopen。
2.png

从原始图像 I 中减去背景逼近图像 background,然后查看生成的图像。从原始图像中减去调整后的背景图像后,生成的图像具有均匀的背景,但现在对于分析来说有点暗。
3.png

使用 imadjust,通过在低强度和高强度下都对 1% 的数据进行饱和处理,并通过拉伸强度值以填充 uint8 动态范围,来提高处理后的图像 I2 的对比度。
4.png

请注意,前面的两个步骤可以由使用 imtophat 的一个步骤来代替完成,后者先计算形态学开运算,然后从原始图像中减去它。

创建处理后的图像的二值版本,以便使用工具箱函数进行分析。使用 imbinarize 函数将灰度图像转换为二值图像。使用 bwareaopen 函数去除图像中的背景噪声。
5.png

三、识别图像中的对象
现在您已创建原始图像的二值版本,您可以对图像中的对象执行分析。

在二值图像中查找所有连通分量(对象)。结果的准确度取决于对象的大小、连通性参数(4、8 或任意值),以及是否有相互接触的对象(在这种情况下,它们可能被标记为一个对象)。二值图像 bw 中的一些米粒相互接触。

查看图像中标记为 50 的米粒。
6.png

通过创建标签矩阵,然后将其显示为伪彩色索引图像,可视化图像中的所有连通分量。

使用 labelmatrix 根据 bwconncomp 的输出创建标签矩阵。请注意,labelmatrix 将标签矩阵存储在依对象数量得出的最小数值类中。

使用 label2rgb 选择颜色图、背景颜色以及标签矩阵中的对象如何映射到颜色图中的颜色。在伪彩色图像中,用于标识标签矩阵中每个对象的标签映射到相关联的颜色图矩阵中的不同颜色。
7.png

四、计算基于面积的统计量
使用 regionprops 计算图像中每个对象的面积。每个米粒均为 cc 结构体中的一个连通分量。

创建新向量 grain_areas,它保存每个米粒的面积测量值。计算第 50 个分量的面积。找到并显示面积最小的米粒。

8.png

使用 histogram 命令创建米粒面积的直方图。
9.png

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 PyTorch
10招立竿见影的PyTorch性能优化技巧,让模型训练速度翻倍
本文系统总结了PyTorch性能调优的关键技术,涵盖混合精度训练、PyTorch 2.0编译功能、推理模式优化、Channels-Last内存格式、图优化与变换、cuDNN基准测试、内存使用优化等多个方面。通过实证测试,文章详细分析了各技术的实现细节、优势及适用场景,如混合精度训练可显著提升计算效率和内存利用率,torch.compile()能自动优化代码生成以加速模型运行。此外,还探讨了推理模式的选择、卷积操作优化及模型构建的最佳实践。这些方法结合良好的编码习惯,有助于开发者构建高效、可扩展的深度学习应用。
354 3
10招立竿见影的PyTorch性能优化技巧,让模型训练速度翻倍
|
数据可视化 C# 开发者
用C#实现最小二乘法(用OxyPlot绘图)
用C#实现最小二乘法(用OxyPlot绘图)✨
297 1
|
机器学习/深度学习
【元学习meta-learning】通俗易懂讲解元学习以及与监督学习的区别
本文通过通俗易懂的方式解释了元学习(Meta-learning)的概念及其与传统监督学习的区别,并通过实例说明了元学习是如何让模型具备快速学习新任务的能力。
1709 1
|
机器学习/深度学习 人工智能 数据挖掘
【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
【5月更文挑战第11天】【机器学习】贝叶斯统计中,“先验概率”和“后验概率”的区别?
|
openCL API 计算机视觉
OpenCV3.x中UMat对象介绍与使用
OpenCV3.x中UMat对象介绍与使用
315 0
|
算法 计算机视觉 芯片
[Halcon&定位] 二维仿射变换原理与算子解析
[Halcon&定位] 二维仿射变换原理与算子解析
715 0
|
机器学习/深度学习 边缘计算 物联网
【轻量化网络】初识:SqueezeNet网络&MobileNet网络& ShuffleNet网络
【轻量化网络】初识:SqueezeNet网络&MobileNet网络& ShuffleNet网络
797 0
|
算法 索引 Python
Python高级数据结构——线段树(Segment Tree)
Python高级数据结构——线段树(Segment Tree)
424 2
|
网络协议 关系型数据库 MySQL
企业级云上网络构建实践
本实验介绍了企业级云上网络构建的核心概念以及构建方法,这些概念可以帮助了解如何在阿里云上快速的进行基础网络的创建、业务隔离及多网之间的互联互通,助力更好的在阿里云上规划网络。
|
Kubernetes 负载均衡 Cloud Native
如何将Docker与Kubernetes集成,实现云原生应用程序
在云原生应用程序开发中,Docker和Kubernetes通常是不可或缺的工具。Docker用于容器化应用程序和其依赖项,而Kubernetes用于自动化和编排容器的部署、扩展和管理。下面是如何将Docker与Kubernetes集成
551 0