matlab处理亮度不均匀,校正亮度不均匀问题并分析前景对象

预处理图像

将图像读入工作区。

I = imread('rice.png');

imshow(I)

80f568049e41290bbc1e03b803cd1880.png

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

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

se = strel('disk',15)

se =

strel is a disk shaped structuring element with properties:

Neighborhood: [29x29 logical]

Dimensionality: 2

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

background = imopen(I,se);

imshow(background)

0b39a301daa2661b2cd7292582e7f062.png

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

I2 = I - background;

imshow(I2)

06f18947062736670e9c84ffb46f9bbe.png

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

I3 = imadjust(I2);

imshow(I3)

81a7b9d30fcfd0b7a581b789d60ab233.png

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

I2 = imtophat(I,strel('disk',15));

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

bw = imbinarize(I3);

bw = bwareaopen(bw,50);

imshow(bw)

c1bf1f8d97631bbcc8ca2bcb98d443f6.png

识别图像中的对象

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

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

cc = bwconncomp(bw,4)

cc = struct with fields:

Connectivity: 4

ImageSize: [256 256]

NumObjects: 95

PixelIdxList: {1x95 cell}

cc.NumObjects

ans = 95

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

grain = false(size(bw));

grain(cc.PixelIdxList{50}) = true;

imshow(grain)

87e3593b885e01a142416d8f7fe1d791.png

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

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

labeled = labelmatrix(cc);

whos labeled

Name Size Bytes Class Attributes

labeled 256x256 65536 uint8

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

RGB_label = label2rgb(labeled,'spring','c','shuffle');

imshow(RGB_label)

338d9d55f48e3d2f9174eee800254193.png

计算基于面积的统计量

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

graindata = regionprops(cc,'basic')

graindata=95×1 struct array with fields:

Area

Centroid

BoundingBox

创建新向量 grain_areas,它保存每个米粒的面积测量值。

grain_areas = [graindata.Area];

计算第 50 个分量的面积。

grain_areas(50)

ans = 194

找到并显示面积最小的米粒。

[min_area, idx] = min(grain_areas)

min_area = 61

idx = 16

grain = false(size(bw));

grain(cc.PixelIdxList{idx}) = true;

imshow(grain)

d37d0d565c26d4874c3eab1baa268fb7.png

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

histogram(grain_areas)

title('Histogram of Rice Grain Area')

fe979832850fcdb29d509fbb23eedb1a.png

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

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

相关文章

LeetCode 1797. 设计一个验证系统(map)

文章目录1. 题目2. 解题1. 题目 你需要设计一个包含验证码的验证系统。 每一次验证中,用户会收到一个新的验证码,这个验证码在 currentTime 时刻之后 timeToLive 秒过期。 如果验证码被更新了,那么它会在 currentTime (可能与之前…

git add remote_使用git管理嵌入式软件版本

点击上方蓝字关注我哦~你现在的Keil工程的版本控制是怎么管理的?可能有些人的做法是发布一个版本软件后将代码打一个包保存起来,作为此版本的备份。有一种常见的情况,当开始一项新功能的开发,并且最终的效果不理想老板…

xshell 6 连接debian系统拒绝了密码_Xshell中操作Linux的常用命令,你知道几个?

作为IT人员,想必都知道Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Xshell作为专业的终端模拟器,可以用来登录Linux,从而通过命令来控制Linux系统&…

LeetCode 1798. 你能构造出连续值的最大数目

文章目录1. 题目2. 解题1. 题目 给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。 第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币,它们的和为 x ,那么称,你可以 构造 出 x 。 请返回从 0 开始&…

分别用邻接矩阵和邻接表实现图的深度优先遍历和广度优先遍历_数据结构与算法学习笔记:图...

图:图结构区别于线性结构和树型结构,区别可见下图逻辑上的图(graph)结构由顶点(vertex)和边(edge)组成。一个图结构G包含顶点集合V和边集合E,任何两个顶点之间可以有一个边表示两者的关系。对于一个存在的G,V不可以为空集&#xf…

人类附身机器人获得永生_脑机接口先驱尼古莱利斯:人类无法实现数字永生

科幻作品中的意念控制、心灵感应,甚至数字“永生”,会通过脑机接口技术得以实现吗?脑机接口技术先驱者之一、杜克大学神经工程学教授米格尔尼古莱利斯(Miguel Nicolelis)表示,不可能。近日,尼古莱利斯在巴西家中与北京…

linux内核分成如下五个子系统,linux内核主要由5个子系统 Linux内核由哪几个子系统组成?...

1, Linux内核由哪几个子系统组成?Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。1.进程调度(SCHED):控制进程对CPU的访问。当需要选择下一个进程运行时&…

LeetCode 1799. N 次操作后的最大分数和(回溯 / 状态压缩DP)

文章目录1. 题目2. 解题2.1 错误解2.2 回溯超时解2.3 回溯通过2.4 状态压缩DP1. 题目 给你 nums ,它是一个大小为 2 * n 的正整数数组。 你必须对这个数组执行 n 次操作。 在第 i 次操作时(操作编号从 1 开始),你需要&#xff1…

pytorch argmax_轻松学Pytorch使用ResNet50实现图像分类

点击上方蓝字关注我们微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识Hello大家好,这篇文章给大家详细介绍一下pytorch中最重要的组件torchvision,它包含了常见的数据集、模型架构与预训练模型权重文件、常见图像变换、计算机视觉…

LeetCode 1800. 最大升序子数组和

文章目录1. 题目2. 解题1. 题目 给你一个正整数组成的数组 nums &#xff0c;返回 nums 中一个 升序 子数组的最大可能元素和。 子数组是数组中的一个连续数字序列。 已知子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;若对所有 i&#xff08;l < i < r&a…

html使用js的变量_2、温故而知新,再学一遍JavaScript-html中如何使用JS

温故而知新&#xff0c;再学一遍JavaScripthtml中使用JavaScript有两种方式&#xff1a;通过中使用src属性引入外部JS文件,同时又在其内部嵌入JavaScript 代码&#xff0c;则嵌入的代码会被忽略。关于”字符串当浏览器遇到字符串""时就会认为代码块已经结束&#xff…

修改字段类型_PostgreSQL 关于字段类型的修改 谣言与止谣

​PostgreSQL 在9.2 之前是要面临一个指责&#xff0c;就是在更改字段类型的时候带来的不堪&#xff0c;假象你有100万行的数据&#xff0c;其中一个字段是varchar(20) ,你想将其更改为 varhcar(30), 这可能就要造成一个灾难&#xff0c;熟悉postgresql 原理的人们&#xff0c;…

用户 'IIS APPPOOL\***' 登录失败(转载)

用户 IIS APPPOOL\DefaultAppPool 登录失败。 我在windows8中安装了iis之后添加了我做的网站打开之后提示用户 IIS APPPOOL\DefaultAppPool 登录失败。 我再vs2010中能正常运行 最佳答案 这是设置iis应用程序池的设置问题。我就遇到了这样的问题。 比如我的网站取名myweb…

完全相同的4个小矩形如图所示放置_吸睛!矩形在PPT中的创意表现

如何在PPT中表现出光效来&#xff1f;这是很多人在制作PPT时都可能会面临的问题&#xff0c;大多数人的常规做法就是在许多素材网站中直接寻找&#xff0c;比如在花瓣中直接搜索"光效"&#xff0c;我们可以得到以下结果&#xff1a;这些光效PNG文件可以直接用在我们的…

LeetCode 1801. 积压订单中的订单总数(map)

文章目录1. 题目2. 解题1. 题目 给你一个二维整数数组 orders &#xff0c;其中每个 orders[i] [pricei, amounti, orderTypei] 表示有 amounti 笔类型为 orderTypei 、价格为 pricei 的订单。 订单类型 orderTypei 可以分为两种&#xff1a; 0 表示这是一批采购订单 buy1 …

quantaxis 云服务器_量化金融策略开源框架:QUANTAXIS

简介&#xff1a; QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案&#xff0c;是一个从数据爬取、清洗存储、分析回测、可视化、交易复盘的本地一站式解决方案。QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案&#xff0c;是一…

listrecord根据某个属性去重_去哪网开发实战记录(9):城市选择页(中)

兄弟组件之间的联动所谓的兄弟组件之间的联动&#xff0c;其实就是实现点击右侧的字母就能跳转至对应的首字母城市&#xff0c;因此列表组件需要知道右侧的字母列表的点击事件所对应的元素字母&#xff0c;这就需要兄弟组件间的数据传递了(Alphabet组件与List组件之间的通信)&a…

写接口是什么意思啊_科普贴:果汁包装上写NFC到底是什么意思?

比起水果&#xff0c;果汁省去了繁杂的处理步骤&#xff0c;选对了能更快地补充营养。今天麦德龙美厨课堂就为大家推荐METRO Chef NFC100%果汁系列&#xff0c;给你真材实料、原汁原味的营养美味。NFC果汁&#xff1a;真材实料 原汁原味如今果汁饮品市场上品类繁杂&#xff0c;…

LeetCode 1802. 有界数组中指定下标处的最大值(思维题)

文章目录1. 题目2. 解题1. 题目 给你三个正整数 n、index 和 maxSum 。 你需要构造一个同时满足下述所有条件的数组 nums&#xff08;下标 从 0 开始 计数&#xff09;&#xff1a; nums.length nnums[i] 是 正整数 &#xff0c;其中 0 < i < nabs(nums[i] - nums[i1]…

Linux单用户能做什么,Linux单用户模式详解 及应用场景

一、单用户模式简介二、进入单用户模式修改密码1、Centos6进入单用户修改密码1、重启系统&#xff0c;进入系统欢迎界面按上下左右键进入GRUB界面&#xff1b;2、在GRUB界面选择内核版本&#xff0c;按下e键&#xff1b;3、在此界面可以进行编辑&#xff0c;在最后输入single再…