||
上一篇介绍了采用聚类机器学习算法提取照片中相组成数据的例子,其核心作用是将照片像素连续分布灰度分为k个类别,然后统计各类别的像素数,获得相组成特征数据。除了该类别总的特征数据之外,连续灰度类别化后,区域特征数值,如某相(包括缺陷)区域大小及其分布,各区域空间分布等信息,对于材料建模来说,也是非常重要的数值特征数据。
采用聚类算法将连续灰度照片转化为k种灰度(相)的照片,该照片清晰地显示出各相的尺寸大小及空间分布情况,下面介绍该信息的数值数据的提取方法,依然以R语言为例,需要其他语言者,可让AI帮助实现。
1. 将感兴趣的区域(相)为白(灰度值为1),其他区域为黑(灰度值为0)
设该相的上下限灰度阈值分别为thd和thu(kmeans法获得),原照片灰度数据集为gr,2值化后黑白照片数据集为bw:
bw <- ifelse(gr > thd & gr <= thu, 1, 0)

2. 将各独立的白色区域进行编号,调用bwlabel()函数
lbl <- bwlabel(bw)
该命令会将bw数据矩阵中数值为1的连续区域依次进行连续编号:1,2,。。。,n,结果存于矩阵变量lbl中。
3. 对各白色区域进行特征数值计算
(1)关心相区域(缺陷或某相晶粒)个数,即lbl数据集中最大编号值:
n <- max(lbl)
(2)从1至n逐一计算各区域的像素点及其位置:
该操作就是一个简单的矩阵元素查找的数学运算,即查询矩阵中元素值为某值的所有元素,并记录其所在行列位置。R语言中为which函数。
设计算标号为1的区域,
i <- 1
yi <- as.matrix(which(lbl == i, arr.ind = TRUE))
计算结果如下
row | col | |
1 | 175 | 1 |
2 | 176 | 1 |
3 | 177 | 1 |
4 | 178 | 1 |
5 | 175 | 2 |
6 | 176 | 2 |
7 | 177 | 2 |
8 | 175 | 3 |
9 | 176 | 3 |
10 | 177 | 3 |
结果表明区域1中一共有10个像素点,row、col分别为各像素点纵向和横向位置。
(3)提取各区尺寸、空间位置等信息
根据原图的比例尺图,标定像素点的实际尺寸比例尺后,再由各区域的像素点数,可知其面积、特征尺寸(边长、直径),可统计粒径分布、空间分布等,如下图。


该例表明,一张照片可以简单地挖掘出大量的定量数值数据,可以,支撑数值建模,而不是停留在定性的描述层面。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2026-9-3 16:46
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社