IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 图像处理实例一:统计图片中的硬币个数 -> 正文阅读

[人工智能]图像处理实例一:统计图片中的硬币个数

Matlab函数imfill简介

函数功能: 该函数用于填充图像区域和“空洞”。
语法格式:
BW2 = imfill(BW)
这种格式将一张二值图像显示在屏幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。
[BW2,locations] = imfill(BW)
这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。
BW2 = imfill(BW,locations)
这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。
BW2 = imfill(BW,‘holes’)
填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。
I2 = imfill(I)
这种调用格式将填充灰度图像中所有的空洞区域。
BW2 = imfill(BW,locations,conn)
程序示例

close all; clear; clc;
BW4 = im2bw(imread('coins.png'));
BW5 = imfill(BW4,'holes');
subplot(121), imshow(BW4), title('源图像二值化')
subplot(122), imshow(BW5), title('填充后的图像')

腐蚀和膨胀

膨胀(dilate)
膨胀就是求局部最大值的操作。这样就会使图像中的高亮区域逐渐增长。
在这里插入图片描述在这里插入图片描述
腐蚀(erode)
腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。
就是把图像中的小的白色点腐蚀掉?

strel函数

主要用来构建形态学运算中的结构元素,使用的语法为strel(shape,parameters)。shape为形状参数,即设置什么样的结构元素;parameters为控制形状参数大小方向的参数。
strel函数是用来生成指定的结构元素,采用直接输入的方法,太过麻烦,采用strel()函数则能够快速地构建我们想要的的结构元素。

strel函数的用法如该链接所示
在这里插入图片描述

bwlabel函数

[L,num] = bwlabel(BW,n)这里num返回的就是BW中连通区域的个数。
通俗的说,这个函数的作用是用来找这个二值图像中的连通区域的,对于不同的符合条件的连通区域(4连通,8连通)分别用不同的标号加以区别,结果保存在L这个矩阵里,而num里保存的是输入图像中连通区域的总数。
举例说明:
BW =
1 1 1 0 0 0 0 0
1 1 1 0 1 1 0 0
1 1 1 0 1 1 0 0
1 1 1 0 0 0 1 0
1 1 1 0 0 0 1 0
1 1 1 0 0 0 1 0
1 1 1 0 0 1 1 0
1 1 1 0 0 0 0 0

按4连通计算,方形的区域,和翻转的L形区域,有用是对角连接,不属于连通,所以分开标记,连通区域个数为3,就是有3个不同的连接区域。
L = bwlabel(BW,4)
结果如下:
L =
1     1     1     0     0     0     0     0
1     1     1     0     2     2     0     0
1     1     1     0     2     2     0     0
1     1     1     0     0     0     3     0
1     1     1     0     0     0     3     0
1     1     1     0     0     0     3     0
1     1     1     0     0     3     3     0
1     1     1     0     0     0     0     0

而8连通标记,它们是连通的:
[L, num] = bwlabel(BW,8)
L =
1     1     1     0     0     0     0     0
1     1     1     0     2     2     0     0
1     1     1     0     2     2     0     0
1     1     1     0     0     0     2     0
1     1     1     0     0     0     2     0
1     1     1     0     0     0     2     0
1     1     1     0     0     2     2     0
1     1     1     0     0     0     0     0

这里
num =2

源代码及效果图

rgb = imread('E:\新建文件夹 (2)\1.jpg');
bw_image = rgb2gray(rgb);  %转换成灰度图
% imtool(bw_image)
bw_image1 = bw_image > 100; %让像素大于100的全部变成黑色
subplot(141);imshow(bw_image1);

%% 填充银币黑点
bw_image2 = imfill(bw_image1,'holes');
subplot(142);imshow(bw_image2);


%% 去除噪声
SE = strel('disk',5); %生成一个5*5的原型矩阵
bw_image3 = imerode(bw_image2,SE);  %用这个矩阵进行扫描,扫描到的遮盖的区域全部腐蚀,即变成黑色
subplot(143);imshow(bw_image3);

%% 数硬币
[L, num] = bwlabel(bw_image3);
disp(num);

在这里插入图片描述
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:25:17  更:2021-08-10 13:27:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:32:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码