主要内容

雪花的颗粒测量

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

读取图像

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

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

增强对比

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

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

确定增强图像中图像表面下的体积

粒度测量法类似于通过越来越大的筛网筛选石头,并在每次通过后收集剩余的东西。粒度测量法应用一系列不断增大的形态开口,并且在每个开口后计算图像像素值的总和。对于灰度图像,这个和对应于表面下的体积,其高度由像素强度值决定。在每个开口后,体积都会减小,因为越来越大的结构元素消除了更大的物体。

可选地,您可以绘制雪花图像的强度表面,以概念化表面体积。调整垂直纵横比,使整个表面可见。表面峰值对应原始二维图像中的明亮区域。

数字冲浪(clhei, EdgeColor=“没有”) colormap (“灰色”)标题(“雪花像素强度表面”) daspect([1 1 15]);

图中包含一个轴对象。标题为“雪花像素强度表面”的坐标轴对象包含一个类型为Surface的对象。

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

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

图中包含一个轴对象。标题为Sum of Pixel Values in Opened Image Versus Radius的axis对象包含一个line类型的对象。

分布导数估计

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

Intensity_volume_prime = diff(intensity_volume);图绘制(intensity_volume_prime,“m - *”网格)标题(雪花的粒度(大小分布)) ax = gca;斧子。XTick = [0 2 4 6 8 10 12 14 16 18 20 22];包含(“雪花半径(像素)”) ylabel (像素值和的导数(强度/像素)

图中包含一个轴对象。标题为“雪花粒度分布”的轴对象包含一个类型为line的对象。

强调雪花有一个特定的半径

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

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

另请参阅

|||