文档

雪花的颗粒测量

这个例子展示了如何使用粒度测量法计算图像中雪花的大小分布。粒度测量法确定图像中物体的大小分布,而不需要首先明确地分割(检测)每个物体。

读取图像

阅读'snowflakes.png'图片,这是一张雪花的照片。

I = imread(“snowflakes.png”);imshow(我)

增强对比

你的第一步是最大化图像的对比度。可以使用adapthisteq函数,它执行限制对比的自适应直方图均衡。控件重新调整图像强度imadjust函数,使其填充数据类型的整个动态范围。

clhei = adapthisteq(I,“NumTiles”10 [10]);clhei = imadjust(clhei);imshow (claheI)

确定增强图像中的强度表面积分布

颗粒测量法估计雪花的强度比表面积分布作为大小的函数。颗粒测量学将图像对象比作石头,通过不断增大的屏幕筛选并收集每次通过后的剩余部分,可以确定其大小。对图像对象进行筛选的方法是,在每个开口后,用增加尺寸的结构元素打开图像,并计算剩余的强度表面积(图像中像素值的总和)。

选择一个计数器限制,使强度表面面积为零,因为你增加你的结构元素的大小。出于显示目的,请将表面积数组中的第一个条目保留为空。

Radius_range = 0:22;Intensity_area = 0 (size(radius_range));counter = radius_range remain = imopen(clhei, strel(“磁盘”计数器));Intensity_area (counter + 1) = sum(remain(:));结束图绘制(intensity_area,“m - *”网格)标题(“打开图像中像素值与半径的和”)包含(开口半径(像素)) ylabel (打开物体的像素值和(强度)

计算分布的一阶导数

两个连续开口之间强度表面积的显著下降表明图像包含与较小开口尺寸相当的物体。这相当于强度表面积阵列的一阶导数,其中包含了图像中雪花的大小分布。计算一阶导数diff函数。

Intensity_area_prime = diff(intensity_area);情节(intensity_area_prime“m - *”网格)标题(雪花的粒度(大小分布)) ax = gca;斧子。XTick = [0 2 4 6 8 10 12 14 16 18 20 22];包含(雪花半径(像素)) ylabel (“雪花中像素值的和作为半径的函数”

提取具有特定半径的雪花

注意图中出现的最小值和半径。极小值告诉你图像中的雪花有这些半径。最小值越负,在该半径上雪花的累积强度越高。例如,最负的最小值点出现在半径为5像素的标记处。您可以提取雪花具有5像素半径以下步骤。

open5 = imopen(clhei,strel(“磁盘”5));open6 = imopen(clhei,strel(“磁盘”6));Rad5 = imsubtract(open5,open6);imshow (rad5 [])

这个话题有用吗?