一、引言

      在数字图像处理中,经常需要获取感兴趣区域的面积属性,下面给出图像处理的一般步骤。

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);

三、原始图像

四、主要运行结果

  

     如果大家觉得本文对大家编程有所帮助,请关注、转发、点赞和收藏!感谢大家支持!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部