主要内容

雪花的粒度测定

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

读取图像

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

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

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

增强对比

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

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

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

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

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

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

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

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

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

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

图包含一个轴对象。标题为“打开图像的像素值与半径的总和”、“打开结构元素的半径(像素)”、“打开图像的像素值的总和(强度)”的轴对象包含一个类型为line的对象。

分布的估计导数

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

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

图包含一个轴对象。标题为雪花粒度(大小分布),xlabel雪花半径(像素),ylabel像素值总和的导数(强度/像素)的轴对象包含类型为line的对象。

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

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

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

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

另请参阅

|||