主要内容

正确的非均匀照明和分析前景对象

这个例子展示了如何提高图像预处理步骤之前的分析。在本例中,您的非均匀背景照明和图像转换成一个二进制图像使它容易识别前景对象(个人粒大米)。然后可以分析对象,如发现每粒米的区域,你可以计算图像中所有对象的统计数据。

预处理图像

读一个图像到工作区中。

我= imread (“rice.png”);imshow(我)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

背景照明亮度比底部中心的形象。预处理的图像背景照明更加统一。

作为第一步,删除所有的前台(米粒)使用形态。打开操作删除小不能完全包含结构化元素的对象。定义一个盘状结构元素的半径15,完全适合在一个米粒。

se = strel (“磁盘”15)
se = strel是一个圆盘形状的结构元素和属性:社区:[29 x29逻辑]维度:2

执行形态,使用imopen与结构元素。

背景= imopen(我,se);imshow(背景)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

减去背景近似图像,背景从原始图像,,并查看生成的图像。从原始图像减去背景图像调整后,产生的图像有一个统一的背景,但现在有点黑暗进行分析。

I2 = I -背景;imshow (I2)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

使用imadjust增加对比度的图像处理I2通过饱和1%的数据在低和高强度和拉伸强度值来填补uint8动态范围。

I3 = imadjust (I2);imshow (I3)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

注意前两个步骤可以被单个步骤使用imtophat首先计算出形态开放,然后减去它的原始图像。

I2 = imtophat(我strel(“磁盘”,15));

创建一个二进制版本的图像处理,这样你就可以使用工具箱函数进行分析。使用imbinarize函数将灰度图像转换成一个二进制图像。去除背景噪声的图像bwareaopen函数。

bw = imbinarize (I3);bw = bwareaopen (bw, 50);imshow (bw)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

识别图像中的对象

现在,您已经创建了一个二进制版本的原始图像可以执行的分析图像中的对象。

找到所有的连接组件(对象)的二进制图像。你的结果的准确性取决于物体的大小,连接参数(4 8或任意),以及是否接触的任何对象(在这种情况下,他们可以被贴上一个对象)。一些米粒的二进制图像bw是感人。

cc = bwconncomp (bw, 4)
cc =结构体字段:连通性:4图象尺寸(256 256):NumObjects: 95 PixelIdxList: {1} x95细胞
cc.NumObjects
ans = 95

查看标记的水稻粒50图像中。

粮食= false(大小(bw));谷物(cc.PixelIdxList {50}) = true;imshow(粮食)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

可视化图像中所有连接组件矩阵,然后通过创建一个标签显示它作为一个伪彩色索引图像。

使用labelmatrix创建一个标签的输出矩阵bwconncomp。请注意,labelmatrix存储标签矩阵所需的最小数值类对象的数量。

标签= labelmatrix (cc);谁标签
名字大小字节256 x256 65536 uint8类属性标记

使用label2rgb选择colormap、背景颜色和标签中的对象矩阵如何映射到colormap颜色。伪彩色图像的标签识别标签中的每个对象矩阵映射到一个不同的颜色在一个关联colormap矩阵。

RGB_label = label2rgb(标签,“春天”,“c”,“洗牌”);imshow (RGB_label)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

计算成立统计

计算图像中每个对象使用的面积regionprops。每一粒稻米是连接组件之一cc结构。

graindata = regionprops (cc、“基本”)
graindata =95×1结构体数组字段:区域质心BoundingBox

创建一个新向量grain_areas为每个谷物,面积测量。

grain_areas = [graindata.Area];

发现的面积50组件。

grain_areas (50)
ans = 194

找到并显示面积最小的谷物。

[min_area, idx] = min (grain_areas)
min_area = 61
idx = 16
粮食= false(大小(bw));谷物(cc.PixelIdxList {idx}) = true;imshow(粮食)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

使用柱状图命令来创建一个直方图的大米粮食领域。

直方图(grain_areas)标题(“水稻粮食面积直方图”)

图包含一个坐标轴对象。坐标轴对象与标题直方图的大米粮食区域包含一个直方图类型的对象。

另请参阅

|||||||||