一、引言
????? 在數字圖像處理中,經常需要獲取感興趣區域的面積屬性,下面給出圖像處理的一般步驟。
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);
三、原始圖像

四、主要運行結果


??
???? 如果大家覺得本文對大家編程有所幫助,請關注、轉發、點贊和收藏!感謝大家支持!
?
?
?