图像处理课程上老师布置的任务,要求求出图片rice.png中米粒的个数及其各米粒的大小。

本来开始的时候我们不是很会做,就去百度或者去博客园上面查找别人的代码,发现都很长。少则三四十行,多则五六十行。一下看懂太过困难,最后老师讲解了一下,这是最终版本,不超过10行就搞定了。PS:我在CSDN上面看到别的版本是69粒,是因为它去掉了边缘部分。

I=imread('rice.png');
BG=imopen(I,strel('disk',15));
%对图像实现开运算,开运算一般能平滑图像的轮廓,消弱狭窄的部分,去掉细的突出。
% imshow(BG);
I2=imsubtract(I,BG);
% imshow(I2);
%????????
level=graythresh(I2);
bw2=im2bw(I2,level);
imshow(bw2);
[labeled,numObjects]=bwlabel(bw2,8);
max(max(labeled))

输出结果为99,故一共有99粒米

 

下面来讲解如何计算出该结果的,

rice.png

首先我们可以看到这张图是明暗不均的一张图片,上面的亮度比下面的亮度高,甚至还有些杂色,第一步我们要做的就是提取出背景,然后用原图减去背景图,就可以将米粒完整干净的提取出来了。

I=imread('rice.png');BG=imopen(I,strel('disk',15));
imshow(BG);I2=imsubtract(I,BG);
imshow(I2);

提取出来的背景颜色

BG:

原图减去背景颜色:

这个时候我们可以发现图中只有米粒,没有其他干扰选项了

为了便于操作我们将该图转变为二进制图片

level=graythresh(I2);
bw2=im2bw(I2,level);
imshow(bw2);

这个时候,图像的矩阵只有0和1两种数值

如下图格式

0

0

0

1

1

1

0

1

0

0

0

1

0

0

1

1

而每个米粒是由多个像素连接在一起的,我们将多个像素连在一起的一个部分称为团,比如上图有两个团,只要将判别出来有几个团,即得米粒个数。

那我们如何判别出来有几个团?
在这采取标号法,再以上图为例,

0

0

0

2

1

1

0

2

0

0

0

2

0

0

2

2

遇见第一个团,将内部所有元素标为1,遇见第二个团将所有元素标为2.直到标到最后一个元素。

level=graythresh(I2);
bw2=im2bw(I2,level);
imshow(bw2);
[labeled,numObjects]=bwlabel(bw2,8);
max(max(labeled))

然后再找出该矩阵最大的数即米粒个数

最简单的代码【数字图像处理】计算rice.png中米粒个数相关推荐

  1. C语言实战题目:从键盘输入数字,计算其中正数的个数,并且计算所有正数的和

    C语言实战题目:从键盘输入数字,计算其中正数的个数,并且计算所有正数的和 (遇到负数跳出本次循环继续重新输入,如果遇到0,则结束输入,输出答案) [for循环结构+if选择控制结构] #include ...

  2. 【数字图像处理】求图像rice.png中米粒个数

    图像处理课程上老师布置的任务,要求求出图片rice.png中米粒的个数及其各米粒的大小. rice.png: 大体步骤是:首先进行边缘检测,然后进行填充.然后进行开运算,可以使一些轻微连着的米粒分开来 ...

  3. 简单python代码实现决策树计算信息增益_python手动计算信息增益

    python手动计算信息增益 2019年5月23日 17:49 by wst 算法实践 概念阐述 对于决策树, 以前看了很多遍, 但是总感觉摸不着它. 里面有个很重要的概念: 信息增益. 今天就来手动 ...

  4. 数字图像处理——大作业 基于车道信息的违法车辆车牌识别

    数字图像处理--大作业 基于车道信息的违法车辆车牌识别 一.车牌识别研究现状与分析 二.车牌识别算法原理 2.1 车牌定位 2.1.1 基于RGB阈值的车牌区域初定位 2.1.2 基于数学形态学的车牌 ...

  5. 基于skimage的数字图像处理(一)——基础

    数字图像处理 基础 前言 一.skimage是什么? 1.模块内容 2.安装skimage包 二.图片显示 三.图片的基本属性信息 四.图像通道 总结 前言 简单了解数字图像处理的基本概念.主要内容和 ...

  6. 数字图像处理资料集锦(Python、C++、Matlab)

    一.Numpy的基础 python中numpy与matlab的对应关系 二. 基于skimage数字图像处理 python数字图像处理(1):环境安装与配置 python数字图像处理(2):图像的读取 ...

  7. 数字图像处理与机器视觉_简单自动智能识别物体程序(机器视觉+数字图像处理)...

    非常好的识别物体的机器视觉程序.附有完整的说明文档和代码.代码由matlab写成,并附有测试图片.图片中含有各种物体,通过数字图像处理的知识,自动识别出图片中的各类物体. 文件:n459.com/f/ ...

  8. 图像找茬 matlab,数字图像处理、数学形态学、MATLAB GUI实现简单找茬软件

    0.简介 这个小作品是我的数字图像处理课程设计,应用基本的图像处理知识与MATLAB的基本脚本编程,实现一个简单的找茬软件.软件实现过程中使用到的找茬游戏图片来源有"梦幻找茬".& ...

  9. python 图像分析自然纹理方向与粗细代码_数字图像处理与Python实现笔记之基础知识...

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

最新文章

  1. VS2012设置断点的方法
  2. 老李分享:接口测试之jmeter
  3. easy ui dialog 关闭之后的怪异问题
  4. rand函数怎么避免重复_Excel常用的计算统计函数
  5. 关于区块链你了解多少,用思维导图带你快速了解区块链
  6. 思科模拟器中的交换机使用方法
  7. 无线网络连接不上请检查服务器,为什么无线网络连接不上?
  8. c语言程序设计基本模板,《C语言程序设计基础教程》试讲教案模板
  9. python股票量化分析
  10. mint-ui —— navbar的使用
  11. 软考是什么考试?软件水平考试介绍
  12. 【Python】 标准差计算(std)
  13. 也发个过VS3.0的MapHack
  14. SpringCloud知识概括
  15. RC延时电路简要分析
  16. 中国橱柜行业品牌营销策略与竞争态势研究报告2022版
  17. 网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
  18. linux网口初始化_Linux 初始化系统配置(CentOS 6)
  19. win10 汇编工具 em8086安装
  20. 北京科技大学通用学术英语作文Mooc 大一上(20级版)

热门文章

  1. LCR表和万用表有什么区别?
  2. spss modeler 许可证到期的解决办法
  3. Android上好看的倒数日APP,颜值超高的倒数日 App,让 Android 手机桌面好看 2 倍 - Hurry #Android...
  4. 转载:【刘铁猛】SQL速通-《教学大纲》
  5. 将Pic文件(jpg,bmp等)转换为Icon c#
  6. 建筑行业股权激励方案
  7. CodeForces - 437B The Child and Set 题解
  8. 计算机硬件故障分析和维护,计算机硬件故障分析与维护处理
  9. 工业大数据在铅粉机的应用(一)
  10. 专业外卖CPS返利系统-专业外卖CPS返利系统-外卖返利系统-美团饿了么返利系统