网站开发主要工作内容wordpress虎嗅网
一、regionprops函数及应用
regionprops 函数在 MATLAB 中是一个强大的工具,用于计算和分析二值图像(或更一般地说,标注矩阵)中连通区域的属性。当处理二值图像时,连通区域通常对应于图像中的前景对象,而背景则为另一个值(通常是0)。可以在matlab的命令窗口中输入help regionprops获得该函数的帮助信息。
其基本语法如下:
STATS = regionprops(L,properties) 测量标注矩阵 L中每一个标注区域的一系列属性。L 中不同的正整数元素对应不同的区域, 例如:L 中等于整数1的元素对应区域1;L 中等于整数2的元素对应区域2;以此类推。
当调用 regionprops 函数时,可以省略 properties 参量,在这种情况下,该函数将返回 "Area"、"Centroid" 和 "BoundingBox" 测量值。返回值STATS 是一个长度为 max(L(:))的结构数组,结构数组的相应域定义了每一个区域相应属性下的度量。 properties 可以是由逗号分割的字符串列表,包含字符串的单元数组,单个字符串 'all' 或者 'basic'。如果 properties 等于字符串 'all',则所有下述字串列表中的度量数据都将被计算,如果properties 没有指定或者等于 'basic',则属性 'Area'、'Centroid' 和'BoundingBox' 将被计算。
要计算二值图像中连通区域的面积和质心,你可以使用 regionprops 函数并指定 'Area'和'Centroid' 属性。以下是一个 MATLAB 范例,演示了如何计算二值图像中所有连通区域的面积和质心并显示:
二、程序代码
clear all;close all;clc;  
 %bw = imread('circles.png'); % 读入二值图像   
 bw = imread('text.png'); % 读入二值图像  
 % 使用 regionprops 计算面积和质心  
 stats = regionprops(bw, 'Area','Centroid');  
 % 显示所有连通区域的面积  
 disp('连通区域的面积:');  
 for k = 1:length(stats)  
     fprintf('区域 %d 的面积: %d\n', k, stats(k).Area);  
 end  
 % 如果你想以数组形式获取所有面积  
 allAreas = [stats.Area];  
 disp('所有连通区域的面积(数组形式):');  
 disp(allAreas);
 imshow(bw)
 centroids = cat(1,stats.Centroid);
 hold on
 plot(centroids(:,1),centroids(:,2),'b*'),title('质心');%绘制出各区域的质心
 hold off
三、部分运行结果


