一、引言
在数字图像处理中,经常需要获取感兴趣区域的面积属性,下面给出图像处理的一般步骤。
1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示
二、程序代码
%面积计算
clear all; %清除所有变量
close all; %关闭所有图形窗口
clc; %清屏
I=imread('PIC240922.jpg');%读入图像
imshow(I);
Igray=rgb2gray(I);
figure,imhist(Igray);
BW=im2bw(Igray,graythresh(Igray));%使用最大类间方差法对图像进行二值化(注意:针对不同的灰度图像可能采用不同的二值化策略)
BW=~BW;
figure,imshow(BW);
[L, num] = bwlabel(BW);
% 计算每个连通区域的属性,这里只获取面积,默认区域间像素间的连通方式为8连通
stats = regionprops(L, 'Area');
%stats = regionprops(L, 'Area','Perimeter'); %获取每个连通区域的面积和周长
% 遍历并打印每个区域的面积
for k = 1:num
fprintf('Region %d has %d pixels.\n', k, stats(k).Area);
end
% 如果你只想获取最大面积的区域
[maxSize, idx] = max([stats.Area]);
fprintf('The largest region has %d pixels.\n', maxSize);
三、原始图像
四、主要运行结果
如果大家觉得本文对大家编程有所帮助,请关注、转发、点赞和收藏!感谢大家支持!